vbAccelerator - Contents of code file: IVBExtractImageLib.odl

    helpstring("VB IExtractImage Interface"),

library IVBExtractImage

   typedef enum {
          STRRET_WSTR = 0,
          STRRET_OFFSET = 1,
          STRRET_CSTR = 2

   typedef enum {
          SHCONTF_FOLDERS = 32,
          SHCONTF_NONFOLDERS = 64,

   typedef enum {
          SHGDN_NORMAL = 0,
          SHGDN_INFOLDER = 1,
          SHGDN_FORADDRESSBAR = 16384,
          SHGDN_FORPARSING = 32768
   } ESHGDN;

   typedef enum {
          SFGAO_CANCOPY = 1,
          SFGAO_CANMOVE = 2,
          SFGAO_CANLINK = 4,
          SFGAO_CANRENAME = 16,
          SFGAO_CANDELETE = 32,
          SFGAO_HASPROPSHEET = 64,
          SFGAO_DROPTARGET = 256,
          SFGAO_LINK = 65536,
          SFGAO_SHARE = 131072,
          SFGAO_READONLY = 262144,
          SFGAO_GHOSTED = 524288,
          SFGAO_DISPLAYATTRMASK = 983040,
          SFGAO_FILESYSANCESTOR = 268435456,
          SFGAO_FOLDER = 536870912,
          SFGAO_FILESYSTEM = 1073741824,
          SFGAO_HASSUBFOLDER = -2147483648,
          SFGAO_CONTENTSMASK = -2147483648,
          SFGAO_VALIDATE = 16777216,
          SFGAO_REMOVABLE = 33554432,
          SFGAO_COMPRESSED = 67108864
   } ESFGAO;

   typedef enum {
      IEIFLAG_ASYNC       = 0x0001,      // ask the extractor if it supports
       ASYNC extract (free threaded)
      IEIFLAG_CACHE       = 0x0002,      // returned from the extractor if it
       does NOT cache the thumbnail
      IEIFLAG_ASPECT      = 0x0004,      // passed to the extractor to beg it
       to render to the aspect ratio of the supplied rect
      IEIFLAG_OFFLINE     = 0x0008,      // if the extractor shouldn't hit the
       net to get any content neede for the rendering
      IEIFLAG_GLEAM       = 0x0010,     // does the image have a gleam ? this
       will be returned if it does
      IEIFLAG_SCREEN      = 0x0020,      // render as if for the screen  (this
       is exlusive with IEIFLAG_ASPECT )
      IEIFLAG_ORIGSIZE    = 0x0040,      // render to the approx size passed,
       but crop if neccessary
      IEIFLAG_NOSTAMP     = 0x0080,      // returned from the extractor if it
       does NOT want an icon stamp on the thumbnail
      IEIFLAG_NOBORDER    = 0x0100,      // returned from the extractor if it
       does NOT want an a border around the thumbnail
      IEIFLAG_QUALITY     = 0x0200      // passed to the Extract method to
       indicate that a slower, higher quality image is desired, re-compute the

       typedef struct tagUUID {        
             long Data1;
      short Data2;
      short Data3;
      unsigned char Data4[8];
   } UUID;

   typedef struct tagSTRRET {        
      ESTRRET uType;        
      unsigned char cStr[260];
   } STRRET;

   typedef struct tagSIZE {
      long cx;
      long cy;
   } SIZE;

        helpstring("Visual Basic version of IMalloc interface")
   interface IVBMalloc : IUnknown {
          long _stdcall Alloc([in] long cb);

          long _stdcall Realloc(
                    [in] long __MIDL_0000, 
                    [in] long cb);

      void _stdcall Free([in] long pv);

          long _stdcall GetSize([in] long pv);

          long _stdcall DidAlloc([in] long pv);

          void _stdcall HeapMinimize();

        helpstring("Visual Basic version of IEnumIDList interface")
   interface IVBEnumIDList : IUnknown {
          long _stdcall Next(
                    [in] long celt, 
                    [out] long* rgelt, 
                    [out] long* pceltFetched);

          HRESULT _stdcall Skip(
          [in] long celt);

          HRESULT _stdcall Reset();
      HRESULT _stdcall Clone(
          [out] IVBEnumIDList** ppenum);

        helpstring("Visual Basic version of IShellFolder interface")
   interface IVBShellFolder : IUnknown {
          HRESULT _stdcall ParseDisplayName(
                    [in] long hwndOwner, 
                    [in] long pbcReserved, 
                    [in] LPWSTR lpszDisplayName, 
                    [out] long* pchEaten, 
                    [out] long* ppidl, 
                    [in, out] long* pdwAttributes);

      HRESULT _stdcall EnumObjects(
                    [in] long hwndOwner, 
                    [in] ESHCONTF grfFlags, 
                    [out] IVBEnumIDList** ppenumIDList);

          HRESULT _stdcall BindToObject(
                    [in] long pidl, 
                    [in] long pbcReserved, 
                    [in] UUID* riid, 
                    [out] void* ppvOut);

          HRESULT _stdcall BindToStorage(
                    [in] long pidl, 
                    [in] long pbcReserved, 
                    [in] UUID* riid, 
                    [out] void* ppvObj);

      HRESULT _stdcall CompareIDs(
                    [in] void* lParam, 
                    [in] long pidl1, 
                    [in] long pidl2);

      HRESULT _stdcall CreateViewObject(
                    [in] long hwndOwner, 
                    [in] UUID* riid, 
                    [out] void* ppvOut);

      HRESULT _stdcall GetAttributesOf(
                    [in] int cidl, 
                    [in] long* apidl, 
                    [in, out] ESFGAO* rgfInOut);

      HRESULT _stdcall GetUIObjectOf(
                    [in] long hwndOwner, 
                    [in] int cidl, 
                    [in] long* apidl, 
                    [in] UUID* riid, 
                    [in, out] int* prgfInOut, 
                    [out] void* ppvOut);

      HRESULT _stdcall GetDisplayNameOf(
                    [in] long pidl, 
                    [in] ESHGDN uFlags, 
                    [out] STRRET* lpName);

      HRESULT _stdcall SetNameOf(
                    [in] long hwndOwner, 
                    [in] long pidl, 
                    [in] LPWSTR lpszName, 
                    [in] ESHCONTF uFlags, 
                    [out] long* ppidlOut);

          helpstring("Visual Basic version of IExtractImage interface")
   interface IExtractImage : IUnknown
          HRESULT GetLocation(
              [out] LPWSTR pszPathBuffer,
                        [in] long cch,
                        [in, out] long *pdwPriority,
                        [in] SIZE * prgSize,
                        [in] long dwRecClrDepth,
                        [in] EIEIFLAG *pdwFlags);

         HRESULT Extract([out] long *phBmpThumbnail);

      helpstring("Object Base Function Entries and Constants")
   module VBObjBase {

   [entry("IIDFromString"), helpstring("Converts a string in the IID format
    generated by the StringFromIID function into an IID")]
   long IIDFromString(
                [in] LPWSTR lpsz, 
                [out] UUID *lpiid);