Synchronize with trunk revision 59781.
[reactos.git] / include / psdk / oleauto.h
index 4492d04..0fb0833 100644 (file)
@@ -38,60 +38,158 @@ DEFINE_OLEGUID(IID_StdOle, 0x00020430,0,0);
 ULONG WINAPI OaBuildVersion(void);
 
 /* BSTR functions */
-BSTR WINAPI SysAllocString(const OLECHAR*);
-BSTR WINAPI SysAllocStringByteLen(LPCSTR,UINT);
-BSTR WINAPI SysAllocStringLen(const OLECHAR*,UINT);
-void WINAPI SysFreeString(BSTR);
-INT  WINAPI SysReAllocString(LPBSTR,const OLECHAR*);
-int  WINAPI SysReAllocStringLen(BSTR*,const OLECHAR*,UINT);
-UINT WINAPI SysStringByteLen(BSTR);
-UINT WINAPI SysStringLen(BSTR);
+BSTR WINAPI SysAllocString(_In_opt_z_ const OLECHAR*);
+BSTR WINAPI SysAllocStringByteLen(_In_opt_z_ LPCSTR, _In_ UINT);
+
+_Ret_writes_maybenull_z_(ui + 1)
+BSTR
+WINAPI
+SysAllocStringLen(
+  _In_reads_opt_(ui) const OLECHAR*,
+  UINT ui);
+
+void WINAPI SysFreeString(_In_opt_ BSTR);
+
+INT
+WINAPI
+SysReAllocString(
+  _Inout_ _At_(*pbstr, _Pre_z_ _Post_z_ _Post_readable_size_(_String_length_(psz) + 1)) LPBSTR pbstr,
+  _In_opt_z_ const OLECHAR *psz);
+
+_Check_return_
+int
+WINAPI
+SysReAllocStringLen(
+  _Inout_ _At_(*pbstr, _Pre_z_ _Post_z_ _Post_readable_size_(len + 1)) BSTR *pbstr,
+  _In_opt_z_ const OLECHAR*,
+  _In_ UINT len);
+
+_Post_equal_to_(_String_length_(bstr) * sizeof(OLECHAR))
+UINT
+WINAPI
+SysStringByteLen(
+  _In_opt_ BSTR bstr);
+
+_Post_equal_to_(pbstr == NULL ? 0 : _String_length_(pbstr))
+UINT
+WINAPI
+SysStringLen(
+  _In_opt_ BSTR pbstr);
 
 /* IErrorInfo helpers */
-HRESULT WINAPI SetErrorInfo(ULONG,IErrorInfo*);
-HRESULT WINAPI GetErrorInfo(ULONG,IErrorInfo**);
-HRESULT WINAPI CreateErrorInfo(ICreateErrorInfo**);
+HRESULT WINAPI SetErrorInfo(_In_ ULONG, _In_opt_ IErrorInfo*);
+_Check_return_ HRESULT WINAPI GetErrorInfo(_In_ ULONG, _Outptr_ IErrorInfo**);
+_Check_return_ HRESULT WINAPI CreateErrorInfo(_Outptr_ ICreateErrorInfo**);
 
 /* SafeArray functions */
