Commit ad381592 authored by Guy L. Albertelli's avatar Guy L. Albertelli Committed by Alexandre Julliard

- Implement ordinals 7, 8, 9, 13, 14, 19, 36.

- Implement SHRegWriteUSValue{A|W}, UrlGetPart{A|W}, UrlIs...{A|W}
parent fa7a8c63
...@@ -195,10 +195,205 @@ DWORD WINAPI SHLWAPI_2 (LPCWSTR x, UNKNOWN_SHLWAPI_2 *y) ...@@ -195,10 +195,205 @@ DWORD WINAPI SHLWAPI_2 (LPCWSTR x, UNKNOWN_SHLWAPI_2 *y)
} }
/************************************************************************* /*************************************************************************
* @ [SHLWAPI.7]
* (Used by IE4 during startup)
* appears to return HWND (used as input to 8 below)
*/
HRESULT WINAPI SHLWAPI_7 (
LPVOID w,
LPVOID x,
LPVOID y) /* appears to be result of GetCurrentProcessId() */
{
FIXME("(%p %p %p) stub\n", w, x, y);
return 0;
#if 0
/* pseudo code extracted from relay trace */
fhnd = CreateFileMappingA(-1, 0, 4, 0, 0x58, 0);
addr = MapViewOfFile(fhnd, 6, 0, 0, 0);
UnmapViewOfFile(addr);
GetCurrentProcessId();
GetCurrentProcessId();
sph = GetCurrentProcess();
GetCurrentProcessId();
dph = GetCurrentProcess();
DuplicateHandle(sph, fhnd, dph, &hoho, 0x000f001f, 0, 2);
GetCurrentProcessId();
GetCurrentProcessId();
CloseHandle(fhnd);
return hoho;
#endif
}
/*************************************************************************
* @ [SHLWAPI.8]
* (Used by IE4 during startup)
* appears to return MapViewOfFile+4 (used as input to 9 below)
*/
LONG WINAPI SHLWAPI_8 (
LPVOID w, /* possibly HANDLE */
LPVOID x) /* appears to be result of GetCurrentProcessId() */
{
FIXME("(%p %p) stub\n", w, x);
return 0;
#if 0
/* pseudo code extracted from relay trace */
GetCurrentProcessId();
GetCurrentProcessId();
sph = GetCurrentProcess();
GetCurrentProcessId();
dph = GetCurrentProcess();
DuplicateHandle(sph, w, dph, &hoho, 0x000f001f, 0, 2);
GetCurrentProcessId();
GetCurrentProcessId();
addr = MapViewOfFile(hoho, 6, 0, 0, 0);
CloseHandle(hoho);
return (LONG)addr + 4;
#endif
}
/*************************************************************************
* @ [SHLWAPI.9]
* (Used by IE4 during startup)
*/
HRESULT WINAPI SHLWAPI_9 (
LPVOID w)
{
FIXME("(%p) stub\n", w);
return 0;
#if 0
/* pseudo code extracted from relay trace */
return UnmapViewOfFile((LPVOID)((LONG)w-4));
#endif
}
/*************************************************************************
* @ [SHLWAPI.13]
* (Used by IE4 during startup)
*/
HRESULT WINAPI SHLWAPI_13 (
LPVOID w,
LPVOID x)
{
FIXME("(%p %p)stub\n",w,x);
return 1;
#if 0
/* pseudo code extracted from relay trace */
RegOpenKeyA(HKLM, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Aceepted Documents", &newkey);
ret = 0;
i = 0;
size = 0;
while(!ret) {
ret = RegEnumValueA(newkey, i, a1, a2, 0, a3, 0, 0);
size += ???;
i++;
}
b1 = LocalAlloc(0x40, size);
ret = 0;
i = 0;
while(!ret) {
ret = RegEnumValueA(newkey, i, a1, a2, 0, a3, a4, a5);
RegisterClipBoardFormatA(a4);
i++;
}
hwnd1 = GetModuleHandleA("URLMON.DLL");
proc = GetProcAddress(hwnd1, "CreateFormatEnumerator");
HeapAlloc(??, 0, 0x14);
HeapAlloc(??, 0, 0x50);
LocalAlloc(0x40, 0x78);
/* FIXME: bad string below */
lstrlenW(L"{D0FCA420-D3F5-11CF-B211-00AA004AE837}");
StrCpyW(a6, L"{D0FCA420-D3F5-11CF-B211-00AA004AE837}");
GetTickCount();
IsBadReadPtr(c1 = 0x403fd210,4);
InterlockedIncrement(c1+4);
LocalFree(b1);
RegCloseKey(newkey);
IsBadReadPtr(c1 = 0x403fd210,4);
InterlockedIncrement(c1+4);
HeapAlloc(40350000,00000000,00000014) retval=403fd0a8;
HeapAlloc(40350000,00000000,00000050) retval=403feb44;
hwnd1 = GetModuleHandleA("URLMON.DLL");
proc = GetProcAddress(hwnd1, "RegisterFormatEnumerator");
/* 0x1a40c88c is in URLMON.DLL just before above proc
* content is L"_EnumFORMATETC_"
* label is d1
*/
IsBadReadPtr(d1 = 0x1a40c88c,00000002);
lstrlenW(d1);
lstrlenW(d1);
HeapAlloc(40350000,00000000,0000001e) retval=403fed44;
IsBadReadPtr(d2 = 0x403fd0a8,00000004);
InterlockedIncrement(d2+4);
IsBadReadPtr(d2 = 0x403fd0a8,00000004);
InterlockedDecrement(d2+4);
IsBadReadPtr(c1,00000004);
InterlockedDecrement(c1+4);
IsBadReadPtr(c1,00000004);
InterlockedDecrement(c1+4);
#endif
}
/*************************************************************************
* SHLWAPI_14 [SHLWAPI.14]
*
* Function:
* Retrieves IE "AcceptLanguage" value from registry. ASCII mode.
*
*/
HRESULT WINAPI SHLWAPI_14 (
LPSTR langbuf,
LPDWORD buflen)
{
CHAR *mystr;
DWORD mystrlen, mytype;
HKEY mykey;
LCID mylcid;
mystrlen = (*buflen > 6) ? *buflen : 6;
mystr = (CHAR*)HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY, mystrlen);
RegOpenKeyA(HKEY_CURRENT_USER,
"Software\\Microsoft\\Internet Explorer\\International",
&mykey);
if (RegQueryValueExA(mykey, "AcceptLanguage",
0, &mytype, mystr, &mystrlen)) {
/* Did not find value */
mylcid = GetUserDefaultLCID();
/* somehow the mylcid translates into "en-us"
* this is similar to "LOCALE_SABBREVLANGNAME"
* which could be gotten via GetLocaleInfo.
* The only problem is LOCALE_SABBREVLANGUAGE" is
* a 3 char string (first 2 are country code and third is
* letter for "sublanguage", which does not come close to
* "en-us"
*/
lstrcpyA(mystr, "en-us");
mystrlen = lstrlenA(mystr);
}
else {
/* handle returned string */
FIXME("missing code\n");
}
if (mystrlen > *buflen)
lstrcpynA(langbuf, mystr, *buflen);
else {
lstrcpyA(langbuf, mystr);
*buflen = lstrlenA(langbuf);
}
RegCloseKey(mykey);
HeapFree(GetProcessHeap(), 0, mystr);
TRACE("language is %s\n", debugstr_a(langbuf));
return 0;
}
/*************************************************************************
* SHLWAPI_15 [SHLWAPI.15] * SHLWAPI_15 [SHLWAPI.15]
* *
* Function: * Function:
* Retrieves IE "AcceptLanguage" value from registry * Retrieves IE "AcceptLanguage" value from registry. UNICODE mode.
* *
*/ */
HRESULT WINAPI SHLWAPI_15 ( HRESULT WINAPI SHLWAPI_15 (
...@@ -210,7 +405,7 @@ HRESULT WINAPI SHLWAPI_15 ( ...@@ -210,7 +405,7 @@ HRESULT WINAPI SHLWAPI_15 (
HKEY mykey; HKEY mykey;
LCID mylcid; LCID mylcid;
mystrlen = *buflen; mystrlen = (*buflen > 6) ? *buflen : 6;
mystr = (CHAR*)HeapAlloc(GetProcessHeap(), mystr = (CHAR*)HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY, mystrlen); HEAP_ZERO_MEMORY, mystrlen);
RegOpenKeyA(HKEY_CURRENT_USER, RegOpenKeyA(HKEY_CURRENT_USER,
...@@ -218,6 +413,7 @@ HRESULT WINAPI SHLWAPI_15 ( ...@@ -218,6 +413,7 @@ HRESULT WINAPI SHLWAPI_15 (
&mykey); &mykey);
if (RegQueryValueExA(mykey, "AcceptLanguage", if (RegQueryValueExA(mykey, "AcceptLanguage",
0, &mytype, mystr, &mystrlen)) { 0, &mytype, mystr, &mystrlen)) {
/* Did not find value */
mylcid = GetUserDefaultLCID(); mylcid = GetUserDefaultLCID();
/* somehow the mylcid translates into "en-us" /* somehow the mylcid translates into "en-us"
* this is similar to "LOCALE_SABBREVLANGNAME" * this is similar to "LOCALE_SABBREVLANGNAME"
...@@ -227,7 +423,7 @@ HRESULT WINAPI SHLWAPI_15 ( ...@@ -227,7 +423,7 @@ HRESULT WINAPI SHLWAPI_15 (
* letter for "sublanguage", which does not come close to * letter for "sublanguage", which does not come close to
* "en-us" * "en-us"
*/ */
lstrcpynA(mystr, "en-us", mystrlen); lstrcpyA(mystr, "en-us");
mystrlen = lstrlenA(mystr); mystrlen = lstrlenA(mystr);
} }
else { else {
...@@ -262,7 +458,7 @@ HRESULT WINAPI SHLWAPI_16 ( ...@@ -262,7 +458,7 @@ HRESULT WINAPI SHLWAPI_16 (
* space size 0x14 * space size 0x14
* return is 0 (unless out of memory???) * return is 0 (unless out of memory???)
* *
* related to _21 and _22 below * related to _19, _21 and _22 below
* only seen invoked by SHDOCVW * only seen invoked by SHDOCVW
*/ */
LONG WINAPI SHLWAPI_18 ( LONG WINAPI SHLWAPI_18 (
...@@ -275,6 +471,22 @@ LONG WINAPI SHLWAPI_18 ( ...@@ -275,6 +471,22 @@ LONG WINAPI SHLWAPI_18 (
} }
/************************************************************************* /*************************************************************************
* @ [SHLWAPI.19]
*
* w is address of allocated memory from _21
* return is 0 (unless out of memory???)
*
* related to _18, _21 and _22 below
* only seen invoked by SHDOCVW
*/
LONG WINAPI SHLWAPI_19 (
LPVOID w)
{
FIXME("(%p) stub\n",w);
return 0;
}
/*************************************************************************
* @ [SHLWAPI.21] * @ [SHLWAPI.21]
* *
* w points to space allocated via .18 above * w points to space allocated via .18 above
...@@ -283,7 +495,7 @@ LONG WINAPI SHLWAPI_18 ( ...@@ -283,7 +495,7 @@ LONG WINAPI SHLWAPI_18 (
* x values seen 0xa0000005 * x values seen 0xa0000005
* returns 1 * returns 1
* *
* relates to _18 and _22 above and below * relates to _18, _19 and _22 above and below
* only seen invoked by SHDOCVW * only seen invoked by SHDOCVW
*/ */
LONG WINAPI SHLWAPI_21 ( LONG WINAPI SHLWAPI_21 (
...@@ -299,7 +511,7 @@ LONG WINAPI SHLWAPI_21 ( ...@@ -299,7 +511,7 @@ LONG WINAPI SHLWAPI_21 (
* *
* return is 'w' value seen in x is 0xa0000005 * return is 'w' value seen in x is 0xa0000005
* *
* relates to _18 and _21 above * relates to _18, _19 and _21 above
* only seen invoked by SHDOCVW * only seen invoked by SHDOCVW
*/ */
LPVOID WINAPI SHLWAPI_22 ( LPVOID WINAPI SHLWAPI_22 (
...@@ -466,6 +678,17 @@ BOOL WINAPI SHLWAPI_35(LPVOID p1, DWORD dw2, LPVOID p3) ...@@ -466,6 +678,17 @@ BOOL WINAPI SHLWAPI_35(LPVOID p1, DWORD dw2, LPVOID p3)
} }
/************************************************************************* /*************************************************************************
* SHLWAPI_36 [SHLWAPI.36]
*
*/
BOOL WINAPI SHLWAPI_36(HMENU h1, UINT ui2, UINT h3, LPCWSTR p4)
{
TRACE("(0x%08x, 0x%08x, 0x%08x, %s): stub\n",
h1, ui2, h3, debugstr_w(p4));
return AppendMenuW(h1, ui2, h3, p4);
}
/*************************************************************************
* @ [SHLWAPI.40] * @ [SHLWAPI.40]
* *
* Get pointer to next Unicode character. * Get pointer to next Unicode character.
......
...@@ -563,13 +563,32 @@ DWORD WINAPI SHRegQueryInfoUSKeyW( ...@@ -563,13 +563,32 @@ DWORD WINAPI SHRegQueryInfoUSKeyW(
*/ */
LONG WINAPI SHRegEnumUSKeyA( LONG WINAPI SHRegEnumUSKeyA(
HUSKEY hUSKey, /* [in] */ HUSKEY hUSKey, /* [in] */
DWORD dwIndex, DWORD dwIndex, /* [in] */
LPSTR pszName, LPSTR pszName, /* [out] */
LPDWORD pcchValueNameLen, LPDWORD pcchValueNameLen, /* [in/out] */
SHREGENUM_FLAGS enumRegFlags) /* [in] */ SHREGENUM_FLAGS enumRegFlags) /* [in] */
{ {
FIXME("%s stub\n",debugstr_a(pszName)); HKEY dokey;
return ERROR_NO_MORE_ITEMS;
TRACE("(0x%lx,%ld,%p,%p(%ld),%d)\n",
(LONG)hUSKey, dwIndex, pszName, pcchValueNameLen,
*pcchValueNameLen, enumRegFlags);
if (((enumRegFlags == SHREGENUM_HKCU) ||
(enumRegFlags == SHREGENUM_DEFAULT)) &&
(dokey = REG_GetHKEYFromHUSKEY(hUSKey,REG_HKCU))) {
return RegEnumKeyExA(dokey, dwIndex, pszName, pcchValueNameLen,
0, 0, 0, 0);
}
if (((enumRegFlags == SHREGENUM_HKLM) ||
(enumRegFlags == SHREGENUM_DEFAULT)) &&
(dokey = REG_GetHKEYFromHUSKEY(hUSKey,REG_HKLM))) {
return RegEnumKeyExA(dokey, dwIndex, pszName, pcchValueNameLen,
0, 0, 0, 0);
}
FIXME("no support for SHREGNUM_BOTH\n");
return ERROR_INVALID_FUNCTION;
} }
/************************************************************************* /*************************************************************************
...@@ -577,13 +596,54 @@ LONG WINAPI SHRegEnumUSKeyA( ...@@ -577,13 +596,54 @@ LONG WINAPI SHRegEnumUSKeyA(
*/ */
LONG WINAPI SHRegEnumUSKeyW( LONG WINAPI SHRegEnumUSKeyW(
HUSKEY hUSKey, /* [in] */ HUSKEY hUSKey, /* [in] */
DWORD dwIndex, DWORD dwIndex, /* [in] */
LPWSTR pszName, LPWSTR pszName, /* [out] */
LPDWORD pcchValueNameLen, LPDWORD pcchValueNameLen, /* [in/out] */
SHREGENUM_FLAGS enumRegFlags) /* [in] */ SHREGENUM_FLAGS enumRegFlags) /* [in] */
{ {
FIXME("%s stub\n",debugstr_w(pszName)); HKEY dokey;
return ERROR_NO_MORE_ITEMS;
TRACE("(0x%lx,%ld,%p,%p(%ld),%d)\n",
(LONG)hUSKey, dwIndex, pszName, pcchValueNameLen,
*pcchValueNameLen, enumRegFlags);
if (((enumRegFlags == SHREGENUM_HKCU) ||
(enumRegFlags == SHREGENUM_DEFAULT)) &&
(dokey = REG_GetHKEYFromHUSKEY(hUSKey,REG_HKCU))) {
return RegEnumKeyExW(dokey, dwIndex, pszName, pcchValueNameLen,
0, 0, 0, 0);
}
if (((enumRegFlags == SHREGENUM_HKLM) ||
(enumRegFlags == SHREGENUM_DEFAULT)) &&
(dokey = REG_GetHKEYFromHUSKEY(hUSKey,REG_HKLM))) {
return RegEnumKeyExW(dokey, dwIndex, pszName, pcchValueNameLen,
0, 0, 0, 0);
}
FIXME("no support for SHREGNUM_BOTH\n");
return ERROR_INVALID_FUNCTION;
}
/*************************************************************************
* SHRegWriteUSValueA [SHLWAPI.@]
*/
LONG WINAPI SHRegWriteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, DWORD dwType,
LPVOID pvData, DWORD cbData, DWORD dwFlags)
{
FIXME("(0x%lx,%s,%ld,%p,%ld,%ld): stub\n",
(LONG)hUSKey, debugstr_a(pszValue), dwType, pvData, cbData, dwFlags);
return ERROR_SUCCESS;
}
/*************************************************************************
* SHRegWriteUSValueW [SHLWAPI.@]
*/
LONG WINAPI SHRegWriteUSValueW(HUSKEY hUSKey, LPCWSTR pszValue, DWORD dwType,
LPVOID pvData, DWORD cbData, DWORD dwFlags)
{
FIXME("(0x%lx,%s,%ld,%p,%ld,%ld): stub\n",
(LONG)hUSKey, debugstr_w(pszValue), dwType, pvData, cbData, dwFlags);
return ERROR_SUCCESS;
} }
/************************************************************************* /*************************************************************************
......
...@@ -10,25 +10,25 @@ import ntdll.dll ...@@ -10,25 +10,25 @@ import ntdll.dll
debug_channels (shell) debug_channels (shell)
1 stdcall @(ptr ptr) SHLWAPI_1 1 stdcall @(str ptr) SHLWAPI_1
2 stdcall @(wstr ptr) SHLWAPI_2 2 stdcall @(wstr ptr) SHLWAPI_2
3 stub @ 3 stub @
4 stub @ 4 stub @
5 stub @ 5 stub @
6 stub @ 6 stub @
7 stub @ 7 stdcall @(long long long) SHLWAPI_7
8 stub @ 8 stdcall @(long long) SHLWAPI_8
9 stub @ 9 stdcall @(long) SHLWAPI_9
10 stub @ 10 stub @
11 stub @ 11 stub @
12 stub @ 12 stub @
13 stub @ 13 stdcall @(ptr ptr) SHLWAPI_13
14 stub @ 14 stdcall @(ptr ptr) SHLWAPI_14
15 stdcall @(ptr ptr) SHLWAPI_15 15 stdcall @(ptr ptr) SHLWAPI_15
16 stdcall @(long long long long) SHLWAPI_16 16 stdcall @(long long long long) SHLWAPI_16
17 stub @ 17 stub @
18 stdcall @(ptr ptr) SHLWAPI_18 18 stdcall @(ptr ptr) SHLWAPI_18
19 stub @ 19 stdcall @(ptr) SHLWAPI_19
20 stub @ 20 stub @
21 stdcall @(ptr long) SHLWAPI_21 21 stdcall @(ptr long) SHLWAPI_21
22 stdcall @(ptr long) SHLWAPI_22 22 stdcall @(ptr long) SHLWAPI_22
...@@ -45,7 +45,7 @@ debug_channels (shell) ...@@ -45,7 +45,7 @@ debug_channels (shell)
33 stdcall @(long) SHLWAPI_33 33 stdcall @(long) SHLWAPI_33
34 stdcall @(long) SHLWAPI_34 34 stdcall @(long) SHLWAPI_34
35 stdcall @(ptr long ptr) SHLWAPI_35 35 stdcall @(ptr long ptr) SHLWAPI_35
36 stub @ 36 stdcall @(long long long wstr) SHLWAPI_36
37 forward @ user32.CallWindowProcW 37 forward @ user32.CallWindowProcW
38 forward @ user32.CharLowerW 38 forward @ user32.CharLowerW
39 forward @ user32.CharLowerBuffW 39 forward @ user32.CharLowerBuffW
...@@ -608,8 +608,8 @@ debug_channels (shell) ...@@ -608,8 +608,8 @@ debug_channels (shell)
@ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long ) SHRegQueryUSValueW @ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long ) SHRegQueryUSValueW
@ stub SHRegSetUSValueA @ stub SHRegSetUSValueA
@ stub SHRegSetUSValueW @ stub SHRegSetUSValueW
@ stub SHRegWriteUSValueA @ stdcall SHRegWriteUSValueA (long str long ptr long long) SHRegWriteUSValueA
@ stub SHRegWriteUSValueW @ stdcall SHRegWriteUSValueW (long str long ptr long long) SHRegWriteUSValueW
@ stdcall SHSetValueA (long str str long ptr long) SHSetValueA @ stdcall SHSetValueA (long str str long ptr long) SHSetValueA
@ stdcall SHSetValueW (long wstr wstr long ptr long) SHSetValueW @ stdcall SHSetValueW (long wstr wstr long ptr long) SHSetValueW
@ stdcall StrCSpnA (str str) StrCSpnA @ stdcall StrCSpnA (str str) StrCSpnA
...@@ -675,16 +675,16 @@ debug_channels (shell) ...@@ -675,16 +675,16 @@ debug_channels (shell)
@ stdcall UrlEscapeW(wstr ptr ptr long)UrlEscapeW @ stdcall UrlEscapeW(wstr ptr ptr long)UrlEscapeW
@ stdcall UrlGetLocationA(str) UrlGetLocationA @ stdcall UrlGetLocationA(str) UrlGetLocationA
@ stdcall UrlGetLocationW(wstr) UrlGetLocationW @ stdcall UrlGetLocationW(wstr) UrlGetLocationW
@ stub UrlGetPartA @ stdcall UrlGetPartA(str ptr ptr long long) UrlGetPartA
@ stub UrlGetPartW @ stdcall UrlGetPartW(wstr ptr ptr long long) UrlGetPartW
@ stdcall UrlHashA(str ptr long) UrlHashA @ stdcall UrlHashA(str ptr long) UrlHashA
@ stub UrlHashW @ stub UrlHashW
@ stub UrlIsA @ stdcall UrlIsA(str long) UrlIsA
@ stub UrlIsNoHistoryA @ stdcall UrlIsNoHistoryA(str) UrlIsNoHistoryA
@ stub UrlIsNoHistoryW @ stdcall UrlIsNoHistoryW(wstr) UrlIsNoHistoryW
@ stub UrlIsOpaqueA @ stdcall UrlIsOpaqueA(str) UrlIsOpaqueA
@ stub UrlIsOpaqueW @ stdcall UrlIsOpaqueW(wstr) UrlIsOpaqueW
@ stub UrlIsW @ stdcall UrlIsW(wstr long) UrlIsW
@ stdcall UrlUnescapeA(str ptr ptr long) UrlUnescapeA @ stdcall UrlUnescapeA(str ptr ptr long) UrlUnescapeA
@ stdcall UrlUnescapeW(wstr ptr ptr long) UrlUnescapeW @ stdcall UrlUnescapeW(wstr ptr ptr long) UrlUnescapeW
@ varargs wnsprintfA(ptr long str) wnsprintfA @ varargs wnsprintfA(ptr long str) wnsprintfA
......
...@@ -15,6 +15,30 @@ extern "C" { ...@@ -15,6 +15,30 @@ extern "C" {
#define GCT_WILD 0x0004 #define GCT_WILD 0x0004
#define GCT_SEPARATOR 0x0008 #define GCT_SEPARATOR 0x0008
/* These are used by UrlGetPart routine */
typedef enum {
URL_PART_NONE = 0,
URL_PART_SCHEME = 1,
URL_PART_HOSTNAME,
URL_PART_USERNAME,
URL_PART_PASSWORD,
URL_PART_PORT,
URL_PART_QUERY,
} URL_PART;
#define URL_PARTFLAG_KEEPSCHEME 0x00000001
/* These are used by the UrlIs... routines */
typedef enum {
URLIS_URL,
URLIS_OPAQUE,
URLIS_NOHISTORY,
URLIS_FILEURL,
URLIS_APPLIABLE,
URLIS_DIRECTORY,
URLIS_HASQUERY,
} URLIS;
#define URL_WININET_COMPATIBILITY 0x80000000 #define URL_WININET_COMPATIBILITY 0x80000000
#define URL_PLUGGABLE_PROTOCOL 0x40000000 #define URL_PLUGGABLE_PROTOCOL 0x40000000
#define URL_ESCAPE_UNSAFE 0x20000000 #define URL_ESCAPE_UNSAFE 0x20000000
...@@ -186,6 +210,8 @@ LPSTR WINAPI StrChrIA(LPCSTR lpStart, WORD wMatch); ...@@ -186,6 +210,8 @@ LPSTR WINAPI StrChrIA(LPCSTR lpStart, WORD wMatch);
LPWSTR WINAPI StrChrIW(LPCWSTR lpStart, WCHAR wMatch); LPWSTR WINAPI StrChrIW(LPCWSTR lpStart, WCHAR wMatch);
#define StrChrI WINELIB_NAME_AW(StrChrI) #define StrChrI WINELIB_NAME_AW(StrChrI)
INT WINAPI StrCmpIW(LPCWSTR lpStr1, LPCWSTR lpStr2);
INT WINAPI StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar); INT WINAPI StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
INT WINAPI StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar); INT WINAPI StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
#define StrCmpN WINELIB_NAME_AW(StrCmpN) #define StrCmpN WINELIB_NAME_AW(StrCmpN)
...@@ -194,6 +220,12 @@ INT WINAPI StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar); ...@@ -194,6 +220,12 @@ INT WINAPI StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
INT WINAPI StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar); INT WINAPI StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
#define StrCmpNI WINELIB_NAME_AW(StrCmpNI) #define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
INT WINAPI StrCmpW(LPCWSTR lpStr1, LPCWSTR lpStr2);
LPWSTR WINAPI StrCpyW(LPWSTR lpStr1, LPCWSTR lpStr2);
LPWSTR WINAPI StrCpyNW(LPWSTR lpStr1, LPCWSTR lpStr2, int n);
LPSTR WINAPI StrDupA(LPCSTR lpSrc); LPSTR WINAPI StrDupA(LPCSTR lpSrc);
LPWSTR WINAPI StrDupW(LPCWSTR lpSrc); LPWSTR WINAPI StrDupW(LPCWSTR lpSrc);
#define StrDup WINELIB_NAME_AW(StrDup) #define StrDup WINELIB_NAME_AW(StrDup)
...@@ -202,6 +234,38 @@ LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf ); ...@@ -202,6 +234,38 @@ LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf );
LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf ); LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf );
#define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize) #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
LPSTR WINAPI StrNCatA(LPSTR front, LPCSTR back, INT cchMax);
LPWSTR WINAPI StrNCatW(LPWSTR front, LPCWSTR back, INT cchMax);
#define StrNCat WINELIB_NAME_AW(StrNCat)
LPSTR WINAPI StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
LPWSTR WINAPI StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WCHAR wMatch);
#define StrRChr WINELIB_NAME_AW(StrRChr)
LPSTR WINAPI StrRChrIA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
LPWSTR WINAPI StrRChrIW(LPCWSTR lpStart, LPCWSTR lpEnd, WCHAR wMatch);
#define StrRChrI WINELIB_NAME_AW(StrRChrI)
LPSTR WINAPI StrStrA(LPCSTR lpFirst, LPCSTR lpSrch);
LPWSTR WINAPI StrStrW(LPCWSTR lpFirst, LPCWSTR lpSrch);
#define StrStr WINELIB_NAME_AW(StrStr)
LPSTR WINAPI StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch);
LPWSTR WINAPI StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch);
#define StrStrI WINELIB_NAME_AW(StrStrI)
int WINAPI StrToIntA(LPCSTR lpSrc);
int WINAPI StrToIntW(LPCWSTR lpSrc);
#define StrToInt WINELIB_NAME_AW(StrToInt)
int WINAPI StrToIntExA(LPCSTR lpSrc, DWORD dwFlags, LPINT piRet);
int WINAPI StrToIntExW(LPCWSTR lpSrc, DWORD dwFlags, LPINT piRet);
#define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
BOOL WINAPI StrTrimA(LPSTR pszSrc, LPCSTR pszTrimChars);
BOOL WINAPI StrTrimW(LPWSTR pszSrc, LPCWSTR pszTrimChars);
#define StrTrim WINELIB_NAME_AW(StrTrim)
INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist); INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist);
INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist); INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist);
#define wvnsprintf WINELIB_NAME_AW(wvnsprintf) #define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
...@@ -273,6 +337,11 @@ typedef enum { ...@@ -273,6 +337,11 @@ typedef enum {
SHREGENUM_BOTH = 0x11, /* do both HKCU and HKLM without dups */ SHREGENUM_BOTH = 0x11, /* do both HKCU and HKLM without dups */
} SHREGENUM_FLAGS; } SHREGENUM_FLAGS;
#define SHREGSET_HKCU 0x00000001 /* Write to HKCU if empty */
#define SHREGSET_FORCE_HKCU 0x00000002 /* Write to HKCU */
#define SHREGSET_HKLM 0x00000004 /* Write to HKLM if empty */
#define SHREGSET_FORCE_HKLM 0x00000008 /* Write to HKLM */
#define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
/* Shell User Key Registry interfaces */ /* Shell User Key Registry interfaces */
...@@ -332,6 +401,11 @@ LONG WINAPI SHRegEnumUSKeyW(HUSKEY hUSKey, DWORD dwIndex, LPWSTR pszName, ...@@ -332,6 +401,11 @@ LONG WINAPI SHRegEnumUSKeyW(HUSKEY hUSKey, DWORD dwIndex, LPWSTR pszName,
SHREGENUM_FLAGS enumRegFlags); SHREGENUM_FLAGS enumRegFlags);
#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey) #define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
LONG WINAPI SHRegWriteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, DWORD dwType,
LPVOID pvData, DWORD cbData, DWORD dwFlags);
LONG WINAPI SHRegWriteUSValueW(HUSKEY hUSKey, LPCWSTR pszValue, DWORD dwType,
LPVOID pvData, DWORD cbData, DWORD dwFlags);
#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
/* Shell URL interfaces */ /* Shell URL interfaces */
...@@ -359,12 +433,30 @@ LPCSTR WINAPI UrlGetLocationA(LPCSTR pszUrl); ...@@ -359,12 +433,30 @@ LPCSTR WINAPI UrlGetLocationA(LPCSTR pszUrl);
LPCWSTR WINAPI UrlGetLocationW(LPCWSTR pszUrl); LPCWSTR WINAPI UrlGetLocationW(LPCWSTR pszUrl);
#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation) #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
HRESULT WINAPI UrlGetPartA(LPCSTR pszIn, LPSTR pszOut, LPDWORD pcchOut,
DWORD dwPart, DWORD dwFlags);
HRESULT WINAPI UrlGetPartW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut,
DWORD dwPart, DWORD dwFlags);
#define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
BOOL WINAPI HashData(const unsigned char *lpSrc, INT nSrcLen, BOOL WINAPI HashData(const unsigned char *lpSrc, INT nSrcLen,
unsigned char *lpDest, INT nDestLen); unsigned char *lpDest, INT nDestLen);
HRESULT WINAPI UrlHashA(LPCSTR pszUrl, unsigned char *lpDest, INT nDestlen); HRESULT WINAPI UrlHashA(LPCSTR pszUrl, unsigned char *lpDest, INT nDestlen);
HRESULT WINAPI UrlHashW(LPCWSTR pszUrl, unsigned char *lpDest, INT nDestlen); HRESULT WINAPI UrlHashW(LPCWSTR pszUrl, unsigned char *lpDest, INT nDestlen);
#define UrlHash WINELIB_NAME_AW(UrlHash) #define UrlHash WINELIB_NAME_AW(UrlHash)
BOOL WINAPI UrlIsA(LPCSTR pszUrl, URLIS UrlIs);
BOOL WINAPI UrlIsW(LPCWSTR pszUrl, URLIS UrlIs);
#define UrlIs WINELIB_NAME_AW(UrlIs)
BOOL WINAPI UrlIsNoHistoryA(LPCSTR pszUrl);
BOOL WINAPI UrlIsNoHistoryW(LPCWSTR pszUrl);
#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
BOOL WINAPI UrlIsOpaqueA(LPCSTR pszUrl);
BOOL WINAPI UrlIsOpaqueW(LPCWSTR pszUrl);
#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped, HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped,
LPDWORD pcchUnescaped, DWORD dwFlags); LPDWORD pcchUnescaped, DWORD dwFlags);
HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped, HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment