Author: akhaldi
Date: Tue Aug 13 15:12:04 2013
New Revision: 59722
URL:
http://svn.reactos.org/svn/reactos?rev=59722&view=rev
Log:
[PSDK]
* Annotate shlwapi.h.
Modified:
trunk/reactos/include/psdk/shlwapi.h
Modified: trunk/reactos/include/psdk/shlwapi.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/shlwapi.h?rev…
==============================================================================
--- trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] (original)
+++ trunk/reactos/include/psdk/shlwapi.h [iso-8859-1] Tue Aug 13 15:12:04 2013
@@ -35,55 +35,205 @@
/* Registry functions */
-DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
-DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+DWORD WINAPI SHDeleteEmptyKeyA(_In_ HKEY, _In_opt_ LPCSTR);
+DWORD WINAPI SHDeleteEmptyKeyW(_In_ HKEY, _In_opt_ LPCWSTR);
#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
-DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
-DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
+DWORD WINAPI SHDeleteKeyA(_In_ HKEY, _In_opt_ LPCSTR);
+DWORD WINAPI SHDeleteKeyW(_In_ HKEY, _In_opt_ LPCWSTR);
#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
-DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
-DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+DWORD WINAPI SHDeleteValueA(_In_ HKEY, _In_opt_ LPCSTR, _In_ LPCSTR);
+DWORD WINAPI SHDeleteValueW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ LPCWSTR);
#define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
-DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
-DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+DWORD
+WINAPI
+SHGetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_opt_(*pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+DWORD
+WINAPI
+SHGetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_opt_(*pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHGetValue WINELIB_NAME_AW(SHGetValue)
-DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
-DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+DWORD
+WINAPI
+SHSetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPCVOID,
+ _In_ DWORD cbData);
+
+DWORD
+WINAPI
+SHSetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPCVOID,
+ _In_ DWORD cbData);
+
#define SHSetValue WINELIB_NAME_AW(SHSetValue)
-DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
-DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+DWORD
+WINAPI
+SHQueryValueExA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _Reserved_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+DWORD
+WINAPI
+SHQueryValueExW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _Reserved_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
-LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
-LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+LONG
+WINAPI
+SHEnumKeyExA(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_(*pcchName) LPSTR,
+ _Inout_ LPDWORD pcchName);
+
+LONG
+WINAPI
+SHEnumKeyExW(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_(*pcchName) LPWSTR,
+ _Inout_ LPDWORD pcchName);
+
#define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
-LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
-LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+LONG
+WINAPI
+SHEnumValueA(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchValueName) LPSTR,
+ _Inout_opt_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+LONG
+WINAPI
+SHEnumValueW(
+ _In_ HKEY,
+ _In_ DWORD,
+ _Out_writes_opt_(*pcchValueName) LPWSTR,
+ _Inout_opt_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
-LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
-LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+LONG
+WINAPI
+SHQueryInfoKeyA(
+ _In_ HKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD);
+
+LONG
+WINAPI
+SHQueryInfoKeyW(
+ _In_ HKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD);
+
#define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
-DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
-DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+DWORD
+WINAPI
+SHRegGetPathA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+SHRegGetPathW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_ DWORD);
+
#define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
-DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
-DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+DWORD
+WINAPI
+SHRegSetPathA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD);
+
+DWORD
+WINAPI
+SHRegSetPathW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD);
+
#define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
-DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
-DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+DWORD
+WINAPI
+SHCopyKeyA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_ HKEY,
+ _Reserved_ DWORD);
+
+DWORD
+WINAPI
+SHCopyKeyW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_ HKEY,
+ _Reserved_ DWORD);
+
#define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
-HKEY WINAPI SHRegDuplicateHKey(HKEY);
+HKEY WINAPI SHRegDuplicateHKey(_In_ HKEY);
/* SHRegGetValue flags */
typedef INT SRRF;
@@ -109,8 +259,28 @@
#define SRRF_ZEROONFAILURE 0x20000000
#define SRRF_NOVIRT 0x40000000
-LSTATUS WINAPI SHRegGetValueA(HKEY,LPCSTR,LPCSTR,SRRF,LPDWORD,LPVOID,LPDWORD);
-LSTATUS WINAPI SHRegGetValueW(HKEY,LPCWSTR,LPCWSTR,SRRF,LPDWORD,LPVOID,LPDWORD);
+LSTATUS
+WINAPI
+SHRegGetValueA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ SRRF,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
+LSTATUS
+WINAPI
+SHRegGetValueW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ SRRF,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData);
+
#define SHRegGetValue WINELIB_NAME_AW(SHRegGetValue)
/* Undocumented registry functions */
@@ -147,65 +317,263 @@
typedef HANDLE HUSKEY;
typedef HUSKEY *PHUSKEY;
-LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
-LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+LONG
+WINAPI
+SHRegCreateUSKeyA(
+ _In_ LPCSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ DWORD);
+
+LONG
+WINAPI
+SHRegCreateUSKeyW(
+ _In_ LPCWSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ DWORD);
+
#define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
-LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
-LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+LONG
+WINAPI
+SHRegOpenUSKeyA(
+ _In_ LPCSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ BOOL);
+
+LONG
+WINAPI
+SHRegOpenUSKeyW(
+ _In_ LPCWSTR,
+ _In_ REGSAM,
+ _In_opt_ HUSKEY,
+ _Out_ PHUSKEY,
+ _In_ BOOL);
+
#define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
-LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
-LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
+LONG
+WINAPI
+SHRegQueryUSValueA(
+ _In_ HUSKEY,
+ _In_opt_ LPCSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_opt_ DWORD dwDefaultDataSize);
+
+LONG
+WINAPI
+SHRegQueryUSValueW(
+ _In_ HUSKEY,
+ _In_opt_ LPCWSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_opt_ DWORD dwDefaultDataSize);
+
#define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
-LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
-LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG
+WINAPI
+SHRegWriteUSValueA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_(cbData) LPVOID,
+ _In_ DWORD cbData,
+ _In_ DWORD);
+
+LONG
+WINAPI
+SHRegWriteUSValueW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_(cbData) LPVOID,
+ _In_ DWORD cbData,
+ _In_ DWORD);
+
#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
-LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
-LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+LONG
+WINAPI
+SHRegDeleteUSValueA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ SHREGDEL_FLAGS);
+
+LONG
+WINAPI
+SHRegDeleteUSValueW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ SHREGDEL_FLAGS);
+
#define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
-LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
-LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+LONG
+WINAPI
+SHRegDeleteEmptyUSKeyA(
+ _In_ HUSKEY,
+ _In_ LPCSTR,
+ _In_ SHREGDEL_FLAGS);
+
+LONG
+WINAPI
+SHRegDeleteEmptyUSKeyW(
+ _In_ HUSKEY,
+ _In_ LPCWSTR,
+ _In_ SHREGDEL_FLAGS);
+
#define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
-LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegEnumUSKeyA(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchName, *pcchName) LPSTR,
+ _Inout_ LPDWORD pcchName,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegEnumUSKeyW(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchName, *pcchName) LPWSTR,
+ _Inout_ LPDWORD pcchName,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
-LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
- LPVOID,LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
- LPVOID,LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegEnumUSValueA(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchValueName, *pcchValueName) LPSTR,
+ _Inout_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegEnumUSValueW(
+ _In_ HUSKEY,
+ _In_ DWORD,
+ _Out_writes_to_(*pcchValueName, *pcchValueName) LPWSTR,
+ _Inout_ LPDWORD pcchValueName,
+ _Out_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
-LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
- LPDWORD,SHREGENUM_FLAGS);
-LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
- LPDWORD,SHREGENUM_FLAGS);
+LONG
+WINAPI
+SHRegQueryInfoUSKeyA(
+ _In_ HUSKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _In_ SHREGENUM_FLAGS);
+
+LONG
+WINAPI
+SHRegQueryInfoUSKeyW(
+ _In_ HUSKEY,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _Out_opt_ LPDWORD,
+ _In_ SHREGENUM_FLAGS);
+
#define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
-LONG WINAPI SHRegCloseUSKey(HUSKEY);
-
-LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
-LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
- BOOL,LPVOID,DWORD);
+LONG WINAPI SHRegCloseUSKey(_In_ HUSKEY);
+
+LONG
+WINAPI
+SHRegGetUSValueA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_ DWORD dwDefaultDataSize);
+
+LONG
+WINAPI
+SHRegGetUSValueW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Inout_opt_ LPDWORD,
+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) LPVOID,
+ _Inout_opt_ LPDWORD pcbData,
+ _In_ BOOL,
+ _In_reads_bytes_opt_(dwDefaultDataSize) LPVOID,
+ _In_ DWORD dwDefaultDataSize);
+
#define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
-LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
-LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+LONG
+WINAPI
+SHRegSetUSValueA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPVOID,
+ _In_opt_ DWORD cbData,
+ _In_opt_ DWORD);
+
+LONG
+WINAPI
+SHRegSetUSValueW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_reads_bytes_opt_(cbData) LPVOID,
+ _In_opt_ DWORD cbData,
+ _In_opt_ DWORD);
+
#define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
-BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
-BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+BOOL
+WINAPI
+SHRegGetBoolUSValueA(
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ BOOL,
+ _In_ BOOL);
+
+BOOL
+WINAPI
+SHRegGetBoolUSValueW(
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ BOOL,
+ _In_ BOOL);
+
#define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
-int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int);
+int WINAPI SHRegGetIntW(_In_ HKEY, _In_opt_ LPCWSTR, _In_ int);
/* IQueryAssociation and helpers */
enum
@@ -282,11 +650,11 @@
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IQueryAssociations methods ***/
- STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd)
PURE;
- STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR
pszOut, DWORD * pcchOut) PURE;
- STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY *
phkeyOut) PURE;
- STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID
pvOut, DWORD * pcbOut) PURE;
- STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra,
REFIID riid, LPVOID * ppvOut) PURE;
+ STDMETHOD(Init)(THIS_ _In_ ASSOCF flags, _In_opt_ LPCWSTR pszAssoc, _In_opt_ HKEY
hkProgid, _In_opt_ HWND hwnd) PURE;
+ STDMETHOD(GetString)(THIS_ _In_ ASSOCF flags, _In_ ASSOCSTR str, _In_opt_ LPCWSTR
pszExtra, _Out_writes_opt_(*pcchOut) LPWSTR pszOut, _Inout_ DWORD *pcchOut) PURE;
+ STDMETHOD(GetKey)(THIS_ _In_ ASSOCF flags, _In_ ASSOCKEY key, _In_opt_ LPCWSTR
pszExtra, _Out_ HKEY *phkeyOut) PURE;
+ STDMETHOD(GetData)(THIS_ _In_ ASSOCF flags, _In_ ASSOCDATA data, _In_opt_ LPCWSTR
pszExtra, _Out_writes_bytes_opt_(*pcbOut) LPVOID pvOut, _Inout_opt_ DWORD *pcbOut) PURE;
+ STDMETHOD(GetEnum)(THIS_ _In_ ASSOCF flags, _In_ ASSOCENUM assocenum, _In_opt_
LPCWSTR pszExtra, _In_ REFIID riid, _Outptr_ LPVOID *ppvOut) PURE;
};
#undef INTERFACE
@@ -301,30 +669,100 @@
#define IQueryAssociations_GetEnum(p,a,b,c,d,e)
(p)->lpVtbl->GetEnum(p,a,b,c,d,e)
#endif
-HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*);
-
-HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD);
-HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD);
+HRESULT WINAPI AssocCreate(_In_ CLSID, _In_ REFIID, _Outptr_ LPVOID*);
+
+HRESULT
+WINAPI
+AssocQueryStringA(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_writes_opt_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut);
+
+HRESULT
+WINAPI
+AssocQueryStringW(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_writes_opt_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut);
+
#define AssocQueryString WINELIB_NAME_AW(AssocQueryString)
-HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD);
-HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD);
+HRESULT
+WINAPI
+AssocQueryStringByKeyA(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _Out_writes_opt_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut);
+
+HRESULT
+WINAPI
+AssocQueryStringByKeyW(
+ _In_ ASSOCF,
+ _In_ ASSOCSTR,
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _Out_writes_opt_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut);
+
#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey)
-HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY);
-HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY);
+HRESULT
+WINAPI
+AssocQueryKeyA(
+ _In_ ASSOCF,
+ _In_ ASSOCKEY,
+ _In_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _Out_ PHKEY);
+
+HRESULT
+WINAPI
+AssocQueryKeyW(
+ _In_ ASSOCF,
+ _In_ ASSOCKEY,
+ _In_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _Out_ PHKEY);
+
#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey)
-BOOL WINAPI AssocIsDangerous(LPCWSTR);
+BOOL WINAPI AssocIsDangerous(_In_ LPCWSTR);
#endif /* NO_SHLWAPI_REG */
-void WINAPI IUnknown_Set(IUnknown **ppunk, IUnknown *punk);
-void WINAPI IUnknown_AtomicRelease(IUnknown **punk);
-HRESULT WINAPI IUnknown_GetWindow(IUnknown *punk, HWND *phwnd);
-HRESULT WINAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite);
-HRESULT WINAPI IUnknown_GetSite(IUnknown *punk, REFIID riid, void **ppv);
-HRESULT WINAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid,
void **ppvOut);
+void WINAPI IUnknown_Set(_Inout_ IUnknown **ppunk, _In_opt_ IUnknown *punk);
+void WINAPI IUnknown_AtomicRelease(_Inout_opt_ IUnknown **punk);
+HRESULT WINAPI IUnknown_GetWindow(_In_ IUnknown *punk, _Out_ HWND *phwnd);
+
+HRESULT
+WINAPI
+IUnknown_SetSite(
+ _In_ IUnknown *punk,
+ _In_opt_ IUnknown *punkSite);
+
+HRESULT
+WINAPI
+IUnknown_GetSite(
+ _In_ IUnknown *punk,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
+
+HRESULT
+WINAPI
+IUnknown_QueryService(
+ _In_opt_ IUnknown *punk,
+ _In_ REFGUID guidService,
+ _In_ REFIID riid,
+ _Outptr_ void **ppvOut);
/* Path functions */
#ifndef NO_SHLWAPI_PATH
@@ -336,230 +774,366 @@
#define GCT_WILD 0x4
#define GCT_SEPARATOR 0x8
-LPSTR WINAPI PathAddBackslashA(LPSTR);
-LPWSTR WINAPI PathAddBackslashW(LPWSTR);
+LPSTR WINAPI PathAddBackslashA(_Inout_updates_(MAX_PATH) LPSTR);
+LPWSTR WINAPI PathAddBackslashW(_Inout_updates_(MAX_PATH) LPWSTR);
#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
-BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
-BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
+BOOL
+WINAPI
+PathAddExtensionA(
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_opt_ LPCSTR);
+
+BOOL
+WINAPI
+PathAddExtensionW(
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_opt_ LPCWSTR);
+
#define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
-BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
-BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
+BOOL WINAPI PathAppendA(_Inout_updates_(MAX_PATH) LPSTR, _In_ LPCSTR);
+BOOL WINAPI PathAppendW(_Inout_updates_(MAX_PATH) LPWSTR, _In_ LPCWSTR);
#define PathAppend WINELIB_NAME_AW(PathAppend)
-LPSTR WINAPI PathBuildRootA(LPSTR,int);
-LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
+LPSTR WINAPI PathBuildRootA(_Out_writes_(4) LPSTR, int);
+LPWSTR WINAPI PathBuildRootW(_Out_writes_(4) LPWSTR, int);
#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
-BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
-BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
+BOOL WINAPI PathCanonicalizeA(_Out_writes_(MAX_PATH) LPSTR, _In_ LPCSTR);
+BOOL WINAPI PathCanonicalizeW(_Out_writes_(MAX_PATH) LPWSTR, _In_ LPCWSTR);
#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
-LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
-LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+LPSTR
+WINAPI
+PathCombineA(
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR);
+
+LPWSTR
+WINAPI
+PathCombineW(
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR);
+
#define PathCombine WINELIB_NAME_AW(PathCombine)
-BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
-BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
+BOOL
+WINAPI
+PathCompactPathA(
+ _In_opt_ HDC,
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_ UINT);
+
+BOOL
+WINAPI
+PathCompactPathW(
+ _In_opt_ HDC,
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_ UINT);
+
#define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
-BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
-BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+BOOL
+WINAPI
+PathCompactPathExA(
+ _Out_writes_(cchMax) LPSTR,
+ _In_ LPCSTR,
+ _In_ UINT cchMax,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+PathCompactPathExW(
+ _Out_writes_(cchMax) LPWSTR,
+ _In_ LPCWSTR,
+ _In_ UINT cchMax,
+ _In_ DWORD);
+
#define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
-int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
-int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+int
+WINAPI
+PathCommonPrefixA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_opt_(MAX_PATH) LPSTR);
+
+int
+WINAPI
+PathCommonPrefixW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_opt_(MAX_PATH) LPWSTR);
+
#define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
-HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+PathCreateFromUrlA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchPath, *pcchPath) LPSTR,
+ _Inout_ LPDWORD pcchPath,
+ DWORD);
+
+HRESULT
+WINAPI
+PathCreateFromUrlW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchPath, *pcchPath) LPWSTR,
+ _Inout_ LPDWORD pcchPath,
+ DWORD);
+
#define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl)
-HRESULT WINAPI PathCreateFromUrlAlloc(LPCWSTR,LPWSTR*,DWORD);
-
-BOOL WINAPI PathFileExistsA(LPCSTR);
-BOOL WINAPI PathFileExistsW(LPCWSTR);
+HRESULT WINAPI PathCreateFromUrlAlloc(_In_ LPCWSTR, _Outptr_ LPWSTR*, DWORD);
+
+BOOL WINAPI PathFileExistsA(_In_ LPCSTR);
+BOOL WINAPI PathFileExistsW(_In_ LPCWSTR);
#define PathFileExists WINELIB_NAME_AW(PathFileExists)
BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR,DWORD*);
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR,DWORD*);
#define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes)
-LPSTR WINAPI PathFindExtensionA(LPCSTR);
-LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
+LPSTR WINAPI PathFindExtensionA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindExtensionW(_In_ LPCWSTR);
#define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
-LPSTR WINAPI PathFindFileNameA(LPCSTR);
-LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
+LPSTR WINAPI PathFindFileNameA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindFileNameW(_In_ LPCWSTR);
#define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
-LPSTR WINAPI PathFindNextComponentA(LPCSTR);
-LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
+LPSTR WINAPI PathFindNextComponentA(_In_ LPCSTR);
+LPWSTR WINAPI PathFindNextComponentW(_In_ LPCWSTR);
#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
-BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
-BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
+BOOL WINAPI PathFindOnPathA(_Inout_updates_(MAX_PATH) LPSTR, _In_opt_ LPCSTR*);
+BOOL WINAPI PathFindOnPathW(_Inout_updates_(MAX_PATH) LPWSTR, _In_opt_ LPCWSTR*);
#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
-LPSTR WINAPI PathGetArgsA(LPCSTR);
-LPWSTR WINAPI PathGetArgsW(LPCWSTR);
+LPSTR WINAPI PathGetArgsA(_In_ LPCSTR);
+LPWSTR WINAPI PathGetArgsW(_In_ LPCWSTR);
#define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
-UINT WINAPI PathGetCharTypeA(UCHAR);
-UINT WINAPI PathGetCharTypeW(WCHAR);
+UINT WINAPI PathGetCharTypeA(_In_ UCHAR);
+UINT WINAPI PathGetCharTypeW(_In_ WCHAR);
#define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
-int WINAPI PathGetDriveNumberA(LPCSTR);
-int WINAPI PathGetDriveNumberW(LPCWSTR);
+int WINAPI PathGetDriveNumberA(_In_ LPCSTR);
+int WINAPI PathGetDriveNumberW(_In_ LPCWSTR);
#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
-BOOL WINAPI PathIsDirectoryA(LPCSTR);
-BOOL WINAPI PathIsDirectoryW(LPCWSTR);
+BOOL WINAPI PathIsDirectoryA(_In_ LPCSTR);
+BOOL WINAPI PathIsDirectoryW(_In_ LPCWSTR);
#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
-BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
-BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
+BOOL WINAPI PathIsDirectoryEmptyA(_In_ LPCSTR);
+BOOL WINAPI PathIsDirectoryEmptyW(_In_ LPCWSTR);
#define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
-BOOL WINAPI PathIsFileSpecA(LPCSTR);
-BOOL WINAPI PathIsFileSpecW(LPCWSTR);
+BOOL WINAPI PathIsFileSpecA(_In_ LPCSTR);
+BOOL WINAPI PathIsFileSpecW(_In_ LPCWSTR);
#define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
-BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsPrefixA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsPrefixW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
-BOOL WINAPI PathIsRelativeA(LPCSTR);
-BOOL WINAPI PathIsRelativeW(LPCWSTR);
+BOOL WINAPI PathIsRelativeA(_In_ LPCSTR);
+BOOL WINAPI PathIsRelativeW(_In_ LPCWSTR);
#define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
-BOOL WINAPI PathIsRootA(LPCSTR);
-BOOL WINAPI PathIsRootW(LPCWSTR);
+BOOL WINAPI PathIsRootA(_In_ LPCSTR);
+BOOL WINAPI PathIsRootW(_In_ LPCWSTR);
#define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
-BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsSameRootA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsSameRootW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
-BOOL WINAPI PathIsUNCA(LPCSTR);
-BOOL WINAPI PathIsUNCW(LPCWSTR);
+BOOL WINAPI PathIsUNCA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCW(_In_ LPCWSTR);
#define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
-BOOL WINAPI PathIsUNCServerA(LPCSTR);
-BOOL WINAPI PathIsUNCServerW(LPCWSTR);
+BOOL WINAPI PathIsUNCServerA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCServerW(_In_ LPCWSTR);
#define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
-BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
-BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
+BOOL WINAPI PathIsUNCServerShareA(_In_ LPCSTR);
+BOOL WINAPI PathIsUNCServerShareW(_In_ LPCWSTR);
#define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
-BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
-BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathIsContentTypeA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathIsContentTypeW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
-BOOL WINAPI PathIsURLA(LPCSTR);
-BOOL WINAPI PathIsURLW(LPCWSTR);
+BOOL WINAPI PathIsURLA(_In_ LPCSTR);
+BOOL WINAPI PathIsURLW(_In_ LPCWSTR);
#define PathIsURL WINELIB_NAME_AW(PathIsURL)
-BOOL WINAPI PathMakePrettyA(LPSTR);
-BOOL WINAPI PathMakePrettyW(LPWSTR);
+BOOL WINAPI PathMakePrettyA(_Inout_ LPSTR);
+BOOL WINAPI PathMakePrettyW(_Inout_ LPWSTR);
#define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
-BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
-BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
+BOOL WINAPI PathMatchSpecA(_In_ LPCSTR, _In_ LPCSTR);
+BOOL WINAPI PathMatchSpecW(_In_ LPCWSTR, _In_ LPCWSTR);
#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
-int WINAPI PathParseIconLocationA(LPSTR);
-int WINAPI PathParseIconLocationW(LPWSTR);
+int WINAPI PathParseIconLocationA(_Inout_ LPSTR);
+int WINAPI PathParseIconLocationW(_Inout_ LPWSTR);
#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
-VOID WINAPI PathQuoteSpacesA(LPSTR);
-VOID WINAPI PathQuoteSpacesW(LPWSTR);
+VOID WINAPI PathQuoteSpacesA(_Inout_updates_(MAX_PATH) LPSTR);
+VOID WINAPI PathQuoteSpacesW(_Inout_updates_(MAX_PATH) LPWSTR);
#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
-BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
-BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
+BOOL
+WINAPI
+PathRelativePathToA(
+ _Out_writes_(MAX_PATH) LPSTR,
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _In_ LPCSTR,
+ _In_ DWORD);
+
+BOOL
+WINAPI
+PathRelativePathToW(
+ _Out_writes_(MAX_PATH) LPWSTR,
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_ LPCWSTR,
+ _In_ DWORD);
+
#define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
-VOID WINAPI PathRemoveArgsA(LPSTR);
-VOID WINAPI PathRemoveArgsW(LPWSTR);
+VOID WINAPI PathRemoveArgsA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveArgsW(_Inout_ LPWSTR);
#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
-LPSTR WINAPI PathRemoveBackslashA(LPSTR);
-LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
+LPSTR WINAPI PathRemoveBackslashA(_Inout_ LPSTR);
+LPWSTR WINAPI PathRemoveBackslashW(_Inout_ LPWSTR);
#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
-VOID WINAPI PathRemoveBlanksA(LPSTR);
-VOID WINAPI PathRemoveBlanksW(LPWSTR);
+VOID WINAPI PathRemoveBlanksA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveBlanksW(_Inout_ LPWSTR);
#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
-VOID WINAPI PathRemoveExtensionA(LPSTR);
-VOID WINAPI PathRemoveExtensionW(LPWSTR);
+VOID WINAPI PathRemoveExtensionA(_Inout_ LPSTR);
+VOID WINAPI PathRemoveExtensionW(_Inout_ LPWSTR);
#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
-BOOL WINAPI PathRemoveFileSpecA(LPSTR);
-BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
+BOOL WINAPI PathRemoveFileSpecA(_Inout_ LPSTR);
+BOOL WINAPI PathRemoveFileSpecW(_Inout_ LPWSTR);
#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
-BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
-BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
+BOOL
+WINAPI
+PathRenameExtensionA(
+ _Inout_updates_(MAX_PATH) LPSTR,
+ _In_ LPCSTR);
+
+BOOL
+WINAPI
+PathRenameExtensionW(
+ _Inout_updates_(MAX_PATH) LPWSTR,
+ _In_ LPCWSTR);
+
#define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
-BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
-BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+BOOL
+WINAPI
+PathSearchAndQualifyA(
+ _In_ LPCSTR,
+ _Out_writes_(cchBuf) LPSTR,
+ _In_ UINT cchBuf);
+
+BOOL
+WINAPI
+PathSearchAndQualifyW(
+ _In_ LPCWSTR,
+ _Out_writes_(cchBuf) LPWSTR,
+ _In_ UINT cchBuf);
+
#define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
-VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
-VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
+VOID WINAPI PathSetDlgItemPathA(_In_ HWND, int, LPCSTR);
+VOID WINAPI PathSetDlgItemPathW(_In_ HWND, int, LPCWSTR);
#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
-LPSTR WINAPI PathSkipRootA(LPCSTR);
-LPWSTR WINAPI PathSkipRootW(LPCWSTR);
+LPSTR WINAPI PathSkipRootA(_In_ LPCSTR);
+LPWSTR WINAPI PathSkipRootW(_In_ LPCWSTR);
#define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
-VOID WINAPI PathStripPathA(LPSTR);
-VOID WINAPI PathStripPathW(LPWSTR);
+VOID WINAPI PathStripPathA(_Inout_ LPSTR);
+VOID WINAPI PathStripPathW(_Inout_ LPWSTR);
#define PathStripPath WINELIB_NAME_AW(PathStripPath)
-BOOL WINAPI PathStripToRootA(LPSTR);
-BOOL WINAPI PathStripToRootW(LPWSTR);
+BOOL WINAPI PathStripToRootA(_Inout_ LPSTR);
+BOOL WINAPI PathStripToRootW(_Inout_ LPWSTR);
#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
-VOID WINAPI PathUnquoteSpacesA(LPSTR);
-VOID WINAPI PathUnquoteSpacesW(LPWSTR);
+VOID WINAPI PathUnquoteSpacesA(_Inout_ LPSTR);
+VOID WINAPI PathUnquoteSpacesW(_Inout_ LPWSTR);
#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
-BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
-BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
+BOOL WINAPI PathMakeSystemFolderA(_In_ LPCSTR);
+BOOL WINAPI PathMakeSystemFolderW(_In_ LPCWSTR);
#define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
-BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
-BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
+BOOL WINAPI PathUnmakeSystemFolderA(_In_ LPCSTR);
+BOOL WINAPI PathUnmakeSystemFolderW(_In_ LPCWSTR);
#define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
-BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
-BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
+BOOL WINAPI PathIsSystemFolderA(_In_opt_ LPCSTR, _In_ DWORD);
+BOOL WINAPI PathIsSystemFolderW(_In_opt_ LPCWSTR, _In_ DWORD);
#define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
-BOOL WINAPI PathIsNetworkPathA(LPCSTR);
-BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
+BOOL WINAPI PathIsNetworkPathA(_In_ LPCSTR);
+BOOL WINAPI PathIsNetworkPathW(_In_ LPCWSTR);
#define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
-BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
-BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
+BOOL WINAPI PathIsLFNFileSpecA(_In_ LPCSTR);
+BOOL WINAPI PathIsLFNFileSpecW(_In_ LPCWSTR);
#define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
-LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
-LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
+LPCSTR
+WINAPI
+PathFindSuffixArrayA(
+ _In_ LPCSTR,
+ _In_reads_(iArraySize) LPCSTR *,
+ int iArraySize);
+
+LPCWSTR
+WINAPI
+PathFindSuffixArrayW(
+ _In_ LPCWSTR,
+ _In_reads_(iArraySize) LPCWSTR *,
+ int iArraySize);
+
#define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
-VOID WINAPI PathUndecorateA(LPSTR);
-VOID WINAPI PathUndecorateW(LPWSTR);
+VOID WINAPI PathUndecorateA(_Inout_ LPSTR);
+VOID WINAPI PathUndecorateW(_Inout_ LPWSTR);
#define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
-BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
-BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+BOOL
+WINAPI
+PathUnExpandEnvStringsA(
+ _In_ LPCSTR,
+ _Out_writes_(cchBuf) LPSTR,
+ _In_ UINT cchBuf);
+
+BOOL
+WINAPI
+PathUnExpandEnvStringsW(
+ _In_ LPCWSTR,
+ _Out_writes_(cchBuf) LPWSTR,
+ _In_ UINT cchBuf);
+
#define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
/* Url functions */
@@ -650,24 +1224,82 @@
#define URL_ESCAPE_SEGMENT_ONLY 0x00002000
#define URL_ESCAPE_PERCENT 0x00001000
-HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlApplySchemeA(
+ _In_ LPCSTR,
+ _Out_writes_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlApplySchemeW(
+ _In_ LPCWSTR,
+ _Out_writes_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD);
+
#define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
-HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCanonicalizeA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPSTR,
+ _Inout_ LPDWORD pcchCanonicalized,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCanonicalizeW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchCanonicalized, *pcchCanonicalized) LPWSTR,
+ _Inout_ LPDWORD pcchCanonicalized,
+ DWORD);
+
#define UrlCanonicalize WINELIB_NAME_AW(UrlCanonicalize)
-HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCombineA(
+ _In_ LPCSTR,
+ _In_ LPCSTR,
+ _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPSTR,
+ _Inout_ LPDWORD pcchCombined,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCombineW(
+ _In_ LPCWSTR,
+ _In_ LPCWSTR,
+ _Out_writes_to_opt_(*pcchCombined, *pcchCombined) LPWSTR,
+ _Inout_ LPDWORD pcchCombined,
+ DWORD);
+
#define UrlCombine WINELIB_NAME_AW(UrlCombine)
-INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
-INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+INT WINAPI UrlCompareA(_In_ LPCSTR, _In_ LPCSTR, BOOL);
+INT WINAPI UrlCompareW(_In_ LPCWSTR, _In_ LPCWSTR, BOOL);
#define UrlCompare WINELIB_NAME_AW(UrlCompare)
-HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlEscapeA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPSTR,
+ _Inout_ LPDWORD pcchEscaped,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlEscapeW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchEscaped, *pcchEscaped) LPWSTR,
+ _Inout_ LPDWORD pcchEscaped,
+ DWORD);
+
#define UrlEscape WINELIB_NAME_AW(UrlEscape)
#define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
@@ -676,38 +1308,86 @@
URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
#define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
-LPCSTR WINAPI UrlGetLocationA(LPCSTR);
-LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
+LPCSTR WINAPI UrlGetLocationA(_In_ LPCSTR);
+LPCWSTR WINAPI UrlGetLocationW(_In_ LPCWSTR);
#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
-HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
-HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+HRESULT
+WINAPI
+UrlGetPartA(
+ _In_ LPCSTR,
+ _Out_writes_(*pcchOut) LPSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlGetPartW(
+ _In_ LPCWSTR,
+ _Out_writes_(*pcchOut) LPWSTR,
+ _Inout_ LPDWORD pcchOut,
+ DWORD,
+ DWORD);
+
#define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
-HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD);
-
-HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD);
-HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD);
+HRESULT
+WINAPI
+HashData(
+ _In_reads_bytes_(cbData) const unsigned char *,
+ DWORD cbData,
+ _Out_writes_bytes_(cbHash) unsigned char *lpDest,
+ DWORD cbHash);
+
+HRESULT
+WINAPI
+UrlHashA(
+ _In_ LPCSTR,
+ _Out_writes_bytes_(cbHash) unsigned char *,
+ DWORD cbHash);
+
+HRESULT
+WINAPI
+UrlHashW(
+ _In_ LPCWSTR,
+ _Out_writes_bytes_(cbHash) unsigned char *,
+ DWORD cbHash);
+
#define UrlHash WINELIB_NAME_AW(UrlHash)
-BOOL WINAPI UrlIsA(LPCSTR,URLIS);
-BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
+BOOL WINAPI UrlIsA(_In_ LPCSTR, URLIS);
+BOOL WINAPI UrlIsW(_In_ LPCWSTR, URLIS);
#define UrlIs WINELIB_NAME_AW(UrlIs)
-BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
-BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
+BOOL WINAPI UrlIsNoHistoryA(_In_ LPCSTR);
+BOOL WINAPI UrlIsNoHistoryW(_In_ LPCWSTR);
#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
-BOOL WINAPI UrlIsOpaqueA(LPCSTR);
-BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
+BOOL WINAPI UrlIsOpaqueA(_In_ LPCSTR);
+BOOL WINAPI UrlIsOpaqueW(_In_ LPCWSTR);
#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
#define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
#define UrlIsFileUrlW(x) UrlIsW(x, URLIS_FILEURL)
#define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
-HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlUnescapeA(
+ _Inout_ LPSTR,
+ _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPSTR,
+ _Inout_opt_ LPDWORD pcchUnescaped,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlUnescapeW(
+ _Inout_ LPWSTR,
+ _Out_writes_to_opt_(*pcchUnescaped, *pcchUnescaped) LPWSTR,
+ _Inout_opt_ LPDWORD pcchUnescaped,
+ DWORD);
+
#define UrlUnescape WINELIB_NAME_AW(UrlUnescape)
#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
@@ -716,8 +1396,22 @@
y | URL_UNESCAPE_INPLACE)
#define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace)
-HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
-HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+HRESULT
+WINAPI
+UrlCreateFromPathA(
+ _In_ LPCSTR,
+ _Out_writes_to_(*pcchUrl, *pcchUrl) LPSTR,
+ _Inout_ LPDWORD pcchUrl,
+ DWORD);
+
+HRESULT
+WINAPI
+UrlCreateFromPathW(
+ _In_ LPCWSTR,
+ _Out_writes_to_(*pcchUrl, *pcchUrl) LPWSTR,
+ _Inout_ LPDWORD pcchUrl,
+ DWORD);
+
#define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath)
typedef struct tagPARSEDURLA {
@@ -738,8 +1432,8 @@
UINT nScheme;
} PARSEDURLW, *PPARSEDURLW;
-HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu);
-HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu);
+HRESULT WINAPI ParseURLA(_In_ LPCSTR pszUrl, _Inout_ PARSEDURLA *ppu);
+HRESULT WINAPI ParseURLW(_In_ LPCWSTR pszUrl, _Inout_ PARSEDURLW *ppu);
#define ParseURL WINELIB_NAME_AW(ParseUrl)
#endif /* NO_SHLWAPI_PATH */
@@ -756,74 +1450,110 @@
BOOL WINAPI ChrCmpIW (WCHAR,WCHAR);
#define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
-INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
-INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
+INT WINAPI StrCSpnA(_In_ LPCSTR, _In_ LPCSTR);
+INT WINAPI StrCSpnW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCSpn WINELIB_NAME_AW(StrCSpn)
-INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
-INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
+INT WINAPI StrCSpnIA(_In_ LPCSTR, _In_ LPCSTR);
+INT WINAPI StrCSpnIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
#define StrCatA lstrcatA
-LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
+LPWSTR WINAPI StrCatW(_Inout_ LPWSTR, _In_ LPCWSTR);
#define StrCat WINELIB_NAME_AW(StrCat)
-LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
-LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
+LPSTR
+WINAPI
+StrCatBuffA(
+ _Inout_updates_(cchDestBuffSize) LPSTR,
+ _In_ LPCSTR,
+ INT cchDestBuffSize);
+
+LPWSTR
+WINAPI
+StrCatBuffW(
+ _Inout_updates_(cchDestBuffSize) LPWSTR,
+ _In_ LPCWSTR,
+ INT cchDestBuffSize);
+
#define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
-DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
-
-LPSTR WINAPI StrChrA(LPCSTR,WORD);
-LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
+DWORD
+WINAPI
+StrCatChainW(
+ _Out_writes_(cchDst) LPWSTR,
+ DWORD cchDst,
+ DWORD,
+ _In_ LPCWSTR);
+
+LPSTR WINAPI StrChrA(_In_ LPCSTR, WORD);
+LPWSTR WINAPI StrChrW(_In_ LPCWSTR, WCHAR);
#define StrChr WINELIB_NAME_AW(StrChr)
-LPSTR WINAPI StrChrIA(LPCSTR,WORD);
-LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
+LPSTR WINAPI StrChrIA(_In_ LPCSTR, WORD);
+LPWSTR WINAPI StrChrIW(_In_ LPCWSTR, WCHAR);
#define StrChrI WINELIB_NAME_AW(StrChrI)
#define StrCmpA lstrcmpA
-int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
+int WINAPI StrCmpW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCmp WINELIB_NAME_AW(StrCmp)
#define StrCmpIA lstrcmpiA
-int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
+int WINAPI StrCmpIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrCmpI WINELIB_NAME_AW(StrCmpI)
#define StrCpyA lstrcpyA
-LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
+LPWSTR WINAPI StrCpyW(_Out_ LPWSTR, _In_ LPCWSTR);
#define StrCpy WINELIB_NAME_AW(StrCpy)
#define StrCpyNA lstrcpynA
-LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
+LPWSTR WINAPI StrCpyNW(_Out_writes_(cchMax) LPWSTR, _In_ LPCWSTR, int cchMax);
#define StrCpyN WINELIB_NAME_AW(StrCpyN)
#define StrNCpy WINELIB_NAME_AW(StrCpyN)
-INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR);
-
-INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
-INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
+INT WINAPI StrCmpLogicalW(_In_ LPCWSTR, _In_ LPCWSTR);
+
+INT WINAPI StrCmpNA(_In_ LPCSTR, _In_ LPCSTR, INT);
+INT WINAPI StrCmpNW(_In_ LPCWSTR, _In_ LPCWSTR, INT);
#define StrCmpN WINELIB_NAME_AW(StrCmpN)
#define StrNCmp WINELIB_NAME_AW(StrCmpN)
-INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
-INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
+INT WINAPI StrCmpNIA(_In_ LPCSTR, _In_ LPCSTR, INT);
+INT WINAPI StrCmpNIW(_In_ LPCWSTR, _In_ LPCWSTR, INT);
#define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
#define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
-LPSTR WINAPI StrDupA(LPCSTR);
-LPWSTR WINAPI StrDupW(LPCWSTR);
+LPSTR WINAPI StrDupA(_In_ LPCSTR);
+LPWSTR WINAPI StrDupW(_In_ LPCWSTR);
#define StrDup WINELIB_NAME_AW(StrDup)
-HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**);
-HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**);
+HRESULT WINAPI SHStrDupA(_In_ LPCSTR, _Outptr_ WCHAR**);
+HRESULT WINAPI SHStrDupW(_In_ LPCWSTR, _Outptr_ WCHAR**);
#define SHStrDup WINELIB_NAME_AW(SHStrDup)
-LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
+LPSTR
+WINAPI
+StrFormatByteSizeA(
+ DWORD,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
/* A/W Pairing is broken for this function */
-LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
-LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
+
+LPSTR
+WINAPI
+StrFormatByteSize64A(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+LPWSTR
+WINAPI
+StrFormatByteSizeW(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#ifndef WINE_NO_UNICODE_MACROS
#ifdef UNICODE
#define StrFormatByteSize StrFormatByteSizeW
@@ -832,16 +1562,42 @@
#endif
#endif
-LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
-LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+LPSTR
+WINAPI
+StrFormatKBSizeA(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+LPWSTR
+WINAPI
+StrFormatKBSizeW(
+ LONGLONG,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize)
-int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
-int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+int
+WINAPI
+StrFromTimeIntervalA(
+ _Out_writes_(cchMax) LPSTR,
+ UINT cchMax,
+ DWORD,
+ int);
+
+int
+WINAPI
+StrFromTimeIntervalW(
+ _Out_writes_(cchMax) LPWSTR,
+ UINT cchMax,
+ DWORD,
+ int);
+
#define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
-BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
-BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+BOOL WINAPI StrIsIntlEqualA(BOOL, _In_ LPCSTR, _In_ LPCSTR, int);
+BOOL WINAPI StrIsIntlEqualW(BOOL, _In_ LPCWSTR, _In_ LPCWSTR, int);
#define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
#define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
@@ -850,71 +1606,119 @@
#define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
#define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
-LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
-LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
+LPSTR WINAPI StrNCatA(_Inout_updates_(cchMax) LPSTR, LPCSTR, int cchMax);
+LPWSTR WINAPI StrNCatW(_Inout_updates_(cchMax) LPWSTR, LPCWSTR, int cchMax);
#define StrNCat WINELIB_NAME_AW(StrNCat)
#define StrCatN WINELIB_NAME_AW(StrNCat)
-LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrPBrkA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrPBrkW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrPBrk WINELIB_NAME_AW(StrPBrk)
-LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
-LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
+LPSTR WINAPI StrRChrA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD);
+LPWSTR WINAPI StrRChrW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR);
#define StrRChr WINELIB_NAME_AW(StrRChr)
-LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
-LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
+LPSTR WINAPI StrRChrIA(_In_ LPCSTR, _In_opt_ LPCSTR, WORD);
+LPWSTR WINAPI StrRChrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, WCHAR);
#define StrRChrI WINELIB_NAME_AW(StrRChrI)
-LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
-LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrRStrIA(_In_ LPCSTR, _In_opt_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrRStrIW(_In_ LPCWSTR, _In_opt_ LPCWSTR, _In_ LPCWSTR);
#define StrRStrI WINELIB_NAME_AW(StrRStrI)
-int WINAPI StrSpnA(LPCSTR,LPCSTR);
-int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
+int WINAPI StrSpnA(_In_ LPCSTR, _In_ LPCSTR);
+int WINAPI StrSpnW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrSpn WINELIB_NAME_AW(StrSpn)
-LPSTR WINAPI StrStrA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrStrA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrStrW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrStr WINELIB_NAME_AW(StrStr)
-LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
-LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI StrStrIA(_In_ LPCSTR, _In_ LPCSTR);
+LPWSTR WINAPI StrStrIW(_In_ LPCWSTR, _In_ LPCWSTR);
#define StrStrI WINELIB_NAME_AW(StrStrI)
-LPWSTR WINAPI StrStrNW(LPCWSTR,LPCWSTR,UINT);
-LPWSTR WINAPI StrStrNIW(LPCWSTR,LPCWSTR,UINT);
-
-int WINAPI StrToIntA(LPCSTR);
-int WINAPI StrToIntW(LPCWSTR);
+LPWSTR WINAPI StrStrNW(_In_ LPCWSTR, _In_ LPCWSTR, UINT);
+LPWSTR WINAPI StrStrNIW(_In_ LPCWSTR, _In_ LPCWSTR, UINT);
+
+int WINAPI StrToIntA(_In_ LPCSTR);
+int WINAPI StrToIntW(_In_ LPCWSTR);
#define StrToInt WINELIB_NAME_AW(StrToInt)
#define StrToLong WINELIB_NAME_AW(StrToInt)
-BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
-BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
+BOOL WINAPI StrToIntExA(_In_ LPCSTR, DWORD, _Out_ int*);
+BOOL WINAPI StrToIntExW(_In_ LPCWSTR, DWORD, _Out_ int*);
#define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
-BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*);
-BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*);
+BOOL WINAPI StrToInt64ExA(_In_ LPCSTR, DWORD, _Out_ LONGLONG*);
+BOOL WINAPI StrToInt64ExW(_In_ LPCWSTR, DWORD, _Out_ LONGLONG*);
#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64)
-BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
-BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
+BOOL WINAPI StrTrimA(_Inout_ LPSTR, _In_ LPCSTR);
+BOOL WINAPI StrTrimW(_Inout_ LPWSTR, _In_ LPCWSTR);
#define StrTrim WINELIB_NAME_AW(StrTrim)
-INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,__ms_va_list);
-INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,__ms_va_list);
+INT
+WINAPI
+wvnsprintfA(
+ _Out_writes_(cchDest) LPSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCSTR,
+ _In_ __ms_va_list);
+
+INT
+WINAPI
+wvnsprintfW(
+ _Out_writes_(cchDest) LPWSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCWSTR,
+ _In_ __ms_va_list);
+
#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
-INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
-INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...);
+INT
+WINAPIV
+wnsprintfA(
+ _Out_writes_(cchDest) LPSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCSTR,
+ ...);
+
+INT
+WINAPIV
+wnsprintfW(
+ _Out_writes_(cchDest) LPWSTR,
+ _In_ INT cchDest,
+ _In_ _Printf_format_string_ LPCWSTR,
+ ...);
+
#define wnsprintf WINELIB_NAME_AW(wnsprintf)
-HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*);
-
-BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
-BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+HRESULT
+WINAPI
+SHLoadIndirectString(
+ _In_ LPCWSTR,
+ _Out_writes_(cchOutBuf) LPWSTR,
+ _In_ UINT cchOutBuf,
+ _Reserved_ PVOID*);
+
+BOOL
+WINAPI
+IntlStrEqWorkerA(
+ BOOL,
+ _In_reads_(nChar) LPCSTR,
+ _In_reads_(nChar) LPCSTR,
+ int nChar);
+
+BOOL
+WINAPI
+IntlStrEqWorkerW(
+ BOOL,
+ _In_reads_(nChar) LPCWSTR,
+ _In_reads_(nChar) LPCWSTR,
+ int nChar);
+
#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker)
#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n)
@@ -925,15 +1729,46 @@
#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n)
#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI)
-HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*);
-HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*);
+HRESULT
+WINAPI
+StrRetToStrA(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ LPSTR*);
+
+HRESULT
+WINAPI
+StrRetToStrW(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ LPWSTR*);
+
#define StrRetToStr WINELIB_NAME_AW(StrRetToStr)
-HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT);
-HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT);
+HRESULT
+WINAPI
+StrRetToBufA(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Out_writes_(cchBuf) LPSTR,
+ UINT cchBuf);
+
+HRESULT
+WINAPI
+StrRetToBufW(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Out_writes_(cchBuf) LPWSTR,
+ UINT cchBuf);
+
#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
-HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*);
+HRESULT
+WINAPI
+StrRetToBSTR(
+ _Inout_ STRRET*,
+ _In_opt_ LPCITEMIDLIST,
+ _Outptr_ BSTR*);
BOOL WINAPI IsCharSpaceA(CHAR);
BOOL WINAPI IsCharSpaceW(WCHAR);
@@ -945,13 +1780,13 @@
/* GDI functions */
#ifndef NO_SHLWAPI_GDI
-HPALETTE WINAPI SHCreateShellPalette(HDC);
+HPALETTE WINAPI SHCreateShellPalette(_In_opt_ HDC);
COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
-VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
+VOID WINAPI ColorRGBToHLS(COLORREF, _Out_ LPWORD, _Out_ LPWORD, _Out_ LPWORD);
#endif /* NO_SHLWAPI_GDI */
@@ -961,19 +1796,67 @@
/* Stream functions */
#ifndef NO_SHLWAPI_STREAM
-struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
-struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+struct IStream *
+WINAPI
+SHOpenRegStreamA(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD);
+
+struct IStream *
+WINAPI
+SHOpenRegStreamW(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD);
+
#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */
-struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
-struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+struct IStream *
+WINAPI
+SHOpenRegStream2A(
+ _In_ HKEY,
+ _In_opt_ LPCSTR,
+ _In_opt_ LPCSTR,
+ _In_ DWORD);
+
+struct IStream *
+WINAPI
+SHOpenRegStream2W(
+ _In_ HKEY,
+ _In_opt_ LPCWSTR,
+ _In_opt_ LPCWSTR,
+ _In_ DWORD);
+
#define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
-HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
-HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
+HRESULT
+WINAPI
+SHCreateStreamOnFileA(
+ _In_ LPCSTR,
+ _In_ DWORD,
+ _Outptr_ struct IStream**);
+
+HRESULT
+WINAPI
+SHCreateStreamOnFileW(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _Outptr_ struct IStream**);
+
#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile)
-HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct
IStream**);
+HRESULT
+WINAPI
+SHCreateStreamOnFileEx(
+ _In_ LPCWSTR,
+ _In_ DWORD,
+ _In_ DWORD,
+ _In_ BOOL,
+ _In_opt_ struct IStream*,
+ _Outptr_ struct IStream**);
HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**);
@@ -993,12 +1876,12 @@
#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
-HRESULT WINAPI SHAutoComplete(HWND,DWORD);
+HRESULT WINAPI SHAutoComplete(_In_ HWND, DWORD);
/* Threads */
-HRESULT WINAPI SHCreateThreadRef(LONG*, IUnknown**);
-HRESULT WINAPI SHGetThreadRef(IUnknown**);
-HRESULT WINAPI SHSetThreadRef(IUnknown*);
+HRESULT WINAPI SHCreateThreadRef(_Inout_ LONG*, _Outptr_ IUnknown**);
+HRESULT WINAPI SHGetThreadRef(_Outptr_ IUnknown**);
+HRESULT WINAPI SHSetThreadRef(_In_opt_ IUnknown*);
HRESULT WINAPI SHReleaseThreadRef(void);
/* SHCreateThread flags */
@@ -1010,9 +1893,15 @@
#define CTF_REF_COUNTED 0x20 /* Thread is ref counted */
#define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */
-BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
-
-BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*);
+BOOL
+WINAPI
+SHCreateThread(
+ _In_ LPTHREAD_START_ROUTINE,
+ _In_opt_ void*,
+ _In_ DWORD,
+ _In_opt_ LPTHREAD_START_ROUTINE);
+
+BOOL WINAPI SHSkipJunction(_In_opt_ struct IBindCtx*, _In_ const CLSID*);
/* Version Information */
@@ -1048,7 +1937,7 @@
#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \
((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe))
-HRESULT WINAPI DllInstall(BOOL,LPCWSTR) DECLSPEC_HIDDEN;
+HRESULT WINAPI DllInstall(BOOL, _In_opt_ LPCWSTR) DECLSPEC_HIDDEN;
#if (_WIN32_IE >= 0x0600)
@@ -1065,7 +1954,15 @@
#define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS)
#define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS)
-HRESULT WINAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl, LPWSTR bag_name, DWORD
flags, REFIID riid, void **ppv);
+HRESULT
+WINAPI
+SHGetViewStatePropertyBag(
+ _In_opt_ LPCITEMIDLIST pidl,
+ _In_opt_ LPWSTR bag_name,
+ DWORD flags,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
+
#endif /* (_WIN32_IE >= 0x0600) */
@@ -1133,7 +2030,13 @@
int dwOffset;
} QITAB, *LPQITAB;
-HRESULT WINAPI QISearch(void* base, const QITAB *pqit, REFIID riid, void **ppv);
+HRESULT
+WINAPI
+QISearch(
+ _Inout_ void* base,
+ _In_ const QITAB *pqit,
+ _In_ REFIID riid,
+ _Outptr_ void **ppv);
#include <poppack.h>