-SAFEARRAY* WINAPI SafeArrayCreate(VARTYPE,UINT,SAFEARRAYBOUND*);
-SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE,UINT,SAFEARRAYBOUND*,LPVOID);
-SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE,LONG,ULONG);
-SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID);
-
-HRESULT WINAPI SafeArrayAllocDescriptor(UINT,SAFEARRAY**);
-HRESULT WINAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
-HRESULT WINAPI SafeArrayAllocData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
-HRESULT WINAPI SafeArrayPutElement(SAFEARRAY*,LONG*,void*);
-HRESULT WINAPI SafeArrayGetElement(SAFEARRAY*,LONG*,void*);
-HRESULT WINAPI SafeArrayLock(SAFEARRAY*);
-HRESULT WINAPI SafeArrayUnlock(SAFEARRAY*);
-HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY*,UINT,LONG*);
-HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY*,UINT,LONG*);
-UINT    WINAPI SafeArrayGetDim(SAFEARRAY*);
-UINT    WINAPI SafeArrayGetElemsize(SAFEARRAY*);
-HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
-HRESULT WINAPI SafeArrayAccessData(SAFEARRAY*,void**);
-HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY*,LONG*,void **);
-HRESULT WINAPI SafeArrayCopyData(SAFEARRAY*,SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY*);
-HRESULT WINAPI SafeArrayDestroy(SAFEARRAY*);
-HRESULT WINAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
-HRESULT WINAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
-HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
-HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**);
-HRESULT WINAPI SafeArraySetIID(SAFEARRAY*,REFGUID);
-HRESULT WINAPI SafeArrayGetIID(SAFEARRAY*,GUID*);
-
-HRESULT WINAPI VectorFromBstr(BSTR,SAFEARRAY**);
-HRESULT WINAPI BstrFromVector(SAFEARRAY*,BSTR*);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreate(
+  _In_ VARTYPE,
+  _In_ UINT,
+  _In_ SAFEARRAYBOUND*);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateEx(
+  _In_ VARTYPE,
+  _In_ UINT,
+  _In_ SAFEARRAYBOUND*,
+  _In_ LPVOID);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateVector(
+  _In_ VARTYPE,
+  _In_ LONG,
+  _In_ ULONG);
+
+SAFEARRAY*
+WINAPI
+SafeArrayCreateVectorEx(
+  _In_ VARTYPE,
+  _In_ LONG,
+  _In_ ULONG,
+  _In_ LPVOID);
+
+HRESULT WINAPI SafeArrayAllocDescriptor(_In_ UINT, _Outptr_ SAFEARRAY**);
+
+HRESULT
+WINAPI
+SafeArrayAllocDescriptorEx(
+  _In_ VARTYPE,
+  _In_ UINT,
+  _Outptr_ SAFEARRAY**);
+
+HRESULT WINAPI SafeArrayAllocData(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroyDescriptor(_In_ SAFEARRAY*);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayPutElement(
+  _In_ SAFEARRAY*,
+  LONG*,
+  _In_ void*);
+
+HRESULT WINAPI SafeArrayGetElement(_In_ SAFEARRAY*, LONG*, _Out_ void*);
+HRESULT WINAPI SafeArrayLock(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayUnlock(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetUBound(_In_ SAFEARRAY*, _In_ UINT, _Out_ LONG*);
+HRESULT WINAPI SafeArrayGetLBound(_In_ SAFEARRAY*, _In_ UINT, _Out_ LONG*);
+UINT    WINAPI SafeArrayGetDim(_In_ SAFEARRAY*);
+UINT    WINAPI SafeArrayGetElemsize(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayGetVartype(_In_ SAFEARRAY*, _Out_ VARTYPE*);
+HRESULT WINAPI SafeArrayAccessData(_In_ SAFEARRAY*, void**);
+HRESULT WINAPI SafeArrayUnaccessData(_In_ SAFEARRAY*);
+
+HRESULT
+WINAPI
+SafeArrayPtrOfIndex(
+  _In_ SAFEARRAY *psa,
+  _In_reads_(psa->cDims) LONG*,
+  _Outptr_result_bytebuffer_(psa->cbElements) void **);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayCopyData(
+  _In_ SAFEARRAY*,
+  _In_ SAFEARRAY*);
+
+HRESULT WINAPI SafeArrayDestroyData(_In_ SAFEARRAY*);
+HRESULT WINAPI SafeArrayDestroy(_In_ SAFEARRAY*);
+
+_Check_return_
+HRESULT
+WINAPI
+SafeArrayCopy(
+  _In_ SAFEARRAY*,
+  _Outptr_ SAFEARRAY**);
+
+HRESULT WINAPI SafeArrayRedim(_Inout_ SAFEARRAY*, _In_ SAFEARRAYBOUND*);
+HRESULT WINAPI SafeArraySetRecordInfo(_In_ SAFEARRAY*, _In_ IRecordInfo*);
+HRESULT WINAPI SafeArrayGetRecordInfo(_In_ SAFEARRAY*, _Outptr_ IRecordInfo**);
+HRESULT WINAPI SafeArraySetIID(_In_ SAFEARRAY*, _In_ REFGUID);
+HRESULT WINAPI SafeArrayGetIID(_In_ SAFEARRAY*, _Out_ GUID*);
+
+_Check_return_ HRESULT WINAPI VectorFromBstr(_In_ BSTR, _Outptr_ SAFEARRAY**);
+_Check_return_ HRESULT WINAPI BstrFromVector(_In_ SAFEARRAY*, _Out_ BSTR*);
 
 /* Object registration helpers */
 #define ACTIVEOBJECT_STRONG 0
 #define ACTIVEOBJECT_WEAK   1
 
-HRESULT WINAPI RegisterActiveObject(LPUNKNOWN,REFCLSID,DWORD,LPDWORD);
+_Check_return_
+HRESULT
+WINAPI
+RegisterActiveObject(
+  LPUNKNOWN,
+  REFCLSID,
+  DWORD,
+  LPDWORD);
+
 HRESULT WINAPI RevokeActiveObject(DWORD,LPVOID);
 HRESULT WINAPI GetActiveObject(REFCLSID,LPVOID,LPUNKNOWN*);
 
@@ -180,12 +278,29 @@ HRESULT WINAPI GetRecordInfoFromGuids(REFGUID,ULONG,ULONG,LCID,REFGUID,IRecordIn
 #define V_UNKNOWNREF(A)  V_UNION(A,ppunkVal)
 #define V_VARIANTREF(A)  V_UNION(A,pvarVal)
 
-void    WINAPI VariantInit(VARIANT*);
-HRESULT WINAPI VariantClear(VARIANT*);
-HRESULT WINAPI VariantCopy(VARIANT*,VARIANT*);
-HRESULT WINAPI VariantCopyInd(VARIANT*,VARIANT*);
-HRESULT WINAPI VariantChangeType(VARIANT*,VARIANT*,USHORT,VARTYPE);
-HRESULT WINAPI VariantChangeTypeEx(VARIANT*,VARIANT*,LCID,USHORT,VARTYPE);
+void    WINAPI VariantInit(_Out_ VARIANT*);
+HRESULT WINAPI VariantClear(_Inout_ VARIANT*);
+_Check_return_ HRESULT WINAPI VariantCopy(_Inout_ VARIANT*, _In_ VARIANT*);
+_Check_return_ HRESULT WINAPI VariantCopyInd(_Inout_ VARIANT*, _In_ VARIANT*);
+
+_Check_return_
+HRESULT
+WINAPI
+VariantChangeType(
+  _Inout_ VARIANT*,
+  _In_ VARIANT*,
+  _In_ USHORT,
+  _In_ VARTYPE);
+
+_Check_return_
+HRESULT
+WINAPI
+VariantChangeTypeEx(
+  _Inout_ VARIANT*,
+  _In_ VARIANT*,
+  _In_ LCID,
+  _In_ USHORT,
+  _In_ VARTYPE);
 
 /* VariantChangeType/VariantChangeTypeEx flags */
 #define VARIANT_NOVALUEPROP        0x01 /* Don't get the default value property from IDispatch */
@@ -222,247 +337,247 @@ HRESULT WINAPI VariantChangeTypeEx(VARIANT*,VARIANT*,LCID,USHORT,VARTYPE);
 #define VTDATEGRE_MIN -657434 /* Minimum possible Gregorian date: 1/1/100 */
 #define VTDATEGRE_MAX 2958465 /* Maximum possible Gregorian date: 31/12/9999 */
 
-HRESULT WINAPI VarUI1FromI2(SHORT,BYTE*);
-HRESULT WINAPI VarUI1FromI4(LONG,BYTE*);
-HRESULT WINAPI VarUI1FromI8(LONG64,BYTE*);
-HRESULT WINAPI VarUI1FromR4(FLOAT,BYTE*);
-HRESULT WINAPI VarUI1FromR8(DOUBLE,BYTE*);
-HRESULT WINAPI VarUI1FromDate(DATE,BYTE*);
-HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL,BYTE*);
-HRESULT WINAPI VarUI1FromI1(signed char,BYTE*);
-HRESULT WINAPI VarUI1FromUI2(USHORT,BYTE*);
-HRESULT WINAPI VarUI1FromUI4(ULONG,BYTE*);
-HRESULT WINAPI VarUI1FromUI8(ULONG64,BYTE*);
-HRESULT WINAPI VarUI1FromStr(OLECHAR*,LCID,ULONG,BYTE*);
-HRESULT WINAPI VarUI1FromCy(CY,BYTE*);
-HRESULT WINAPI VarUI1FromDec(DECIMAL*,BYTE*);
-HRESULT WINAPI VarUI1FromDisp(IDispatch*,LCID,BYTE*);
-
-HRESULT WINAPI VarI2FromUI1(BYTE,SHORT*);
-HRESULT WINAPI VarI2FromI4(LONG,SHORT*);
-HRESULT WINAPI VarI2FromI8(LONG64,SHORT*);
-HRESULT WINAPI VarI2FromR4(FLOAT,SHORT*);
-HRESULT WINAPI VarI2FromR8(DOUBLE,SHORT*);
-HRESULT WINAPI VarI2FromDate(DATE,SHORT*);
-HRESULT WINAPI VarI2FromBool(VARIANT_BOOL,SHORT*);
-HRESULT WINAPI VarI2FromI1(signed char,SHORT*);
-HRESULT WINAPI VarI2FromUI2(USHORT,SHORT*);
-HRESULT WINAPI VarI2FromUI4(ULONG,SHORT*);
-HRESULT WINAPI VarI2FromUI8(ULONG64,SHORT*);
-HRESULT WINAPI VarI2FromStr(OLECHAR*,LCID,ULONG,SHORT*);
+HRESULT WINAPI VarUI1FromI2(SHORT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI4(LONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI8(LONG64, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromR4(FLOAT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromR8(DOUBLE, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDate(DATE, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromI1(signed char, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI2(USHORT, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI4(ULONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromUI8(ULONG64, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromCy(CY, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDec(_In_ DECIMAL*, _Out_ BYTE*);
+HRESULT WINAPI VarUI1FromDisp(IDispatch*, LCID, _Out_ BYTE*);
+
+HRESULT WINAPI VarI2FromUI1(BYTE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI4(LONG, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI8(LONG64, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromR4(FLOAT, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromR8(DOUBLE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromDate(DATE, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromBool(VARIANT_BOOL, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromI1(signed char, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI2(USHORT, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI4(ULONG, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromUI8(ULONG64, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ SHORT*);
 HRESULT WINAPI VarI2FromCy(CY,SHORT*);
-HRESULT WINAPI VarI2FromDec(DECIMAL*,SHORT*);
-HRESULT WINAPI VarI2FromDisp(IDispatch*,LCID,SHORT*);
-
-HRESULT WINAPI VarI4FromUI1(BYTE,LONG*);
-HRESULT WINAPI VarI4FromI2(SHORT,LONG*);
-HRESULT WINAPI VarI4FromI8(LONG64,LONG*);
-HRESULT WINAPI VarI4FromR4(FLOAT,LONG*);
-HRESULT WINAPI VarI4FromR8(DOUBLE,LONG*);
-HRESULT WINAPI VarI4FromDate(DATE,LONG*);
-HRESULT WINAPI VarI4FromBool(VARIANT_BOOL,LONG*);
-HRESULT WINAPI VarI4FromI1(signed char,LONG*);
-HRESULT WINAPI VarI4FromUI2(USHORT,LONG*);
-HRESULT WINAPI VarI4FromUI4(ULONG,LONG*);
-HRESULT WINAPI VarI4FromUI8(ULONG64,LONG*);
-HRESULT WINAPI VarI4FromStr(OLECHAR*,LCID,ULONG,LONG*);
-HRESULT WINAPI VarI4FromCy(CY,LONG*);
-HRESULT WINAPI VarI4FromDec(DECIMAL*,LONG*);
-HRESULT WINAPI VarI4FromDisp(IDispatch*,LCID,LONG*);
-
-HRESULT WINAPI VarI8FromUI1(BYTE,LONG64*);
-HRESULT WINAPI VarI8FromI2(SHORT,LONG64*);
+HRESULT WINAPI VarI2FromDec(_In_ DECIMAL*, _Out_ SHORT*);
+HRESULT WINAPI VarI2FromDisp(IDispatch*, LCID, _Out_ SHORT*);
+
+HRESULT WINAPI VarI4FromUI1(BYTE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI2(SHORT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI8(LONG64, _Out_ LONG*);
+HRESULT WINAPI VarI4FromR4(FLOAT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromR8(DOUBLE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDate(DATE, _Out_ LONG*);
+HRESULT WINAPI VarI4FromBool(VARIANT_BOOL, _Out_ LONG*);
+HRESULT WINAPI VarI4FromI1(signed char, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI2(USHORT, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI4(ULONG, _Out_ LONG*);
+HRESULT WINAPI VarI4FromUI8(ULONG64, _Out_ LONG*);
+HRESULT WINAPI VarI4FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ LONG*);
+HRESULT WINAPI VarI4FromCy(CY, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDec(_In_ DECIMAL*, _Out_ LONG*);
+HRESULT WINAPI VarI4FromDisp(IDispatch*, _In_ LCID, _Out_ LONG*);
+
+HRESULT WINAPI VarI8FromUI1(BYTE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromI2(SHORT, _Out_ LONG64*);
 HRESULT WINAPI VarI8FromI4(LONG,LONG64*);
-HRESULT WINAPI VarI8FromR4(FLOAT,LONG64*);
-HRESULT WINAPI VarI8FromR8(DOUBLE,LONG64*);
-HRESULT WINAPI VarI8FromDate(DATE,LONG64*);
-HRESULT WINAPI VarI8FromStr(OLECHAR*,LCID,ULONG,LONG64*);
-HRESULT WINAPI VarI8FromBool(VARIANT_BOOL,LONG64*);
-HRESULT WINAPI VarI8FromI1(signed char,LONG64*);
-HRESULT WINAPI VarI8FromUI2(USHORT,LONG64*);
-HRESULT WINAPI VarI8FromUI4(ULONG,LONG64*);
-HRESULT WINAPI VarI8FromUI8(ULONG64,LONG64*);
-HRESULT WINAPI VarI8FromDec(DECIMAL *pdecIn,LONG64*);
+HRESULT WINAPI VarI8FromR4(FLOAT, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromR8(DOUBLE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDate(DATE, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromBool(VARIANT_BOOL, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromI1(signed char, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI2(USHORT, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI4(ULONG, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromUI8(ULONG64, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDec(_In_ DECIMAL *pdecIn, _Out_ LONG64*);
 HRESULT WINAPI VarI8FromInt(INT intIn,LONG64*);
-HRESULT WINAPI VarI8FromCy(CY,LONG64*);
-HRESULT WINAPI VarI8FromDisp(IDispatch*,LCID,LONG64*);
-
-HRESULT WINAPI VarR4FromUI1(BYTE,FLOAT*);
-HRESULT WINAPI VarR4FromI2(SHORT,FLOAT*);
-HRESULT WINAPI VarR4FromI4(LONG,FLOAT*);
-HRESULT WINAPI VarR4FromI8(LONG64,FLOAT*);
-HRESULT WINAPI VarR4FromR8(DOUBLE,FLOAT*);
-HRESULT WINAPI VarR4FromDate(DATE,FLOAT*);
-HRESULT WINAPI VarR4FromBool(VARIANT_BOOL,FLOAT*);
-HRESULT WINAPI VarR4FromI1(signed char,FLOAT*);
-HRESULT WINAPI VarR4FromUI2(USHORT,FLOAT*);
-HRESULT WINAPI VarR4FromUI4(ULONG,FLOAT*);
-HRESULT WINAPI VarR4FromUI8(ULONG64,FLOAT*);
-HRESULT WINAPI VarR4FromStr(OLECHAR*,LCID,ULONG,FLOAT*);
+HRESULT WINAPI VarI8FromCy(_In_ CY, _Out_ LONG64*);
+HRESULT WINAPI VarI8FromDisp(IDispatch*, _In_ LCID, _Out_ LONG64*);
+
+HRESULT WINAPI VarR4FromUI1(BYTE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI2(SHORT, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI4(LONG, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI8(LONG64, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromR8(DOUBLE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromDate(DATE, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromBool(VARIANT_BOOL, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromI1(signed char, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI2(USHORT, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI4(ULONG, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromUI8(ULONG64, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ FLOAT*);
 HRESULT WINAPI VarR4FromCy(CY,FLOAT*);
-HRESULT WINAPI VarR4FromDec(DECIMAL*,FLOAT*);
-HRESULT WINAPI VarR4FromDisp(IDispatch*,LCID,FLOAT*);
-
-HRESULT WINAPI VarR8FromUI1(BYTE,double*);
-HRESULT WINAPI VarR8FromI2(SHORT,double*);
-HRESULT WINAPI VarR8FromI4(LONG,double*);
-HRESULT WINAPI VarR8FromI8(LONG64,double*);
-HRESULT WINAPI VarR8FromR4(FLOAT,double*);
-HRESULT WINAPI VarR8FromDate(DATE,double*);
-HRESULT WINAPI VarR8FromBool(VARIANT_BOOL,double*);
+HRESULT WINAPI VarR4FromDec(_In_ DECIMAL*, _Out_ FLOAT*);
+HRESULT WINAPI VarR4FromDisp(IDispatch*, LCID, _Out_ FLOAT*);
+
+HRESULT WINAPI VarR8FromUI1(BYTE, _Out_ double*);
+HRESULT WINAPI VarR8FromI2(SHORT, _Out_ double*);
+HRESULT WINAPI VarR8FromI4(LONG, _Out_ double*);
+HRESULT WINAPI VarR8FromI8(LONG64, _Out_ double*);
+HRESULT WINAPI VarR8FromR4(FLOAT, _Out_ double*);
+HRESULT WINAPI VarR8FromDate(DATE, _Out_ double*);
+HRESULT WINAPI VarR8FromBool(VARIANT_BOOL, _Out_ double*);
 HRESULT WINAPI VarR8FromI1(signed char,double*);
-HRESULT WINAPI VarR8FromUI2(USHORT,double*);
-HRESULT WINAPI VarR8FromUI4(ULONG,double*);
-HRESULT WINAPI VarR8FromUI8(ULONG64,double*);
-HRESULT WINAPI VarR8FromStr(OLECHAR*,LCID,ULONG,double*);
+HRESULT WINAPI VarR8FromUI2(USHORT, _Out_ double*);
+HRESULT WINAPI VarR8FromUI4(ULONG, _Out_ double*);
+HRESULT WINAPI VarR8FromUI8(ULONG64, _Out_ double*);
+HRESULT WINAPI VarR8FromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ double*);
 HRESULT WINAPI VarR8FromCy(CY,double*);
-HRESULT WINAPI VarR8FromDec(DECIMAL*,double*);
-HRESULT WINAPI VarR8FromDisp(IDispatch*,LCID,double*);
-
-HRESULT WINAPI VarDateFromUI1(BYTE,DATE*);
-HRESULT WINAPI VarDateFromI2(SHORT,DATE*);
-HRESULT WINAPI VarDateFromI4(LONG,DATE*);
-HRESULT WINAPI VarDateFromI8(LONG64,DATE*);
-HRESULT WINAPI VarDateFromR4(FLOAT,DATE*);
-HRESULT WINAPI VarDateFromR8(DOUBLE,DATE*);
-HRESULT WINAPI VarDateFromStr(OLECHAR*,LCID,ULONG,DATE*);
-HRESULT WINAPI VarDateFromI1(signed char,DATE*);
-HRESULT WINAPI VarDateFromUI2(USHORT,DATE*);
-HRESULT WINAPI VarDateFromUI4(ULONG,DATE*);
-HRESULT WINAPI VarDateFromUI8(ULONG64,DATE*);
-HRESULT WINAPI VarDateFromBool(VARIANT_BOOL,DATE*);
-HRESULT WINAPI VarDateFromCy(CY,DATE*);
-HRESULT WINAPI VarDateFromDec(DECIMAL*,DATE*);
-HRESULT WINAPI VarDateFromDisp(IDispatch*,LCID,DATE*);
-
-HRESULT WINAPI VarCyFromUI1(BYTE,CY*);
-HRESULT WINAPI VarCyFromI2(SHORT sIn,CY*);
-HRESULT WINAPI VarCyFromI4(LONG,CY*);
-HRESULT WINAPI VarCyFromI8(LONG64,CY*);
-HRESULT WINAPI VarCyFromR4(FLOAT,CY*);
-HRESULT WINAPI VarCyFromR8(DOUBLE,CY*);
-HRESULT WINAPI VarCyFromDate(DATE,CY*);
-HRESULT WINAPI VarCyFromStr(OLECHAR*,LCID,ULONG,CY*);
-HRESULT WINAPI VarCyFromBool(VARIANT_BOOL,CY*);
-HRESULT WINAPI VarCyFromI1(signed char,CY*);
-HRESULT WINAPI VarCyFromUI2(USHORT,CY*);
-HRESULT WINAPI VarCyFromUI4(ULONG,CY*);
-HRESULT WINAPI VarCyFromUI8(ULONG64,CY*);
-HRESULT WINAPI VarCyFromDec(DECIMAL*,CY*);
-HRESULT WINAPI VarCyFromDisp(IDispatch*,LCID,CY*);
-
-HRESULT WINAPI VarBstrFromUI1(BYTE,LCID,ULONG,BSTR*);
+HRESULT WINAPI VarR8FromDec(_In_ const DECIMAL*, _Out_ double*);
+HRESULT WINAPI VarR8FromDisp(IDispatch*, LCID, _Out_ double*);
+
+HRESULT WINAPI VarDateFromUI1(BYTE, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI2(SHORT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI4(LONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI8(LONG64, _Out_ DATE*);
+HRESULT WINAPI VarDateFromR4(FLOAT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromR8(DOUBLE, _Out_ DATE*);
+HRESULT WINAPI VarDateFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromI1(signed char, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI2(USHORT, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI4(ULONG, _Out_ DATE*);
+HRESULT WINAPI VarDateFromUI8(ULONG64, _Out_ DATE*);
+HRESULT WINAPI VarDateFromBool(VARIANT_BOOL, _Out_ DATE*);
+HRESULT WINAPI VarDateFromCy(CY, _Out_ DATE*);
+HRESULT WINAPI VarDateFromDec(_In_ DECIMAL*, _Out_ DATE*);
+HRESULT WINAPI VarDateFromDisp(IDispatch*, LCID, _Out_ DATE*);
+
+HRESULT WINAPI VarCyFromUI1(BYTE, _Out_ CY*);
+HRESULT WINAPI VarCyFromI2(SHORT sIn, _Out_ CY*);
+HRESULT WINAPI VarCyFromI4(LONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromI8(LONG64, _Out_ CY*);
+HRESULT WINAPI VarCyFromR4(FLOAT, _Out_ CY*);
+HRESULT WINAPI VarCyFromR8(DOUBLE, _Out_ CY*);
+HRESULT WINAPI VarCyFromDate(DATE, _Out_ CY*);
+HRESULT WINAPI VarCyFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromBool(VARIANT_BOOL, _Out_ CY*);
+HRESULT WINAPI VarCyFromI1(signed char, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI2(USHORT, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI4(ULONG, _Out_ CY*);
+HRESULT WINAPI VarCyFromUI8(ULONG64, _Out_ CY*);
+HRESULT WINAPI VarCyFromDec(_In_ DECIMAL*, _Out_ CY*);
+HRESULT WINAPI VarCyFromDisp(_In_ IDispatch*, LCID, _Out_ CY*);
+
+HRESULT WINAPI VarBstrFromUI1(BYTE, LCID, ULONG, _Out_ BSTR*);
 HRESULT WINAPI VarBstrFromI2(SHORT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI4(LONG,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI8(LONG64,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromR4(FLOAT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromR8(DOUBLE,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDate(DATE,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromI1(signed char,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI2(USHORT,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI8(ULONG64,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromUI4(ULONG,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromCy(CY,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDec(DECIMAL*,LCID,ULONG,BSTR*);
-HRESULT WINAPI VarBstrFromDisp(IDispatch*,LCID,ULONG,BSTR*);
-
-HRESULT WINAPI VarBoolFromUI1(BYTE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI2(SHORT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI4(LONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI8(LONG64,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromR4(FLOAT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromR8(DOUBLE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromStr(OLECHAR*,LCID,ULONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromI1(signed char,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI2(USHORT,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI4(ULONG,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromUI8(ULONG64,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromCy(CY,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDec(DECIMAL*,VARIANT_BOOL*);
-HRESULT WINAPI VarBoolFromDisp(IDispatch*,LCID,VARIANT_BOOL*);
-
-HRESULT WINAPI VarI1FromUI1(BYTE,signed char*);
-HRESULT WINAPI VarI1FromI2(SHORT,signed char*);
-HRESULT WINAPI VarI1FromI4(LONG,signed char*);
-HRESULT WINAPI VarI1FromI8(LONG64,signed char*);
-HRESULT WINAPI VarI1FromR4(FLOAT,signed char*);
-HRESULT WINAPI VarI1FromR8(DOUBLE,signed char*);
-HRESULT WINAPI VarI1FromDate(DATE,signed char*);
-HRESULT WINAPI VarI1FromStr(OLECHAR*,LCID,ULONG,signed char*);
-HRESULT WINAPI VarI1FromBool(VARIANT_BOOL,signed char*);
-HRESULT WINAPI VarI1FromUI2(USHORT,signed char*);
-HRESULT WINAPI VarI1FromUI4(ULONG,signed char*);
-HRESULT WINAPI VarI1FromUI8(ULONG64,signed char*);
-HRESULT WINAPI VarI1FromCy(CY,signed char*);
-HRESULT WINAPI VarI1FromDec(DECIMAL*,signed char*);
-HRESULT WINAPI VarI1FromDisp(IDispatch*,LCID,signed char*);
-
-HRESULT WINAPI VarUI2FromUI1(BYTE,USHORT*);
-HRESULT WINAPI VarUI2FromI2(SHORT,USHORT*);
-HRESULT WINAPI VarUI2FromI4(LONG,USHORT*);
-HRESULT WINAPI VarUI2FromI8(LONG64,USHORT*);
-HRESULT WINAPI VarUI2FromR4(FLOAT,USHORT*);
+HRESULT WINAPI VarBstrFromI4(LONG, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromI8(LONG64, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromR4(FLOAT, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromR8(DOUBLE, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDate(_In_ DATE, _In_ LCID, _In_ ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromI1(signed char, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI2(USHORT, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI8(ULONG64, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromUI4(ULONG, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromCy(CY, LCID, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDec(_In_ DECIMAL*, _In_ LCID, _In_ ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarBstrFromDisp(IDispatch*, LCID, ULONG, _Out_ BSTR*);
+
+HRESULT WINAPI VarBoolFromUI1(BYTE, _Out_ VARIANT_BOOL*);
+_Check_return_ HRESULT WINAPI VarBoolFromI2(_In_ SHORT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI4(LONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI8(LONG64, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR4(FLOAT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromR8(DOUBLE, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDate(DATE, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromStr(_In_ OLECHAR*, LCID, ULONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromI1(signed char, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI2(USHORT, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI4(ULONG, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromUI8(ULONG64, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromCy(CY, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDec(_In_ DECIMAL*, _Out_ VARIANT_BOOL*);
+HRESULT WINAPI VarBoolFromDisp(IDispatch*, LCID, _Out_ VARIANT_BOOL*);
+
+HRESULT WINAPI VarI1FromUI1(_In_ BYTE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI2(_In_ SHORT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI4(_In_ LONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromI8(_In_ LONG64, _Out_ signed char*);
+HRESULT WINAPI VarI1FromR4(_In_ FLOAT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromR8(_In_ DOUBLE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDate(_In_ DATE, _Out_ signed char*);
+HRESULT WINAPI VarI1FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromBool(_In_ VARIANT_BOOL, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI2(_In_ USHORT, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI4(_In_ ULONG, _Out_ signed char*);
+HRESULT WINAPI VarI1FromUI8(_In_ ULONG64, _Out_ signed char*);
+HRESULT WINAPI VarI1FromCy(_In_ CY, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDec(_In_ DECIMAL*, _Out_ signed char*);
+HRESULT WINAPI VarI1FromDisp(_In_ IDispatch*, _In_ LCID, _Out_ signed char*);
+
+HRESULT WINAPI VarUI2FromUI1(BYTE, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI2(SHORT, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI4(LONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI8(LONG64, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromR4(FLOAT, _Out_ USHORT*);
 HRESULT WINAPI VarUI2FromR8(DOUBLE,USHORT*);
-HRESULT WINAPI VarUI2FromDate(DATE,USHORT*);
-HRESULT WINAPI VarUI2FromStr(OLECHAR*,LCID,ULONG,USHORT*);
-HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL,USHORT*);
-HRESULT WINAPI VarUI2FromI1(signed char,USHORT*);
-HRESULT WINAPI VarUI2FromUI4(ULONG,USHORT*);
-HRESULT WINAPI VarUI2FromUI8(ULONG64,USHORT*);
-HRESULT WINAPI VarUI2FromCy(CY,USHORT*);
-HRESULT WINAPI VarUI2FromDec(DECIMAL*,USHORT*);
-HRESULT WINAPI VarUI2FromDisp(IDispatch*,LCID,USHORT*);
-
-HRESULT WINAPI VarUI4FromStr(OLECHAR*,LCID,ULONG,ULONG*);
-HRESULT WINAPI VarUI4FromUI1(BYTE,ULONG*);
-HRESULT WINAPI VarUI4FromI2(SHORT,ULONG*);
-HRESULT WINAPI VarUI4FromI4(LONG,ULONG*);
-HRESULT WINAPI VarUI4FromI8(LONG64,ULONG*);
-HRESULT WINAPI VarUI4FromR4(FLOAT,ULONG*);
-HRESULT WINAPI VarUI4FromR8(DOUBLE,ULONG*);
-HRESULT WINAPI VarUI4FromDate(DATE,ULONG*);
-HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL,ULONG*);
-HRESULT WINAPI VarUI4FromI1(signed char,ULONG*);
-HRESULT WINAPI VarUI4FromUI2(USHORT,ULONG*);
-HRESULT WINAPI VarUI4FromUI8(ULONG64,ULONG*);
-HRESULT WINAPI VarUI4FromCy(CY,ULONG*);
-HRESULT WINAPI VarUI4FromDec(DECIMAL*,ULONG*);
-HRESULT WINAPI VarUI4FromDisp(IDispatch*,LCID,ULONG*);
-
-HRESULT WINAPI VarUI8FromUI1(BYTE,ULONG64*);
-HRESULT WINAPI VarUI8FromI2(SHORT,ULONG64*);
-HRESULT WINAPI VarUI8FromI4(LONG,ULONG64*);
-HRESULT WINAPI VarUI8FromI8(LONG64,ULONG64*);
-HRESULT WINAPI VarUI8FromR4(FLOAT,ULONG64*);
-HRESULT WINAPI VarUI8FromR8(DOUBLE,ULONG64*);
-HRESULT WINAPI VarUI8FromDate(DATE,ULONG64*);
-HRESULT WINAPI VarUI8FromStr(OLECHAR*,LCID,ULONG,ULONG64*);
-HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL,ULONG64*);
-HRESULT WINAPI VarUI8FromI1(signed char,ULONG64*);
-HRESULT WINAPI VarUI8FromUI2(USHORT,ULONG64*);
-HRESULT WINAPI VarUI8FromUI4(ULONG,ULONG64*);
-HRESULT WINAPI VarUI8FromDec(DECIMAL*,ULONG64*);
+HRESULT WINAPI VarUI2FromDate(DATE, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromI1(signed char, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromUI4(ULONG, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromUI8(ULONG64, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromCy(CY, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromDec(_In_ DECIMAL*, _Out_ USHORT*);
+HRESULT WINAPI VarUI2FromDisp(_In_ IDispatch*, LCID, _Out_ USHORT*);
+
+HRESULT WINAPI VarUI4FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI1(BYTE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI2(_In_ SHORT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI4(LONG, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI8(LONG64, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromR4(FLOAT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromR8(DOUBLE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDate(DATE, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromI1(signed char, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI2(USHORT, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromUI8(ULONG64, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromCy(CY, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDec(_In_ DECIMAL*, _Out_ ULONG*);
+HRESULT WINAPI VarUI4FromDisp(_In_ IDispatch*, LCID, _Out_ ULONG*);
+
+HRESULT WINAPI VarUI8FromUI1(BYTE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI2(SHORT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI4(LONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI8(LONG64, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromR4(FLOAT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromR8(DOUBLE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDate(DATE, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromI1(signed char, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromUI2(USHORT, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromUI4(ULONG, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDec(_In_ DECIMAL*, _Out_ ULONG64*);
 HRESULT WINAPI VarUI8FromInt(INT,ULONG64*);
-HRESULT WINAPI VarUI8FromCy(CY,ULONG64*);
-HRESULT WINAPI VarUI8FromDisp(IDispatch*,LCID,ULONG64*);
-
-HRESULT WINAPI VarDecFromUI1(BYTE,DECIMAL*);
-HRESULT WINAPI VarDecFromI2(SHORT,DECIMAL*);
-HRESULT WINAPI VarDecFromI4(LONG,DECIMAL*);
-HRESULT WINAPI VarDecFromI8(LONG64,DECIMAL*);
-HRESULT WINAPI VarDecFromR4(FLOAT,DECIMAL*);
-HRESULT WINAPI VarDecFromR8(DOUBLE,DECIMAL*);
-HRESULT WINAPI VarDecFromDate(DATE,DECIMAL*);
-HRESULT WINAPI VarDecFromStr(OLECHAR*,LCID,ULONG,DECIMAL*);
-HRESULT WINAPI VarDecFromBool(VARIANT_BOOL,DECIMAL*);
-HRESULT WINAPI VarDecFromI1(signed char,DECIMAL*);
-HRESULT WINAPI VarDecFromUI2(USHORT,DECIMAL*);
-HRESULT WINAPI VarDecFromUI4(ULONG,DECIMAL*);
-HRESULT WINAPI VarDecFromUI8(ULONG64,DECIMAL*);
-HRESULT WINAPI VarDecFromCy(CY,DECIMAL*);
-HRESULT WINAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
+HRESULT WINAPI VarUI8FromCy(CY, _Out_ ULONG64*);
+HRESULT WINAPI VarUI8FromDisp(_In_ IDispatch*, LCID, _Out_ ULONG64*);
+
+HRESULT WINAPI VarDecFromUI1(_In_ BYTE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI2(_In_ SHORT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI4(_In_ LONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI8(LONG64, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromR4(_In_ FLOAT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromR8(_In_ DOUBLE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromDate(_In_ DATE, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromStr(_In_ OLECHAR*, _In_ LCID, _In_ ULONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromBool(_In_ VARIANT_BOOL, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromI1(_In_ signed char, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI2(_In_ USHORT, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI4(_In_ ULONG, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromUI8(ULONG64, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromCy(_In_ CY, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFromDisp(_In_ IDispatch*, _In_ LCID, _Out_ DECIMAL*);
 
 #define VarUI4FromUI4( in,pOut ) ( *(pOut) =  (in) )
 #define VarI4FromI4( in,pOut )   ( *(pOut) =  (in) )
@@ -540,62 +655,62 @@ HRESULT WINAPI VarDecFromDisp(IDispatch*,LCID,DECIMAL*);
 #define VARCMP_GT   2
 #define VARCMP_NULL 3
 
-HRESULT WINAPI VarR4CmpR8(float,double);
-
-HRESULT WINAPI VarR8Pow(double,double,double*);
-HRESULT WINAPI VarR8Round(double,int,double*);
-
-HRESULT WINAPI VarDecAbs(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecAdd(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecCmp(const DECIMAL*,const DECIMAL*);
-HRESULT WINAPI VarDecCmpR8(const DECIMAL*,DOUBLE);
-HRESULT WINAPI VarDecDiv(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecFix(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecInt(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecMul(const DECIMAL*,const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecNeg(const DECIMAL*,DECIMAL*);
-HRESULT WINAPI VarDecRound(const DECIMAL*,int,DECIMAL*);
-HRESULT WINAPI VarDecSub(const DECIMAL*,const DECIMAL*,DECIMAL*);
-
-HRESULT WINAPI VarCyAbs(const CY,CY*);
-HRESULT WINAPI VarCyAdd(const CY,const CY,CY*);
-HRESULT WINAPI VarCyCmp(const CY,const CY);
-HRESULT WINAPI VarCyCmpR8(const CY,DOUBLE);
-HRESULT WINAPI VarCyFix(const CY,CY*);
-HRESULT WINAPI VarCyInt(const CY,CY*);
-HRESULT WINAPI VarCyMul(const CY,CY,CY*);
-HRESULT WINAPI VarCyMulI4(const CY,LONG,CY*);
-HRESULT WINAPI VarCyMulI8(const CY,LONG64,CY*);
-HRESULT WINAPI VarCyNeg(const CY,CY*);
-HRESULT WINAPI VarCyRound(const CY,INT,CY*);
-HRESULT WINAPI VarCySub(const CY,const CY,CY*);
-
-HRESULT WINAPI VarAdd(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarAnd(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarCat(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarDiv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarEqv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarIdiv(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarImp(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarMod(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarMul(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarOr(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarPow(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarSub(LPVARIANT,LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarXor(LPVARIANT,LPVARIANT,LPVARIANT);
-
-HRESULT WINAPI VarAbs(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarFix(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarInt(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarNeg(LPVARIANT,LPVARIANT);
-HRESULT WINAPI VarNot(LPVARIANT,LPVARIANT);
-
-HRESULT WINAPI VarRound(LPVARIANT,int,LPVARIANT);
-
-HRESULT WINAPI VarCmp(LPVARIANT,LPVARIANT,LCID,ULONG);
-
-HRESULT WINAPI VarBstrCmp(BSTR,BSTR,LCID,ULONG);
-HRESULT WINAPI VarBstrCat(BSTR,BSTR,BSTR*);
+HRESULT WINAPI VarR4CmpR8(_In_ float, _In_ double);
+
+HRESULT WINAPI VarR8Pow(_In_ double, _In_ double, _Out_ double*);
+HRESULT WINAPI VarR8Round(_In_ double, _In_ int, _Out_ double*);
+
+HRESULT WINAPI VarDecAbs(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecAdd(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecCmp(_In_ const DECIMAL*, _In_ const DECIMAL*);
+HRESULT WINAPI VarDecCmpR8(_In_ const DECIMAL*, _In_ DOUBLE);
+HRESULT WINAPI VarDecDiv(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecFix(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecInt(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecMul(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecNeg(_In_ const DECIMAL*, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecRound(_In_ const DECIMAL*, int, _Out_ DECIMAL*);
+HRESULT WINAPI VarDecSub(_In_ const DECIMAL*, _In_ const DECIMAL*, _Out_ DECIMAL*);
+
+HRESULT WINAPI VarCyAbs(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyAdd(_In_ const CY, _In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyCmp(_In_ const CY, _In_ const CY);
+HRESULT WINAPI VarCyCmpR8(_In_ const CY, _In_ DOUBLE);
+HRESULT WINAPI VarCyFix(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyInt(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyMul(_In_ const CY, _In_ CY, _Out_ CY*);
+HRESULT WINAPI VarCyMulI4(_In_ const CY, _In_ LONG, _Out_ CY*);
+HRESULT WINAPI VarCyMulI8(_In_ const CY, _In_ LONG64, _Out_ CY*);
+HRESULT WINAPI VarCyNeg(_In_ const CY, _Out_ CY*);
+HRESULT WINAPI VarCyRound(_In_ const CY, _In_ INT, _Out_ CY*);
+HRESULT WINAPI VarCySub(_In_ const CY, _In_ const CY, _Out_ CY*);
+
+HRESULT WINAPI VarAdd(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarAnd(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarCat(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarDiv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarEqv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarIdiv(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarImp(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarMod(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarMul(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarOr(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarPow(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarSub(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarXor(_In_ LPVARIANT, _In_ LPVARIANT, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarAbs(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarFix(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarInt(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarNeg(_In_ LPVARIANT, _Out_ LPVARIANT);
+HRESULT WINAPI VarNot(_In_ LPVARIANT, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarRound(_In_ LPVARIANT, _In_ int, _Out_ LPVARIANT);
+
+HRESULT WINAPI VarCmp(_In_ LPVARIANT, _In_ LPVARIANT, _In_ LCID, _In_ ULONG);
+
+HRESULT WINAPI VarBstrCmp(_In_ BSTR, _In_ BSTR, _In_ LCID, _In_ ULONG);
+HRESULT WINAPI VarBstrCat(_In_ BSTR, _In_ BSTR, _Out_ BSTR*);
 
 
 typedef struct {
@@ -643,32 +758,131 @@ typedef struct
 #define VTBIT_CY      (1 << VT_CY)
 #define VTBIT_DECIMAL (1 << VT_DECIMAL)
 
-HRESULT WINAPI VarParseNumFromStr(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
-HRESULT WINAPI VarNumFromParseNum(NUMPARSE*,BYTE*,ULONG,VARIANT*);
-
-INT WINAPI DosDateTimeToVariantTime(USHORT,USHORT,double*);
-INT WINAPI VariantTimeToDosDateTime(double,USHORT*,USHORT*);
-
-INT WINAPI VariantTimeToSystemTime(DOUBLE,LPSYSTEMTIME);
-INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME,double*);
-
-HRESULT WINAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
-HRESULT WINAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
-HRESULT WINAPI VarUdateFromDate(DATE,ULONG,UDATE*);
+_Check_return_
+HRESULT
+WINAPI
+VarParseNumFromStr(
+  _In_ OLECHAR*,
+  _In_ LCID,
+  _In_ ULONG,
+  _Out_ NUMPARSE*,
+  _Out_ BYTE*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarNumFromParseNum(
+  _In_ NUMPARSE*,
+  _In_ BYTE*,
+  _In_ ULONG,
+  _Out_ VARIANT*);
+
+INT WINAPI DosDateTimeToVariantTime(_In_ USHORT, _In_ USHORT, _Out_ double*);
+INT WINAPI VariantTimeToDosDateTime(_In_ double, _Out_ USHORT*, _Out_ USHORT*);
+
+INT WINAPI VariantTimeToSystemTime(_In_ DOUBLE, _Out_ LPSYSTEMTIME);
+INT WINAPI SystemTimeToVariantTime(_In_ LPSYSTEMTIME, _Out_ double*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarDateFromUdate(
+  _In_ UDATE*,
+  _In_ ULONG,
+  _Out_ DATE*);
+
+HRESULT
+WINAPI
+VarDateFromUdateEx(
+  _In_ UDATE*,
+  _In_ LCID,
+  _In_ ULONG,
+  _Out_ DATE*);
+
+_Check_return_
+HRESULT
+WINAPI
+VarUdateFromDate(
+  _In_ DATE,
+  _In_ ULONG,
+  _Out_ UDATE*);
 
 /* Variant formatting */
-HRESULT WINAPI VarWeekdayName(int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarMonthName(int,int,ULONG,BSTR*);
-HRESULT WINAPI GetAltMonthNames(LCID,LPOLESTR**);
-
-HRESULT WINAPI VarFormat(LPVARIANT,LPOLESTR,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatCurrency(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatDateTime(LPVARIANT,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatNumber(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-HRESULT WINAPI VarFormatPercent(LPVARIANT,int,int,int,int,ULONG,BSTR*);
-
-HRESULT WINAPI VarFormatFromTokens(LPVARIANT,LPOLESTR,LPBYTE,ULONG,BSTR*,LCID);
-HRESULT WINAPI VarTokenizeFormatString(LPOLESTR,LPBYTE,int,int,int,LCID,int*);
+HRESULT WINAPI VarWeekdayName(int, int, int, ULONG, _Out_ BSTR*);
+HRESULT WINAPI VarMonthName(int, int, ULONG, _Out_ BSTR*);
+
+_Check_return_
+HRESULT
+WINAPI
+GetAltMonthNames(
+  LCID,
+  _Outptr_result_buffer_maybenull_(13) LPOLESTR**);
+
+HRESULT
+WINAPI
+VarFormat(
+  _In_ LPVARIANT,
+  _In_opt_ LPOLESTR,
+  int,
+  int,
+  ULONG,
+  _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatCurrency(
+  _In_ LPVARIANT,
+  int,
+  int,
+  int,
+  int,
+  ULONG,
+  _Out_ BSTR*);
+
+HRESULT WINAPI VarFormatDateTime(_In_ LPVARIANT, int, ULONG, _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatNumber(
+  _In_ LPVARIANT,
+  int,
+  int,
+  int,
+  int,
+  ULONG,
+  _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatPercent(
+  _In_ LPVARIANT,
+  int,
+  int,
+  int,
+  int,
+  ULONG,
+  _Out_ BSTR*);
+
+HRESULT
+WINAPI
+VarFormatFromTokens(
+  _In_ LPVARIANT,
+  _In_opt_ LPOLESTR,
+  LPBYTE,
+  ULONG,
+  _Out_ BSTR*,
+  LCID);
+
+HRESULT
+WINAPI
+VarTokenizeFormatString(
+  _In_opt_ LPOLESTR,
+  _Inout_ LPBYTE,
+  int,
+  int,
+  int,
+  LCID,
+  _In_opt_ int*);
 
 
 /*
@@ -709,14 +923,66 @@ typedef enum tagREGKIND
     REGKIND_NONE
 } REGKIND;
 
-HRESULT WINAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*);
-HRESULT WINAPI DispGetIDsOfNames(ITypeInfo*,OLECHAR**,UINT,DISPID*);
-HRESULT WINAPI DispInvoke(void*,ITypeInfo*,DISPID,WORD,DISPPARAMS*,VARIANT*,
-                          EXCEPINFO*,UINT*);
-HRESULT WINAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,ITypeInfo**);
-HRESULT WINAPI CreateStdDispatch(IUnknown*,void*,ITypeInfo*,IUnknown**);
-HRESULT WINAPI DispCallFunc(void*,ULONG_PTR,CALLCONV,VARTYPE,UINT,VARTYPE*,
-                            VARIANTARG**,VARIANT*);
+_Check_return_
+HRESULT
+WINAPI
+DispGetParam(
+  _In_ DISPPARAMS*,
+  UINT,
+  VARTYPE,
+  _Out_ VARIANT*,
+  _Out_opt_ UINT*);
+
+_Check_return_
+HRESULT
+WINAPI
+DispGetIDsOfNames(
+  ITypeInfo*,
+  _In_reads_(cNames) OLECHAR**,
+  UINT cNames,
+  _Out_writes_(cNames) DISPID*);
+
+_Check_return_
+HRESULT
+WINAPI
+DispInvoke(
+  void*,
+  ITypeInfo*,
+  DISPID,
+  WORD,
+  DISPPARAMS*,
+  VARIANT*,
+  EXCEPINFO*,
+  UINT*);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateDispTypeInfo(
+  INTERFACEDATA*,
+  LCID,
+  ITypeInfo**);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateStdDispatch(
+  IUnknown*,
+  void*,
+  ITypeInfo*,
+  IUnknown**);
+
+HRESULT
+WINAPI
+DispCallFunc(
+  void*,
+  ULONG_PTR,
+  CALLCONV,
+  VARTYPE,
+  UINT,
+  VARTYPE*,
+  VARIANTARG**,
+  VARIANT*);
 
 
 /*
@@ -742,14 +1008,62 @@ ULONG WINAPI LHashValOfNameSys(SYSKIND,LCID,LPCOLESTR);
 #define LOAD_TLB_AS_64BIT       0x40
 #define MASK_TO_RESET_TLB_BITS  ~(LOAD_TLB_AS_32BIT|LOAD_TLB_AS_64BIT)
 
-HRESULT WINAPI CreateTypeLib(SYSKIND,const OLECHAR*,ICreateTypeLib**);
-HRESULT WINAPI CreateTypeLib2(SYSKIND,LPCOLESTR,ICreateTypeLib2**);
-HRESULT WINAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,ITypeLib**);
-HRESULT WINAPI LoadTypeLib(const OLECHAR*,ITypeLib**);
-HRESULT WINAPI LoadTypeLibEx(LPCOLESTR,REGKIND,ITypeLib**);
+_Check_return_
+HRESULT
+WINAPI
+CreateTypeLib(
+  SYSKIND,
+  const OLECHAR*,
+  ICreateTypeLib**);
+
+_Check_return_
+HRESULT
+WINAPI
+CreateTypeLib2(
+  SYSKIND,
+  LPCOLESTR,
+  ICreateTypeLib2**);
+
+_Check_return_
+HRESULT
+WINAPI
+LoadRegTypeLib(
+  REFGUID,
+  WORD,
+  WORD,
+  LCID,
+  ITypeLib**);
+
+HRESULT WINAPI LoadTypeLib(_In_z_ const OLECHAR*, ITypeLib**);
+_Check_return_ HRESULT WINAPI LoadTypeLibEx(LPCOLESTR, REGKIND, ITypeLib**);
 HRESULT WINAPI QueryPathOfRegTypeLib(REFGUID,WORD,WORD,LCID,LPBSTR);
-HRESULT WINAPI RegisterTypeLib(ITypeLib*,OLECHAR*,OLECHAR*);
-HRESULT WINAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND);
+
+_Check_return_
+HRESULT
+WINAPI
+RegisterTypeLib(
+  ITypeLib*,
+  _In_ OLECHAR*,
+  _In_opt_ OLECHAR*);
+
+_Check_return_
+HRESULT
+WINAPI
+UnRegisterTypeLib(
+  REFGUID,
+  WORD,
+  WORD,
+  LCID,
+  SYSKIND);
+
+HRESULT
+WINAPI
+RegisterTypeLibForUser(
+  ITypeLib*,
+  _In_ OLECHAR*,
+  _In_opt_ OLECHAR*);
+
+HRESULT WINAPI UnRegisterTypeLibForUser(REFGUID,WORD,WORD,LCID,SYSKIND);
 
 VOID WINAPI ClearCustData(LPCUSTDATA);