Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #include <rpc.h>
      7 #include <rpcndr.h>
      8 
      9 #ifndef _OBJBASE_H_
     10 #define _OBJBASE_H_
     11 
     12 #include <pshpack8.h>
     13 
     14 #ifdef _OLE32_
     15 #define WINOLEAPI EXTERN_C HRESULT WINAPI
     16 #define WINOLEAPI_(type) EXTERN_C type WINAPI
     17 #else
     18 #define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
     19 #define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
     20 #endif
     21 
     22 #if defined(__cplusplus) && !defined(CINTERFACE)
     23 
     24 #ifndef __OBJC__
     25 #undef interface
     26 #define interface struct
     27 #endif
     28 
     29 #define __STRUCT__ struct
     30 #define STDMETHOD(method) virtual HRESULT WINAPI method
     31 #define STDMETHOD_(type,method) virtual type WINAPI method
     32 #define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method
     33 #define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method
     34 #define PURE = 0
     35 #define THIS_
     36 #define THIS void
     37 #define DECLARE_INTERFACE(iface) __STRUCT__ iface
     38 #define DECLARE_INTERFACE_(iface,baseiface) __STRUCT__ iface : public baseiface
     39 #define DECLARE_INTERFACE_IID_(iface,baseiface,iidiface) __STRUCT__ iface : public baseiface
     40 
     41 #if !defined(BEGIN_INTERFACE)
     42 #define BEGIN_INTERFACE
     43 #define END_INTERFACE
     44 #endif
     45 #else
     46 
     47 #ifndef __OBJC__
     48 #undef interface
     49 #define interface struct
     50 #endif
     51 
     52 #define STDMETHOD(method) HRESULT (WINAPI *method)
     53 #define STDMETHOD_(type,method) type (WINAPI *method)
     54 #define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method)
     55 #define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method)
     56 
     57 #if !defined(BEGIN_INTERFACE)
     58 #define BEGIN_INTERFACE
     59 #define END_INTERFACE
     60 #endif
     61 
     62 #define PURE
     63 #define THIS_ INTERFACE *This,
     64 #define THIS INTERFACE *This
     65 #ifdef CONST_VTABLE
     66 #undef CONST_VTBL
     67 #define CONST_VTBL const
     68 #define DECLARE_INTERFACE(iface) typedef struct iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl
     69 #else
     70 #undef CONST_VTBL
     71 #define CONST_VTBL
     72 #define DECLARE_INTERFACE(iface) typedef struct iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl
     73 #endif
     74 #define DECLARE_INTERFACE_(iface,baseiface) DECLARE_INTERFACE(iface)
     75 #define DECLARE_INTERFACE_IID_(iface,baseiface,iidiface) DECLARE_INTERFACE(iface)
     76 
     77 #endif
     78 
     79 #define IFACEMETHOD(method)         STDMETHOD(method)
     80 #define IFACEMETHOD_(type,method)   STDMETHOD_(type,method)
     81 #define IFACEMETHODV(method)        STDMETHODV(method)
     82 #define IFACEMETHODV_(type,method)  STDMETHODV_(type,method)
     83 
     84 #ifndef FARSTRUCT
     85 #define FARSTRUCT
     86 #endif
     87 
     88 #ifndef HUGEP
     89 #define HUGEP
     90 #endif
     91 
     92 #include <stdlib.h>
     93 
     94 #define LISet32(li,v) ((li).HighPart = ((LONG) (v)) < 0 ? -1 : 0,(li).LowPart = (v))
     95 #define ULISet32(li,v) ((li).HighPart = 0,(li).LowPart = (v))
     96 #define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
     97 
     98 #define CLSCTX_ALL (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER| CLSCTX_REMOTE_SERVER)
     99 #define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
    100 
    101 typedef enum tagREGCLS {
    102   REGCLS_SINGLEUSE = 0,REGCLS_MULTIPLEUSE = 1,REGCLS_MULTI_SEPARATE = 2,REGCLS_SUSPENDED = 4,REGCLS_SURROGATE = 8
    103 } REGCLS;
    104 
    105 #define MARSHALINTERFACE_MIN 500
    106 
    107 #define CWCSTORAGENAME 32
    108 
    109 #define STGM_DIRECT __MSABI_LONG(0x00000000)
    110 #define STGM_TRANSACTED __MSABI_LONG(0x00010000)
    111 #define STGM_SIMPLE __MSABI_LONG(0x08000000)
    112 
    113 #define STGM_READ __MSABI_LONG(0x00000000)
    114 #define STGM_WRITE __MSABI_LONG(0x00000001)
    115 #define STGM_READWRITE __MSABI_LONG(0x00000002)
    116 
    117 #define STGM_SHARE_DENY_NONE __MSABI_LONG(0x00000040)
    118 #define STGM_SHARE_DENY_READ __MSABI_LONG(0x00000030)
    119 #define STGM_SHARE_DENY_WRITE __MSABI_LONG(0x00000020)
    120 #define STGM_SHARE_EXCLUSIVE __MSABI_LONG(0x00000010)
    121 
    122 #define STGM_PRIORITY __MSABI_LONG(0x00040000)
    123 #define STGM_DELETEONRELEASE __MSABI_LONG(0x04000000)
    124 #define STGM_NOSCRATCH __MSABI_LONG(0x00100000)
    125 #define STGM_CREATE __MSABI_LONG(0x00001000)
    126 #define STGM_CONVERT __MSABI_LONG(0x00020000)
    127 #define STGM_FAILIFTHERE __MSABI_LONG(0x00000000)
    128 #define STGM_NOSNAPSHOT __MSABI_LONG(0x00200000)
    129 #define STGM_DIRECT_SWMR __MSABI_LONG(0x00400000)
    130 
    131 #define ASYNC_MODE_COMPATIBILITY __MSABI_LONG(0x00000001)
    132 #define ASYNC_MODE_DEFAULT __MSABI_LONG(0x00000000)
    133 
    134 #define STGTY_REPEAT __MSABI_LONG(0x00000100)
    135 #define STG_TOEND __MSABI_LONG(0xFFFFFFFF)
    136 
    137 #define STG_LAYOUT_SEQUENTIAL __MSABI_LONG(0x00000000)
    138 #define STG_LAYOUT_INTERLEAVED __MSABI_LONG(0x00000001)
    139 
    140 #define STGFMT_STORAGE 0
    141 #define STGFMT_NATIVE 1
    142 #define STGFMT_FILE 3
    143 #define STGFMT_ANY 4
    144 #define STGFMT_DOCFILE 5
    145 
    146 #define STGFMT_DOCUMENT 0
    147 
    148 #ifndef __IRpcStubBuffer_FWD_DEFINED__
    149 #define __IRpcStubBuffer_FWD_DEFINED__
    150 typedef struct IRpcStubBuffer IRpcStubBuffer;
    151 #endif
    152 #ifndef __IRpcChannelBuffer_FWD_DEFINED__
    153 #define __IRpcChannelBuffer_FWD_DEFINED__
    154 typedef struct IRpcChannelBuffer IRpcChannelBuffer;
    155 #endif
    156 
    157 #include <wtypes.h>
    158 #include <unknwn.h>
    159 #include <objidl.h>
    160 
    161 #include <guiddef.h>
    162 
    163 #ifndef INITGUID
    164 #include <cguid.h>
    165 #endif
    166 
    167 #if defined(__cplusplus) && !defined(CINTERFACE)
    168 
    169 extern "C++" {
    170     template<typename T> void **IID_PPV_ARGS_Helper(T **iface)    {
    171         static_cast<IUnknown*>(*iface);
    172         return reinterpret_cast<void**>(iface);
    173     }
    174 }
    175 
    176 #define IID_PPV_ARGS(iface) __uuidof(**(iface)), IID_PPV_ARGS_Helper(iface)
    177 
    178 #endif
    179 
    180 typedef enum tagCOINIT {
    181   COINIT_APARTMENTTHREADED = 0x2,COINIT_MULTITHREADED = 0x0,COINIT_DISABLE_OLE1DDE = 0x4,COINIT_SPEED_OVER_MEMORY = 0x8
    182 } COINIT;
    183 
    184 WINOLEAPI_(DWORD) CoBuildVersion(VOID);
    185 WINOLEAPI CoInitialize(LPVOID pvReserved);
    186 WINOLEAPI_(void) CoUninitialize(void);
    187 WINOLEAPI CoGetMalloc(DWORD dwMemContext,LPMALLOC *ppMalloc);
    188 WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
    189 WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
    190 WINOLEAPI CoRevokeMallocSpy(void);
    191 WINOLEAPI CoCreateStandardMalloc(DWORD memctx,IMalloc **ppMalloc);
    192 WINOLEAPI CoInitializeEx(LPVOID pvReserved,DWORD dwCoInit);
    193 WINOLEAPI CoGetCallerTID(LPDWORD lpdwTID);
    194 WINOLEAPI CoRegisterInitializeSpy(LPINITIALIZESPY pSpy,ULARGE_INTEGER *puliCookie);
    195 WINOLEAPI CoRevokeInitializeSpy(ULARGE_INTEGER uliCookie);
    196 WINOLEAPI CoGetContextToken(ULONG_PTR *pToken);
    197 
    198 typedef enum tagCOMSD {
    199   SD_LAUNCHPERMISSIONS = 0,SD_ACCESSPERMISSIONS = 1,SD_LAUNCHRESTRICTIONS = 2,SD_ACCESSRESTRICTIONS = 3
    200 } COMSD;
    201 
    202 WINOLEAPI CoGetSystemSecurityPermissions(COMSD comSDType,PSECURITY_DESCRIPTOR *ppSD);
    203 
    204 typedef struct tagSOleTlsDataPublic {
    205   void *pvReserved0[2];
    206   DWORD dwReserved0[3];
    207   void *pvReserved1[1];
    208   DWORD dwReserved1[3];
    209   void *pvReserved2[4];
    210   DWORD dwReserved2[1];
    211   void *pCurrentCtx;
    212 } SOleTlsDataPublic;
    213 
    214 WINOLEAPI CoGetObjectContext(REFIID riid,LPVOID *ppv);
    215 WINOLEAPI CoGetClassObject(REFCLSID rclsid,DWORD dwClsContext,LPVOID pvReserved,REFIID riid,LPVOID *ppv);
    216 WINOLEAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
    217 WINOLEAPI CoRevokeClassObject(DWORD dwRegister);
    218 WINOLEAPI CoResumeClassObjects(void);
    219 WINOLEAPI CoSuspendClassObjects(void);
    220 WINOLEAPI_(ULONG) CoAddRefServerProcess(void);
    221 WINOLEAPI_(ULONG) CoReleaseServerProcess(void);
    222 WINOLEAPI CoGetPSClsid(REFIID riid,CLSID *pClsid);
    223 WINOLEAPI CoRegisterPSClsid(REFIID riid,REFCLSID rclsid);
    224 WINOLEAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
    225 WINOLEAPI CoGetMarshalSizeMax(ULONG *pulSize,REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags);
    226 WINOLEAPI CoMarshalInterface(LPSTREAM pStm,REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags);
    227 WINOLEAPI CoUnmarshalInterface(LPSTREAM pStm,REFIID riid,LPVOID *ppv);
    228 WINOLEAPI CoMarshalHresult(LPSTREAM pstm,HRESULT hresult);
    229 WINOLEAPI CoUnmarshalHresult(LPSTREAM pstm,HRESULT *phresult);
    230 WINOLEAPI CoReleaseMarshalData(LPSTREAM pStm);
    231 WINOLEAPI CoDisconnectObject(LPUNKNOWN pUnk,DWORD dwReserved);
    232 WINOLEAPI CoLockObjectExternal(LPUNKNOWN pUnk,WINBOOL fLock,WINBOOL fLastUnlockReleases);
    233 WINOLEAPI CoGetStandardMarshal(REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags,LPMARSHAL *ppMarshal);
    234 WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN pUnkOuter,DWORD smexflags,LPUNKNOWN *ppUnkInner);
    235 
    236 typedef enum tagSTDMSHLFLAGS {
    237   SMEXF_SERVER = 0x01,SMEXF_HANDLER = 0x02
    238 } STDMSHLFLAGS;
    239 
    240 WINOLEAPI_(WINBOOL) CoIsHandlerConnected(LPUNKNOWN pUnk);
    241 WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID riid,LPUNKNOWN pUnk,LPSTREAM *ppStm);
    242 WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm,REFIID iid,LPVOID *ppv);
    243 WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter,LPUNKNOWN *ppunkMarshal);
    244 WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR lpszLibName,WINBOOL bAutoFree);
    245 WINOLEAPI_(void) CoFreeLibrary(HINSTANCE hInst);
    246 WINOLEAPI_(void) CoFreeAllLibraries(void);
    247 WINOLEAPI_(void) CoFreeUnusedLibraries(void);
    248 WINOLEAPI_(void) CoFreeUnusedLibrariesEx(DWORD dwUnloadDelay,DWORD dwReserved);
    249 WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc,LONG cAuthSvc,SOLE_AUTHENTICATION_SERVICE *asAuthSvc,void *pReserved1,DWORD dwAuthnLevel,DWORD dwImpLevel,void *pAuthList,DWORD dwCapabilities,void *pReserved3);
    250 WINOLEAPI CoGetCallContext(REFIID riid,void **ppInterface);
    251 WINOLEAPI CoQueryProxyBlanket(IUnknown *pProxy,DWORD *pwAuthnSvc,DWORD *pAuthzSvc,OLECHAR **pServerPrincName,DWORD *pAuthnLevel,DWORD *pImpLevel,RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,DWORD *pCapabilites);
    252 WINOLEAPI CoSetProxyBlanket(IUnknown *pProxy,DWORD dwAuthnSvc,DWORD dwAuthzSvc,OLECHAR *pServerPrincName,DWORD dwAuthnLevel,DWORD dwImpLevel,RPC_AUTH_IDENTITY_HANDLE pAuthInfo,DWORD dwCapabilities);
    253 WINOLEAPI CoCopyProxy(IUnknown *pProxy,IUnknown **ppCopy);
    254 WINOLEAPI CoQueryClientBlanket(DWORD *pAuthnSvc,DWORD *pAuthzSvc,OLECHAR **pServerPrincName,DWORD *pAuthnLevel,DWORD *pImpLevel,RPC_AUTHZ_HANDLE *pPrivs,DWORD *pCapabilities);
    255 WINOLEAPI CoImpersonateClient();
    256 WINOLEAPI CoRevertToSelf();
    257 WINOLEAPI CoQueryAuthenticationServices(DWORD *pcAuthSvc,SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
    258 WINOLEAPI CoSwitchCallContext(IUnknown *pNewObject,IUnknown **ppOldObject);
    259 
    260 #define COM_RIGHTS_EXECUTE 1
    261 #define COM_RIGHTS_EXECUTE_LOCAL 2
    262 #define COM_RIGHTS_EXECUTE_REMOTE 4
    263 #define COM_RIGHTS_ACTIVATE_LOCAL 8
    264 #define COM_RIGHTS_ACTIVATE_REMOTE 16
    265 
    266 WINOLEAPI CoCreateInstance(REFCLSID rclsid,LPUNKNOWN pUnkOuter,DWORD dwClsContext,REFIID riid,LPVOID *ppv);
    267 WINOLEAPI CoGetInstanceFromFile(COSERVERINFO *pServerInfo,CLSID *pClsid,IUnknown *punkOuter,DWORD dwClsCtx,DWORD grfMode,OLECHAR *pwszName,DWORD dwCount,MULTI_QI *pResults);
    268 WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO *pServerInfo,CLSID *pClsid,IUnknown *punkOuter,DWORD dwClsCtx,struct IStorage *pstg,DWORD dwCount,MULTI_QI *pResults);
    269 WINOLEAPI CoCreateInstanceEx(REFCLSID Clsid,IUnknown *punkOuter,DWORD dwClsCtx,COSERVERINFO *pServerInfo,DWORD dwCount,MULTI_QI *pResults);
    270 WINOLEAPI CoGetCancelObject(DWORD dwThreadId,REFIID iid,void **ppUnk);
    271 WINOLEAPI CoSetCancelObject(IUnknown *pUnk);
    272 WINOLEAPI CoCancelCall(DWORD dwThreadId,ULONG ulTimeout);
    273 WINOLEAPI CoTestCancel();
    274 WINOLEAPI CoEnableCallCancellation(LPVOID pReserved);
    275 WINOLEAPI CoDisableCallCancellation(LPVOID pReserved);
    276 WINOLEAPI CoAllowSetForegroundWindow(IUnknown *pUnk,LPVOID lpvReserved);
    277 WINOLEAPI DcomChannelSetHResult(LPVOID pvReserved,ULONG *pulReserved,HRESULT appsHR);
    278 WINOLEAPI StringFromCLSID(REFCLSID rclsid,LPOLESTR *lplpsz);
    279 WINOLEAPI CLSIDFromString(LPOLESTR lpsz,LPCLSID pclsid);
    280 WINOLEAPI StringFromIID(REFIID rclsid,LPOLESTR *lplpsz);
    281 WINOLEAPI IIDFromString(LPOLESTR lpsz,LPIID lpiid);
    282 WINOLEAPI_(WINBOOL) CoIsOle1Class(REFCLSID rclsid);
    283 WINOLEAPI ProgIDFromCLSID (REFCLSID clsid,LPOLESTR *lplpszProgID);
    284 WINOLEAPI CLSIDFromProgID (LPCOLESTR lpszProgID,LPCLSID lpclsid);
    285 WINOLEAPI CLSIDFromProgIDEx (LPCOLESTR lpszProgID,LPCLSID lpclsid);
    286 WINOLEAPI_(int) StringFromGUID2(REFGUID rguid,LPOLESTR lpsz,int cchMax);
    287 WINOLEAPI CoCreateGuid(GUID *pguid);
    288 WINOLEAPI_(WINBOOL) CoFileTimeToDosDateTime(FILETIME *lpFileTime,LPWORD lpDosDate,LPWORD lpDosTime);
    289 WINOLEAPI_(WINBOOL) CoDosDateTimeToFileTime(WORD nDosDate,WORD nDosTime,FILETIME *lpFileTime);
    290 WINOLEAPI CoFileTimeNow(FILETIME *lpFileTime);
    291 WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
    292 WINOLEAPI CoRegisterChannelHook(REFGUID ExtensionUuid,IChannelHook *pChannelHook);
    293 WINOLEAPI CoWaitForMultipleHandles (DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex);
    294 
    295 typedef enum tagCOWAIT_FLAGS {
    296   COWAIT_WAITALL = 1,COWAIT_ALERTABLE = 2,COWAIT_INPUTAVAILABLE = 4
    297 } COWAIT_FLAGS;
    298 
    299 WINOLEAPI CoInvalidateRemoteMachineBindings(LPOLESTR pszMachineName);
    300 WINOLEAPI CoGetTreatAsClass(REFCLSID clsidOld,LPCLSID pClsidNew);
    301 WINOLEAPI CoTreatAsClass(REFCLSID clsidOld,REFCLSID clsidNew);
    302 
    303 typedef HRESULT (WINAPI *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,LPVOID *);
    304 typedef HRESULT (WINAPI *LPFNCANUNLOADNOW)(void);
    305 
    306 STDAPI DllGetClassObject(REFCLSID rclsid,REFIID riid,LPVOID *ppv);
    307 STDAPI DllCanUnloadNow(void);
    308 WINOLEAPI_(LPVOID) CoTaskMemAlloc(SIZE_T cb);
    309 WINOLEAPI_(LPVOID) CoTaskMemRealloc(LPVOID pv,SIZE_T cb);
    310 WINOLEAPI_(void) CoTaskMemFree(LPVOID pv);
    311 WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER *ppDAHolder);
    312 WINOLEAPI CreateDataCache(LPUNKNOWN pUnkOuter,REFCLSID rclsid,REFIID iid,LPVOID *ppv);
    313 WINOLEAPI StgCreateDocfile(const OLECHAR *pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
    314 WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
    315 WINOLEAPI StgOpenStorage(const OLECHAR *pwcsName,IStorage *pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage **ppstgOpen);
    316 WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt,IStorage *pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage **ppstgOpen);
    317 WINOLEAPI StgIsStorageFile(const OLECHAR *pwcsName);
    318 WINOLEAPI StgIsStorageILockBytes(ILockBytes *plkbyt);
    319 WINOLEAPI StgSetTimes(OLECHAR const *lpszName,FILETIME const *pctime,FILETIME const *patime,FILETIME const *pmtime);
    320 WINOLEAPI StgOpenAsyncDocfileOnIFillLockBytes(IFillLockBytes *pflb,DWORD grfMode,DWORD asyncFlags,IStorage **ppstgOpen);
    321 WINOLEAPI StgGetIFillLockBytesOnILockBytes(ILockBytes *pilb,IFillLockBytes **ppflb);
    322 WINOLEAPI StgGetIFillLockBytesOnFile(OLECHAR const *pwcsName,IFillLockBytes **ppflb);
    323 WINOLEAPI StgOpenLayoutDocfile(OLECHAR const *pwcsDfName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
    324 
    325 #define STGOPTIONS_VERSION 2
    326 
    327 typedef struct tagSTGOPTIONS {
    328   USHORT usVersion;
    329   USHORT reserved;
    330   ULONG ulSectorSize;
    331   const WCHAR *pwcsTemplateFile;
    332 } STGOPTIONS;
    333 
    334 WINOLEAPI StgCreateStorageEx (const WCHAR *pwcsName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions,void *reserved,REFIID riid,void **ppObjectOpen);
    335 WINOLEAPI StgOpenStorageEx (const WCHAR *pwcsName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions,void *reserved,REFIID riid,void **ppObjectOpen);
    336 WINOLEAPI BindMoniker(LPMONIKER pmk,DWORD grfOpt,REFIID iidResult,LPVOID *ppvResult);
    337 WINOLEAPI CoInstall(IBindCtx *pbc,DWORD dwFlags,uCLSSPEC *pClassSpec,QUERYCONTEXT *pQuery,LPWSTR pszCodeBase);
    338 WINOLEAPI CoGetObject(LPCWSTR pszName,BIND_OPTS *pBindOptions,REFIID riid,void **ppv);
    339 WINOLEAPI MkParseDisplayName(LPBC pbc,LPCOLESTR szUserName,ULONG *pchEaten,LPMONIKER *ppmk);
    340 WINOLEAPI MonikerRelativePathTo(LPMONIKER pmkSrc,LPMONIKER pmkDest,LPMONIKER *ppmkRelPath,WINBOOL dwReserved);
    341 WINOLEAPI MonikerCommonPrefixWith(LPMONIKER pmkThis,LPMONIKER pmkOther,LPMONIKER *ppmkCommon);
    342 WINOLEAPI CreateBindCtx(DWORD reserved,LPBC *ppbc);
    343 WINOLEAPI CreateGenericComposite(LPMONIKER pmkFirst,LPMONIKER pmkRest,LPMONIKER *ppmkComposite);
    344 WINOLEAPI GetClassFile (LPCOLESTR szFilename,CLSID *pclsid);
    345 WINOLEAPI CreateClassMoniker(REFCLSID rclsid,LPMONIKER *ppmk);
    346 WINOLEAPI CreateFileMoniker(LPCOLESTR lpszPathName,LPMONIKER *ppmk);
    347 WINOLEAPI CreateItemMoniker(LPCOLESTR lpszDelim,LPCOLESTR lpszItem,LPMONIKER *ppmk);
    348 WINOLEAPI CreateAntiMoniker(LPMONIKER *ppmk);
    349 WINOLEAPI CreatePointerMoniker(LPUNKNOWN punk,LPMONIKER *ppmk);
    350 WINOLEAPI CreateObjrefMoniker(LPUNKNOWN punk,LPMONIKER *ppmk);
    351 WINOLEAPI GetRunningObjectTable(DWORD reserved,LPRUNNINGOBJECTTABLE *pprot);
    352 
    353 #include <urlmon.h>
    354 #include <propidl.h>
    355 
    356 WINOLEAPI CreateStdProgressIndicator(HWND hwndParent,LPCOLESTR pszTitle,IBindStatusCallback *pIbscCaller,IBindStatusCallback **ppIbsc);
    357 
    358 #if (_WIN32_WINNT >= 0x0600)
    359 WINOLEAPI CoDisconnectContext(DWORD dwTimeout);
    360 #endif /*(_WIN32_WINNT >= 0x0600)*/
    361 #if (_WIN32_WINNT >= 0x0601)
    362 
    363 WINOLEAPI CoGetApartmentType(
    364   APTTYPE *pAptType,
    365   APTTYPEQUALIFIER *pAptQualifier
    366 );
    367 
    368 #endif /*(_WIN32_WINNT >= 0x0601)*/
    369 
    370 #ifndef RC_INVOKED
    371 #include <poppack.h>
    372 #endif
    373 #endif
    374