Synchronize with trunk revision 59781.
[reactos.git] / include / psdk / objbase.h
index e9295de..1db973d 100644 (file)
@@ -322,37 +322,108 @@ typedef enum tagCOINIT
     COINIT_SPEED_OVER_MEMORY  = 0x8  /* Trade memory for speed */
 } COINIT;
 
-HRESULT WINAPI CoInitialize(LPVOID lpReserved);
-HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);
+_Check_return_ HRESULT WINAPI CoInitialize(_In_opt_ LPVOID lpReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoInitializeEx(
+  _In_opt_ LPVOID lpReserved,
+  _In_ DWORD dwCoInit);
+
 void WINAPI CoUninitialize(void);
 DWORD WINAPI CoGetCurrentProcess(void);
 
-HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
+HINSTANCE WINAPI CoLoadLibrary(_In_ LPOLESTR lpszLibName, _In_ BOOL bAutoFree);
 void WINAPI CoFreeAllLibraries(void);
-void WINAPI CoFreeLibrary(HINSTANCE hLibrary);
+void WINAPI CoFreeLibrary(_In_ HINSTANCE hLibrary);
 void WINAPI CoFreeUnusedLibraries(void);
-void WINAPI CoFreeUnusedLibrariesEx(DWORD dwUnloadDelay, DWORD dwReserved);
 
-HRESULT WINAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
-HRESULT WINAPI CoCreateInstanceEx(REFCLSID      rclsid,
-                                 LPUNKNOWN     pUnkOuter,
-                                 DWORD         dwClsContext,
-                                 COSERVERINFO* pServerInfo,
-                                 ULONG         cmq,
-                                 MULTI_QI*     pResults);
+void
+WINAPI
+CoFreeUnusedLibrariesEx(
+  _In_ DWORD dwUnloadDelay,
+  _In_ DWORD dwReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateInstance(
+  _In_ REFCLSID rclsid,
+  _In_opt_ LPUNKNOWN pUnkOuter,
+  _In_ DWORD dwClsContext,
+  _In_ REFIID iid,
+  _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateInstanceEx(
+  _In_ REFCLSID rclsid,
+  _In_opt_ LPUNKNOWN pUnkOuter,
+  _In_ DWORD dwClsContext,
+  _In_opt_ COSERVERINFO *pServerInfo,
+  _In_ ULONG cmq,
+  _Inout_updates_(cmq) MULTI_QI *pResults);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetInstanceFromFile(
+  _In_opt_ COSERVERINFO *pServerInfo,
+  _In_opt_ CLSID *pClsid,
+  _In_opt_ IUnknown *punkOuter,
+  _In_ DWORD dwClsCtx,
+  _In_ DWORD grfMode,
+  _In_ _Null_terminated_ OLECHAR *pwszName,
+  _In_ DWORD dwCount,
+  _Inout_updates_(dwCount) MULTI_QI *pResults);
 
-HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR* pwszName, DWORD dwCount, MULTI_QI* pResults);
-HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults);
+_Check_return_
+HRESULT
+WINAPI
+CoGetInstanceFromIStorage(
+  _In_opt_ COSERVERINFO *pServerInfo,
+  _In_opt_ CLSID *pClsid,
+  _In_opt_ IUnknown *punkOuter,
+  _In_ DWORD dwClsCtx,
+  _In_ IStorage *pstg,
+  _In_ DWORD dwCount,
+  _Inout_updates_(dwCount) MULTI_QI *pResults);
 
-HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC* lpMalloc);
-LPVOID WINAPI CoTaskMemAlloc(ULONG size) __WINE_ALLOC_SIZE(1);
-void WINAPI CoTaskMemFree(LPVOID ptr);
-LPVOID WINAPI CoTaskMemRealloc(LPVOID ptr, ULONG size);
+_Check_return_
+HRESULT
+WINAPI
+CoGetMalloc(
+  _In_ DWORD dwMemContext,
+  _Outptr_ LPMALLOC *lpMalloc);
 
-HRESULT WINAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
+_Ret_opt_
+_Post_writable_byte_size_(size)
+__drv_allocatesMem(Mem)
+_Check_return_
+LPVOID
+WINAPI
+CoTaskMemAlloc(_In_ ULONG size) __WINE_ALLOC_SIZE(1);
+
+void
+WINAPI
+CoTaskMemFree(
+  _In_opt_ __drv_freesMem(Mem) _Post_invalid_ LPVOID ptr);
+
+_Ret_opt_
+_Post_writable_byte_size_(size)
+_When_(size > 0, __drv_allocatesMem(Mem) _Check_return_)
+LPVOID
+WINAPI
+CoTaskMemRealloc(
+  _In_opt_ __drv_freesMem(Mem) _Post_invalid_ LPVOID ptr,
+  _In_ ULONG size);
+
+HRESULT WINAPI CoRegisterMallocSpy(_In_ LPMALLOCSPY pMallocSpy);
 HRESULT WINAPI CoRevokeMallocSpy(void);
 
-HRESULT WINAPI CoGetContextToken( ULONG_PTR *token );
+_Check_return_ HRESULT WINAPI CoGetContextToken(_Out_ ULONG_PTR *token);
 
 /* class registration flags; passed to CoRegisterClassObject */
 typedef enum tagREGCLS
@@ -364,60 +435,286 @@ typedef enum tagREGCLS
     REGCLS_SURROGATE = 8
 } REGCLS;
 
-HRESULT WINAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv);
-HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
-HRESULT WINAPI CoRevokeClassObject(DWORD dwRegister);
-HRESULT WINAPI CoGetPSClsid(REFIID riid,CLSID *pclsid);
-HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
-HRESULT WINAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
-HRESULT WINAPI CoSuspendClassObjects(void);
-HRESULT WINAPI CoResumeClassObjects(void);
+_Check_return_
+HRESULT
+WINAPI
+CoGetClassObject(
+  _In_ REFCLSID rclsid,
+  _In_ DWORD dwClsContext,
+  _In_opt_ COSERVERINFO *pServerInfo,
+  _In_ REFIID iid,
+  _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterClassObject(
+  _In_ REFCLSID rclsid,
+  _In_ LPUNKNOWN pUnk,
+  _In_ DWORD dwClsContext,
+  _In_ DWORD flags,
+  _Out_ LPDWORD lpdwRegister);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRevokeClassObject(
+  _In_ DWORD dwRegister);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetPSClsid(
+  _In_ REFIID riid,
+  _Out_ CLSID *pclsid);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterPSClsid(
+  _In_ REFIID riid,
+  _In_ REFCLSID rclsid);
+
+_Check_return_ HRESULT WINAPI CoRegisterSurrogate(_In_ LPSURROGATE pSurrogate);
+_Check_return_ HRESULT WINAPI CoSuspendClassObjects(void);
+_Check_return_ HRESULT WINAPI CoResumeClassObjects(void);
 ULONG WINAPI CoAddRefServerProcess(void);
 ULONG WINAPI CoReleaseServerProcess(void);
 
 /* marshalling */
-HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal);
-HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid, LPVOID* ppv);
-HRESULT WINAPI CoGetMarshalSizeMax(ULONG* pulSize, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
-HRESULT WINAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL* ppMarshal);
-HRESULT WINAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
-HRESULT WINAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
-HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk, LPSTREAM* ppStm);
-HRESULT WINAPI CoReleaseMarshalData(LPSTREAM pStm);
-HRESULT WINAPI CoDisconnectObject(LPUNKNOWN lpUnk, DWORD reserved);
-HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult);
-HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv);
-HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
-BOOL WINAPI CoIsHandlerConnected(LPUNKNOWN pUnk);
+
+_Check_return_
+HRESULT
+WINAPI
+CoCreateFreeThreadedMarshaler(
+  _In_opt_ LPUNKNOWN punkOuter,
+  _Outptr_ LPUNKNOWN *ppunkMarshal);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetInterfaceAndReleaseStream(
+  _In_ LPSTREAM pStm,
+  _In_ REFIID iid,
+  _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetMarshalSizeMax(
+  _Out_ ULONG *pulSize,
+  _In_ REFIID riid,
+  _In_ LPUNKNOWN pUnk,
+  _In_ DWORD dwDestContext,
+  _In_opt_ LPVOID pvDestContext,
+  _In_ DWORD mshlflags);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetStandardMarshal(
+  _In_ REFIID riid,
+  _In_ LPUNKNOWN pUnk,
+  _In_ DWORD dwDestContext,
+  _In_opt_ LPVOID pvDestContext,
+  _In_ DWORD mshlflags,
+  _Outptr_ LPMARSHAL *ppMarshal);
+
+HRESULT WINAPI CoMarshalHresult(_In_ LPSTREAM pstm, _In_ HRESULT hresult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoMarshalInterface(
+  _In_ LPSTREAM pStm,
+  _In_ REFIID riid,
+  _In_ LPUNKNOWN pUnk,
+  _In_ DWORD dwDestContext,
+  _In_opt_ LPVOID pvDestContext,
+  _In_ DWORD mshlflags);
+
+_Check_return_
+HRESULT
+WINAPI
+CoMarshalInterThreadInterfaceInStream(
+  _In_ REFIID riid,
+  _In_ LPUNKNOWN pUnk,
+  _Outptr_ LPSTREAM *ppStm);
+
+_Check_return_ HRESULT WINAPI CoReleaseMarshalData(_In_ LPSTREAM pStm);
+
+_Check_return_
+HRESULT
+WINAPI
+CoDisconnectObject(
+  _In_ LPUNKNOWN lpUnk,
+  _In_ DWORD reserved);
+
+HRESULT WINAPI CoUnmarshalHresult(_In_ LPSTREAM pstm, _Out_ HRESULT *phresult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoUnmarshalInterface(
+  _In_ LPSTREAM pStm,
+  _In_ REFIID riid,
+  _Outptr_ LPVOID *ppv);
+
+_Check_return_
+HRESULT
+WINAPI
+CoLockObjectExternal(
+  _In_ LPUNKNOWN pUnk,
+  _In_ BOOL fLock,
+  _In_ BOOL fLastUnlockReleases);
+
+BOOL WINAPI CoIsHandlerConnected(_In_ LPUNKNOWN pUnk);
 
 /* security */
-HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE* asAuthSvc, void* pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void* pReserved2, DWORD dwCapabilities, void* pReserved3);
-HRESULT WINAPI CoGetCallContext(REFIID riid, void** ppInterface);
-HRESULT WINAPI CoSwitchCallContext(IUnknown *pContext, IUnknown **ppOldContext);
-HRESULT WINAPI CoQueryAuthenticationServices(DWORD* pcAuthSvc, SOLE_AUTHENTICATION_SERVICE** asAuthSvc);
 
-HRESULT WINAPI CoQueryProxyBlanket(IUnknown* pProxy, DWORD* pwAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTH_IDENTITY_HANDLE* pAuthInfo, DWORD* pCapabilities);
-HRESULT WINAPI CoSetProxyBlanket(IUnknown* pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities);
-HRESULT WINAPI CoCopyProxy(IUnknown* pProxy, IUnknown** ppCopy);
+_Check_return_
+HRESULT
+WINAPI
+CoInitializeSecurity(
+  _In_opt_ PSECURITY_DESCRIPTOR pSecDesc,
+  _In_ LONG cAuthSvc,
+  _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
+  _In_opt_ void *pReserved1,
+  _In_ DWORD dwAuthnLevel,
+  _In_ DWORD dwImpLevel,
+  _In_opt_ void *pReserved2,
+  _In_ DWORD dwCapabilities,
+  _In_opt_ void *pReserved3);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetCallContext(
+  _In_ REFIID riid,
+  _Outptr_ void **ppInterface);
+
+_Check_return_
+HRESULT
+WINAPI
+CoSwitchCallContext(
+  _In_opt_ IUnknown *pContext,
+  _Outptr_ IUnknown **ppOldContext);
 
-HRESULT WINAPI CoImpersonateClient(void);
-HRESULT WINAPI CoQueryClientBlanket(DWORD* pAuthnSvc, DWORD* pAuthzSvc, OLECHAR** pServerPrincName, DWORD* pAuthnLevel, DWORD* pImpLevel, RPC_AUTHZ_HANDLE* pPrivs, DWORD* pCapabilities);
-HRESULT WINAPI CoRevertToSelf(void);
+_Check_return_
+HRESULT
+WINAPI
+CoQueryAuthenticationServices(
+  _Out_ DWORD *pcAuthSvc,
+  _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
+
+_Check_return_
+HRESULT
+WINAPI
+CoQueryProxyBlanket(
+  _In_ IUnknown *pProxy,
+  _Out_opt_ DWORD *pwAuthnSvc,
+  _Out_opt_ DWORD *pAuthzSvc,
+  _Outptr_opt_ OLECHAR **pServerPrincName,
+  _Out_opt_ DWORD *pAuthnLevel,
+  _Out_opt_ DWORD *pImpLevel,
+  _Out_opt_ RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
+  _Out_opt_ DWORD *pCapabilities);
+
+_Check_return_
+HRESULT
+WINAPI
+CoSetProxyBlanket(
+  _In_ IUnknown *pProxy,
+  _In_ DWORD dwAuthnSvc,
+  _In_ DWORD dwAuthzSvc,
+  _In_opt_ OLECHAR *pServerPrincName,
+  _In_ DWORD dwAuthnLevel,
+  _In_ DWORD dwImpLevel,
+  _In_opt_ RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
+  _In_ DWORD dwCapabilities);
+
+_Check_return_
+HRESULT
+WINAPI CoCopyProxy(
+  _In_ IUnknown *pProxy,
+  _Outptr_ IUnknown **ppCopy);
+
+_Check_return_ HRESULT WINAPI CoImpersonateClient(void);
+
+_Check_return_
+HRESULT
+WINAPI
+CoQueryClientBlanket(
+  _Out_opt_ DWORD *pAuthnSvc,
+  _Out_opt_ DWORD *pAuthzSvc,
+  _Outptr_opt_ OLECHAR **pServerPrincName,
+  _Out_opt_ DWORD *pAuthnLevel,
+  _Out_opt_ DWORD *pImpLevel,
+  _Outptr_opt_ RPC_AUTHZ_HANDLE *pPrivs,
+  _Inout_opt_ DWORD *pCapabilities);
+
+_Check_return_ HRESULT WINAPI CoRevertToSelf(void);
 
 /* misc */
-HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
-HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
-HRESULT WINAPI CoAllowSetForegroundWindow(IUnknown *pUnk, LPVOID lpvReserved);
-HRESULT WINAPI CoGetObjectContext(REFIID riid, LPVOID *ppv);
 
-HRESULT WINAPI CoCreateGuid(GUID* pguid);
-BOOL WINAPI CoIsOle1Class(REFCLSID rclsid);
+_Check_return_
+HRESULT
+WINAPI
+CoGetTreatAsClass(
+  _In_ REFCLSID clsidOld,
+  _Out_ LPCLSID pClsidNew);
+
+_Check_return_
+HRESULT
+WINAPI
+CoTreatAsClass(
+  _In_ REFCLSID clsidOld,
+  _In_ REFCLSID clsidNew);
+
+HRESULT
+WINAPI
+CoAllowSetForegroundWindow(
+  _In_ IUnknown *pUnk,
+  _In_opt_ LPVOID lpvReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetObjectContext(
+  _In_ REFIID riid,
+  _Outptr_ LPVOID *ppv);
 
-BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFileTime);
-BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime);
-HRESULT WINAPI CoFileTimeNow(FILETIME* lpFileTime);
-HRESULT WINAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
-HRESULT WINAPI CoRegisterChannelHook(REFGUID ExtensionGuid, IChannelHook *pChannelHook);
+_Check_return_ HRESULT WINAPI CoCreateGuid(_Out_ GUID *pguid);
+BOOL WINAPI CoIsOle1Class(_In_ REFCLSID rclsid);
+
+BOOL
+WINAPI
+CoDosDateTimeToFileTime(
+  _In_ WORD nDosDate,
+  _In_ WORD nDosTime,
+  _Out_ FILETIME *lpFileTime);
+
+BOOL
+WINAPI
+CoFileTimeToDosDateTime(
+  _In_ FILETIME *lpFileTime,
+  _Out_ WORD *lpDosDate,
+  _Out_ WORD *lpDosTime);
+
+HRESULT WINAPI CoFileTimeNow(_Out_ FILETIME *lpFileTime);
+
+_Check_return_
+HRESULT
+WINAPI
+CoRegisterMessageFilter(
+  _In_opt_ LPMESSAGEFILTER lpMessageFilter,
+  _Outptr_opt_result_maybenull_ LPMESSAGEFILTER *lplpMessageFilter);
+
+HRESULT
+WINAPI
+CoRegisterChannelHook(
+  _In_ REFGUID ExtensionGuid,
+  _In_ IChannelHook *pChannelHook);
 
 typedef enum tagCOWAIT_FLAGS
 {
@@ -425,22 +722,68 @@ typedef enum tagCOWAIT_FLAGS
     COWAIT_ALERTABLE = 0x00000002
 } COWAIT_FLAGS;
 
-HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex);
+_Check_return_
+HRESULT
+WINAPI
+CoWaitForMultipleHandles(
+  _In_ DWORD dwFlags,
+  _In_ DWORD dwTimeout,
+  _In_ ULONG cHandles,
+  _In_reads_(cHandles) LPHANDLE pHandles,
+  _Out_ LPDWORD lpdwindex);
 
 /*****************************************************************************
  *     GUID API
  */
-HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR*);
-HRESULT WINAPI CLSIDFromString(LPCOLESTR, LPCLSID);
-HRESULT WINAPI CLSIDFromProgID(LPCOLESTR progid, LPCLSID riid);
-HRESULT WINAPI ProgIDFromCLSID(REFCLSID clsid, LPOLESTR *lplpszProgID);
 
-INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax);
+_Check_return_
+HRESULT
+WINAPI
+StringFromCLSID(
+  _In_ REFCLSID id,
+  _Outptr_ LPOLESTR*);
+
+_Check_return_
+HRESULT
+WINAPI
+CLSIDFromString(
+  _In_ LPCOLESTR,
+  _Out_ LPCLSID);
+
+_Check_return_
+HRESULT
+WINAPI
+CLSIDFromProgID(
+  _In_ LPCOLESTR progid,
+  _Out_ LPCLSID riid);
+
+_Check_return_
+HRESULT
+WINAPI
+ProgIDFromCLSID(
+  _In_ REFCLSID clsid,
+  _Outptr_ LPOLESTR *lplpszProgID);
+
+_Check_return_
+INT
+WINAPI
+StringFromGUID2(
+  _In_ REFGUID id,
+  _Out_writes_to_(cmax, return) LPOLESTR str,
+  _In_ INT cmax);
 
 /*****************************************************************************
  *     COM Server dll - exports
  */
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN;
+
+_Check_return_
+HRESULT
+WINAPI
+DllGetClassObject(
+  _In_ REFCLSID rclsid,
+  _In_ REFIID riid,
+  _Outptr_ LPVOID *ppv) DECLSPEC_HIDDEN;
+
 HRESULT WINAPI DllCanUnloadNow(void) DECLSPEC_HIDDEN;
 
 /* shouldn't be here, but is nice for type checking */
@@ -453,27 +796,134 @@ HRESULT WINAPI DllUnregisterServer(void) DECLSPEC_HIDDEN;
 /*****************************************************************************
  *     Data Object
  */
-HRESULT WINAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER* ppDAHolder);
-HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID iid, LPVOID* ppv);
+
+HRESULT
+WINAPI
+CreateDataAdviseHolder(
+  _Outptr_ LPDATAADVISEHOLDER *ppDAHolder);
+
+HRESULT
+WINAPI
+CreateDataCache(
+  _In_opt_ LPUNKNOWN pUnkOuter,
+  _In_ REFCLSID rclsid,
+  _In_ REFIID iid,
+  _Out_ LPVOID *ppv);
 
 /*****************************************************************************
  *     Moniker API
  */
-HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult);
-HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
-HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
-HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
-HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk);
-HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
-HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
-HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR  lpszItem, LPMONIKER* ppmk);
-HRESULT WINAPI CreateObjrefMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
-HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
-HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid);
-HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
-HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, ULONG * pchEaten, LPMONIKER * ppmk);
-HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
-HRESULT WINAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER * ppmkRelPath, BOOL dwReserved);
+
+_Check_return_
+HRESULT
+WINAPI
+BindMoniker(
+  _In_ LPMONIKER pmk,
+  _In_ DWORD grfOpt,
+  _In_ REFIID iidResult,
+  _Outptr_ LPVOID *ppvResult);
+
+_Check_return_
+HRESULT
+WINAPI
+CoGetObject(
+  _In_ LPCWSTR pszName,
+  _In_opt_ BIND_OPTS *pBindOptions,
+  _In_ REFIID riid,
+  _Outptr_ void **ppv);
+
+_Check_return_ HRESULT WINAPI CreateAntiMoniker(_Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateBindCtx(
+  _In_ DWORD reserved,
+  _Outptr_ LPBC *ppbc);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateClassMoniker(
+  _In_ REFCLSID rclsid,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateFileMoniker(
+  _In_ LPCOLESTR lpszPathName,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateGenericComposite(
+  _In_opt_ LPMONIKER pmkFirst,
+  _In_opt_ LPMONIKER pmkRest,
+  _Outptr_ LPMONIKER *ppmkComposite);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateItemMoniker(
+  _In_ LPCOLESTR lpszDelim,
+  _In_ LPCOLESTR lpszItem,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateObjrefMoniker(
+  _In_opt_ LPUNKNOWN punk,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+CreatePointerMoniker(
+  _In_opt_ LPUNKNOWN punk,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+GetClassFile(
+  _In_ LPCOLESTR filePathName,
+  _Out_ CLSID *pclsid);
+
+_Check_return_
+HRESULT
+WINAPI
+GetRunningObjectTable(
+  _In_ DWORD reserved,
+  _Outptr_ LPRUNNINGOBJECTTABLE *pprot);
+
+_Check_return_
+HRESULT
+WINAPI
+MkParseDisplayName(
+  _In_ LPBC pbc,
+  _In_ LPCOLESTR szUserName,
+  _Out_ ULONG *pchEaten,
+  _Outptr_ LPMONIKER *ppmk);
+
+_Check_return_
+HRESULT
+WINAPI
+MonikerCommonPrefixWith(
+  _In_ IMoniker *pmkThis,
+  _In_ IMoniker *pmkOther,
+  _Outptr_ IMoniker **ppmkCommon);
+
+_Check_return_
+HRESULT
+WINAPI
+MonikerRelativePathTo(
+  _In_ LPMONIKER pmkSrc,
+  _In_ LPMONIKER pmkDest,
+  _Outptr_ LPMONIKER *ppmkRelPath,
+  _In_ BOOL dwReserved);
 
 /*****************************************************************************
  *     Storage API
@@ -510,17 +960,99 @@ typedef struct tagSTGOPTIONS
     const WCHAR* pwcsTemplateFile;
 } STGOPTIONS;
 
-HRESULT WINAPI StringFromIID(REFIID rclsid, LPOLESTR *lplpsz);
-HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
-HRESULT WINAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
-HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn);
-HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt);
-HRESULT WINAPI StgOpenStorage(const OLECHAR* pwcsName,IStorage* pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage**ppstgOpen);
-HRESULT WINAPI StgOpenStorageEx(const WCHAR* pwcwName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions, void *reserved, REFIID riid, void **ppObjectOpen);
-
-HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode, DWORD reserved, IStorage** ppstgOpen);
-HRESULT WINAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
-HRESULT WINAPI StgSetTimes( OLECHAR const *lpszName, FILETIME const *pctime, FILETIME const *patime, FILETIME const *pmtime);
+_Check_return_
+HRESULT
+WINAPI
+StringFromIID(
+  _In_ REFIID rclsid,
+  _Outptr_ LPOLESTR *lplpsz);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateDocfile(
+  _In_opt_ _Null_terminated_ LPCOLESTR pwcsName,
+  _In_ DWORD grfMode,
+  _Reserved_ DWORD reserved,
+  _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateStorageEx(
+  _In_opt_ _Null_terminated_ const WCHAR*,
+  _In_ DWORD,
+  _In_ DWORD,
+  _In_ DWORD,
+  _Inout_opt_ STGOPTIONS*,
+  _In_opt_ void*,
+  _In_ REFIID,
+  _Outptr_ void**);
+
+_Check_return_
+HRESULT
+WINAPI
+StgIsStorageFile(
+  _In_ _Null_terminated_ LPCOLESTR fn);
+
+_Check_return_
+HRESULT
+WINAPI
+StgIsStorageILockBytes(
+  _In_ ILockBytes *plkbyt);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorage(
+  _In_opt_ _Null_terminated_ const OLECHAR *pwcsName,
+  _In_opt_ IStorage *pstgPriority,
+  _In_ DWORD grfMode,
+  _In_opt_z_ SNB snbExclude,
+  _In_ DWORD reserved,
+  _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorageEx(
+  _In_ _Null_terminated_ const WCHAR *pwcwName,
+  _In_ DWORD grfMode,
+  _In_ DWORD stgfmt,
+  _In_ DWORD grfAttrs,
+  _Inout_opt_ STGOPTIONS *pStgOptions,
+  _In_opt_ void *reserved,
+  _In_ REFIID riid,
+  _Outptr_ void **ppObjectOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgCreateDocfileOnILockBytes(
+  _In_ ILockBytes *plkbyt,
+  _In_ DWORD grfMode,
+  _In_ DWORD reserved,
+  _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgOpenStorageOnILockBytes(
+  _In_ ILockBytes *plkbyt,
+  _In_opt_ IStorage *pstgPriority,
+  _In_ DWORD grfMode,
+  _In_opt_z_ SNB snbExclude,
+  _Reserved_ DWORD reserved,
+  _Outptr_ IStorage **ppstgOpen);
+
+_Check_return_
+HRESULT
+WINAPI
+StgSetTimes(
+  _In_ _Null_terminated_ OLECHAR const *lpszName,
+  _In_opt_ FILETIME const *pctime,
+  _In_opt_ FILETIME const *patime,
+  _In_opt_ FILETIME const *pmtime);
 
 #ifdef __cplusplus
 }