mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 13:38:19 +00:00
sync shlwapi with wine 1.1.13
svn path=/trunk/; revision=39000
This commit is contained in:
parent
78a49fe707
commit
bf2e430cf1
16 changed files with 405 additions and 118 deletions
|
@ -18,6 +18,7 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
|
@ -26,6 +27,8 @@
|
|||
#include "objbase.h"
|
||||
#include "shlguid.h"
|
||||
#include "shlwapi.h"
|
||||
#include "winver.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
@ -244,7 +247,7 @@ HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc,
|
|||
debugstr_w(pszExtra), pszOut, pcchOut);
|
||||
|
||||
if (!pcchOut)
|
||||
return E_INVALIDARG;
|
||||
return E_UNEXPECTED;
|
||||
|
||||
lpAssoc = IQueryAssociations_Constructor();
|
||||
|
||||
|
@ -290,7 +293,7 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc,
|
|||
debugstr_a(pszExtra), pszOut, pcchOut);
|
||||
|
||||
if (!pcchOut)
|
||||
hRet = E_INVALIDARG;
|
||||
hRet = E_UNEXPECTED;
|
||||
else if (SHLWAPI_ParamAToW(pszAssoc, szAssocW, MAX_PATH, &lpszAssocW) &&
|
||||
SHLWAPI_ParamAToW(pszExtra, szExtraW, MAX_PATH, &lpszExtraW))
|
||||
{
|
||||
|
@ -300,6 +303,8 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc,
|
|||
if (dwLenOut >= MAX_PATH)
|
||||
lpszReturnW = HeapAlloc(GetProcessHeap(), 0,
|
||||
(dwLenOut + 1) * sizeof(WCHAR));
|
||||
else
|
||||
dwLenOut = sizeof(szReturnW) / sizeof(szReturnW[0]);
|
||||
|
||||
if (!lpszReturnW)
|
||||
hRet = E_OUTOFMEMORY;
|
||||
|
@ -309,9 +314,10 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc,
|
|||
lpszReturnW, &dwLenOut);
|
||||
|
||||
if (SUCCEEDED(hRet))
|
||||
WideCharToMultiByte(CP_ACP,0,szReturnW,-1,pszOut,dwLenOut,0,0);
|
||||
*pcchOut = dwLenOut;
|
||||
dwLenOut = WideCharToMultiByte(CP_ACP, 0, lpszReturnW, -1,
|
||||
pszOut, *pcchOut, NULL, NULL);
|
||||
|
||||
*pcchOut = dwLenOut;
|
||||
if (lpszReturnW != szReturnW)
|
||||
HeapFree(GetProcessHeap(), 0, lpszReturnW);
|
||||
}
|
||||
|
@ -489,6 +495,8 @@ static ULONG WINAPI IQueryAssociations_fnRelease(IQueryAssociations *iface)
|
|||
if (!refCount)
|
||||
{
|
||||
TRACE("Destroying IQueryAssociations (%p)\n", This);
|
||||
RegCloseKey(This->hkeySource);
|
||||
RegCloseKey(This->hkeyProgID);
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
||||
|
@ -520,7 +528,7 @@ static HRESULT WINAPI IQueryAssociations_fnInit(
|
|||
{
|
||||
static const WCHAR szProgID[] = {'P','r','o','g','I','D',0};
|
||||
IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface;
|
||||
HRESULT hr;
|
||||
LONG ret;
|
||||
|
||||
TRACE("(%p)->(%d,%s,%p,%p)\n", iface,
|
||||
cfFlags,
|
||||
|
@ -533,23 +541,21 @@ static HRESULT WINAPI IQueryAssociations_fnInit(
|
|||
FIXME("unsupported flags: %x\n", cfFlags);
|
||||
if (pszAssoc != NULL)
|
||||
{
|
||||
hr = RegOpenKeyExW(HKEY_CLASSES_ROOT,
|
||||
pszAssoc,
|
||||
0,
|
||||
KEY_READ,
|
||||
&This->hkeySource);
|
||||
if (FAILED(hr))
|
||||
return HRESULT_FROM_WIN32(ERROR_NO_ASSOCIATION);
|
||||
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT,
|
||||
pszAssoc,
|
||||
0,
|
||||
KEY_READ,
|
||||
&This->hkeySource);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return E_FAIL;
|
||||
/* if this is not a prog id */
|
||||
if ((*pszAssoc == '.') || (*pszAssoc == '{'))
|
||||
{
|
||||
hr = RegOpenKeyExW(This->hkeySource,
|
||||
szProgID,
|
||||
0,
|
||||
KEY_READ,
|
||||
&This->hkeyProgID);
|
||||
if (FAILED(hr))
|
||||
FIXME("Don't know what to return\n");
|
||||
RegOpenKeyExW(This->hkeySource,
|
||||
szProgID,
|
||||
0,
|
||||
KEY_READ,
|
||||
&This->hkeyProgID);
|
||||
}
|
||||
else
|
||||
This->hkeyProgID = This->hkeySource;
|
||||
|
@ -561,7 +567,158 @@ static HRESULT WINAPI IQueryAssociations_fnInit(
|
|||
return S_OK;
|
||||
}
|
||||
else
|
||||
return E_FAIL;
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
static HRESULT ASSOC_GetValue(HKEY hkey, WCHAR ** pszText)
|
||||
{
|
||||
DWORD len;
|
||||
LONG ret;
|
||||
|
||||
assert(pszText);
|
||||
ret = RegQueryValueExW(hkey, NULL, 0, NULL, NULL, &len);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
if (!len)
|
||||
return E_FAIL;
|
||||
*pszText = HeapAlloc(GetProcessHeap(), 0, len);
|
||||
if (!*pszText)
|
||||
return E_OUTOFMEMORY;
|
||||
ret = RegQueryValueExW(hkey, NULL, 0, NULL, (LPBYTE)*pszText,
|
||||
&len);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, *pszText);
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT ASSOC_GetExecutable(IQueryAssociationsImpl *This,
|
||||
LPCWSTR pszExtra, LPWSTR path,
|
||||
DWORD pathlen, DWORD *len)
|
||||
{
|
||||
HKEY hkeyCommand;
|
||||
HKEY hkeyFile;
|
||||
HKEY hkeyShell;
|
||||
HKEY hkeyVerb;
|
||||
HRESULT hr;
|
||||
LONG ret;
|
||||
WCHAR * pszCommand;
|
||||
WCHAR * pszEnd;
|
||||
WCHAR * pszExtraFromReg = NULL;
|
||||
WCHAR * pszFileType;
|
||||
WCHAR * pszStart;
|
||||
static const WCHAR commandW[] = { 'c','o','m','m','a','n','d',0 };
|
||||
static const WCHAR shellW[] = { 's','h','e','l','l',0 };
|
||||
|
||||
assert(len);
|
||||
|
||||
hr = ASSOC_GetValue(This->hkeySource, &pszFileType);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, pszFileType, 0, KEY_READ, &hkeyFile);
|
||||
HeapFree(GetProcessHeap(), 0, pszFileType);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
|
||||
ret = RegOpenKeyExW(hkeyFile, shellW, 0, KEY_READ, &hkeyShell);
|
||||
RegCloseKey(hkeyFile);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
|
||||
if (!pszExtra)
|
||||
{
|
||||
hr = ASSOC_GetValue(hkeyShell, &pszExtraFromReg);
|
||||
/* if no default action */
|
||||
if (hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND))
|
||||
{
|
||||
DWORD rlen;
|
||||
ret = RegQueryInfoKeyW(hkeyShell, 0, 0, 0, 0, &rlen, 0, 0, 0, 0, 0, 0);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(hkeyShell);
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
}
|
||||
rlen++;
|
||||
pszExtraFromReg = HeapAlloc(GetProcessHeap(), 0, rlen * sizeof(WCHAR));
|
||||
if (!pszExtraFromReg)
|
||||
{
|
||||
RegCloseKey(hkeyShell);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
ret = RegEnumKeyExW(hkeyShell, 0, pszExtraFromReg, &rlen, 0, NULL, NULL, NULL);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(hkeyShell);
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
}
|
||||
}
|
||||
else if (FAILED(hr))
|
||||
{
|
||||
RegCloseKey(hkeyShell);
|
||||
return hr;
|
||||
}
|
||||
}
|
||||
|
||||
ret = RegOpenKeyExW(hkeyShell, pszExtra ? pszExtra : pszExtraFromReg, 0,
|
||||
KEY_READ, &hkeyVerb);
|
||||
HeapFree(GetProcessHeap(), 0, pszExtraFromReg);
|
||||
RegCloseKey(hkeyShell);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
|
||||
ret = RegOpenKeyExW(hkeyVerb, commandW, 0, KEY_READ, &hkeyCommand);
|
||||
RegCloseKey(hkeyVerb);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return HRESULT_FROM_WIN32(ret);
|
||||
hr = ASSOC_GetValue(hkeyCommand, &pszCommand);
|
||||
RegCloseKey(hkeyCommand);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
/* cleanup pszCommand */
|
||||
if (pszCommand[0] == '"')
|
||||
{
|
||||
pszStart = pszCommand + 1;
|
||||
pszEnd = strchrW(pszStart, '"');
|
||||
}
|
||||
else
|
||||
{
|
||||
pszStart = pszCommand;
|
||||
pszEnd = strchrW(pszStart, ' ');
|
||||
}
|
||||
if (pszEnd)
|
||||
*pszEnd = 0;
|
||||
|
||||
*len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL);
|
||||
HeapFree(GetProcessHeap(), 0, pszCommand);
|
||||
if (!*len)
|
||||
return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT ASSOC_ReturnData(LPWSTR out, DWORD *outlen, LPCWSTR data,
|
||||
DWORD datalen)
|
||||
{
|
||||
assert(outlen);
|
||||
|
||||
if (out)
|
||||
{
|
||||
if (*outlen < datalen)
|
||||
{
|
||||
*outlen = datalen;
|
||||
return E_POINTER;
|
||||
}
|
||||
*outlen = datalen;
|
||||
lstrcpynW(out, data, datalen);
|
||||
return S_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
*outlen = datalen;
|
||||
return S_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -590,10 +747,88 @@ static HRESULT WINAPI IQueryAssociations_fnGetString(
|
|||
DWORD *pcchOut)
|
||||
{
|
||||
IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface;
|
||||
const ASSOCF cfUnimplemented = ~(0);
|
||||
DWORD len = 0;
|
||||
HRESULT hr;
|
||||
WCHAR path[MAX_PATH];
|
||||
|
||||
FIXME("(%p,0x%8x,0x%8x,%s,%p,%p)-stub!\n", This, cfFlags, str,
|
||||
TRACE("(%p,0x%8x,0x%8x,%s,%p,%p)\n", This, cfFlags, str,
|
||||
debugstr_w(pszExtra), pszOut, pcchOut);
|
||||
return E_NOTIMPL;
|
||||
|
||||
if (cfFlags & cfUnimplemented)
|
||||
FIXME("%08x: unimplemented flags!\n", cfFlags & cfUnimplemented);
|
||||
|
||||
if (!pcchOut)
|
||||
return E_UNEXPECTED;
|
||||
|
||||
switch (str)
|
||||
{
|
||||
case ASSOCSTR_EXECUTABLE:
|
||||
{
|
||||
hr = ASSOC_GetExecutable(This, pszExtra, path, MAX_PATH, &len);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
len++;
|
||||
return ASSOC_ReturnData(pszOut, pcchOut, path, len);
|
||||
}
|
||||
|
||||
case ASSOCSTR_FRIENDLYAPPNAME:
|
||||
{
|
||||
PVOID verinfoW = NULL;
|
||||
DWORD size, retval = 0;
|
||||
UINT flen;
|
||||
WCHAR *bufW;
|
||||
static const WCHAR translationW[] = {
|
||||
'\\','V','a','r','F','i','l','e','I','n','f','o',
|
||||
'\\','T','r','a','n','s','l','a','t','i','o','n',0
|
||||
};
|
||||
static const WCHAR fileDescFmtW[] = {
|
||||
'\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o',
|
||||
'\\','%','0','4','x','%','0','4','x',
|
||||
'\\','F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0
|
||||
};
|
||||
WCHAR fileDescW[41];
|
||||
|
||||
hr = ASSOC_GetExecutable(This, pszExtra, path, MAX_PATH, &len);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
retval = GetFileVersionInfoSizeW(path, &size);
|
||||
if (!retval)
|
||||
goto get_friendly_name_fail;
|
||||
verinfoW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, retval);
|
||||
if (!verinfoW)
|
||||
return E_OUTOFMEMORY;
|
||||
if (!GetFileVersionInfoW(path, 0, retval, verinfoW))
|
||||
goto get_friendly_name_fail;
|
||||
if (VerQueryValueW(verinfoW, translationW, (LPVOID *)&bufW, &flen))
|
||||
{
|
||||
UINT i;
|
||||
DWORD *langCodeDesc = (DWORD *)bufW;
|
||||
for (i = 0; i < flen / sizeof(DWORD); i++)
|
||||
{
|
||||
sprintfW(fileDescW, fileDescFmtW, LOWORD(langCodeDesc[i]),
|
||||
HIWORD(langCodeDesc[i]));
|
||||
if (VerQueryValueW(verinfoW, fileDescW, (LPVOID *)&bufW, &flen))
|
||||
{
|
||||
/* Does strlenW(bufW) == 0 mean we use the filename? */
|
||||
len = strlenW(bufW) + 1;
|
||||
TRACE("found FileDescription: %s\n", debugstr_w(bufW));
|
||||
return ASSOC_ReturnData(pszOut, pcchOut, bufW, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
get_friendly_name_fail:
|
||||
PathRemoveExtensionW(path);
|
||||
PathStripPathW(path);
|
||||
TRACE("using filename: %s\n", debugstr_w(path));
|
||||
return ASSOC_ReturnData(pszOut, pcchOut, path, strlenW(path) + 1);
|
||||
}
|
||||
|
||||
default:
|
||||
FIXME("assocstr %d unimplemented!\n", str);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
|
|
@ -91,8 +91,7 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt
|
|||
if(!*lppList)
|
||||
{
|
||||
/* An empty list. Allocate space for terminal ulSize also */
|
||||
*lppList = (LPDATABLOCK_HEADER)LocalAlloc(LMEM_ZEROINIT,
|
||||
ulSize + sizeof(ULONG));
|
||||
*lppList = LocalAlloc(LMEM_ZEROINIT, ulSize + sizeof(ULONG));
|
||||
lpInsertAt = *lppList;
|
||||
}
|
||||
else
|
||||
|
@ -109,8 +108,7 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt
|
|||
}
|
||||
|
||||
/* Increase the size of the list */
|
||||
lpIter = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)*lppList,
|
||||
ulTotalSize + ulSize+sizeof(ULONG),
|
||||
lpIter = LocalReAlloc(*lppList, ulTotalSize + ulSize+sizeof(ULONG),
|
||||
LMEM_ZEROINIT | LMEM_MOVEABLE);
|
||||
if(lpIter)
|
||||
{
|
||||
|
@ -247,7 +245,7 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList)
|
|||
if(*lppList)
|
||||
{
|
||||
/* Free any existing list */
|
||||
LocalFree((HLOCAL)*lppList);
|
||||
LocalFree(*lppList);
|
||||
*lppList = NULL;
|
||||
}
|
||||
|
||||
|
@ -283,10 +281,9 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList)
|
|||
LPDATABLOCK_HEADER lpTemp;
|
||||
|
||||
if (pItem == bBuff)
|
||||
lpTemp = (LPDATABLOCK_HEADER)LocalAlloc(LMEM_ZEROINIT, ulSize);
|
||||
lpTemp = LocalAlloc(LMEM_ZEROINIT, ulSize);
|
||||
else
|
||||
lpTemp = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)pItem, ulSize,
|
||||
LMEM_ZEROINIT|LMEM_MOVEABLE);
|
||||
lpTemp = LocalReAlloc(pItem, ulSize, LMEM_ZEROINIT|LMEM_MOVEABLE);
|
||||
|
||||
if(!lpTemp)
|
||||
{
|
||||
|
@ -312,7 +309,7 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList)
|
|||
|
||||
/* If we allocated space, free it */
|
||||
if(pItem != bBuff)
|
||||
LocalFree((HLOCAL)pItem);
|
||||
LocalFree(pItem);
|
||||
|
||||
return hRet;
|
||||
}
|
||||
|
@ -336,7 +333,7 @@ VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList)
|
|||
TRACE("(%p)\n", lpList);
|
||||
|
||||
if (lpList)
|
||||
LocalFree((HLOCAL)lpList);
|
||||
LocalFree(lpList);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -389,20 +386,19 @@ BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature)
|
|||
lpList = NextItem(lpList);
|
||||
|
||||
/* Resize the list */
|
||||
ulNewSize = LocalSize((HLOCAL)*lppList) - lpItem->cbSize;
|
||||
ulNewSize = LocalSize(*lppList) - lpItem->cbSize;
|
||||
|
||||
/* Copy following elements over lpItem */
|
||||
memmove(lpItem, lpNext, (char *)lpList - (char *)lpNext + sizeof(ULONG));
|
||||
|
||||
if(ulNewSize <= sizeof(ULONG))
|
||||
{
|
||||
LocalFree((HLOCAL)*lppList);
|
||||
LocalFree(*lppList);
|
||||
*lppList = NULL; /* Removed the last element */
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)*lppList, ulNewSize,
|
||||
LMEM_ZEROINIT|LMEM_MOVEABLE);
|
||||
lpList = LocalReAlloc(*lppList, ulNewSize, LMEM_ZEROINIT|LMEM_MOVEABLE);
|
||||
if(lpList)
|
||||
*lppList = lpList;
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ static ULONG WINAPI IStream_fnRelease(IStream *iface)
|
|||
if (!refCount)
|
||||
{
|
||||
IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */
|
||||
LocalFree((HLOCAL)This->lpszPath);
|
||||
LocalFree(This->lpszPath);
|
||||
CloseHandle(This->hFile);
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* SHLWAPI ordinal functions
|
||||
*
|
||||
* Copyright 1997 Marcus Meissner
|
||||
* 1998 Jürgen Schmied
|
||||
* 1998 Jürgen Schmied
|
||||
* 2001-2003 Jon Griffiths
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
@ -76,10 +76,9 @@ BOOL WINAPI SHAboutInfoW(LPWSTR,DWORD);
|
|||
*
|
||||
* Internal implemetation of SHLWAPI_11.
|
||||
*/
|
||||
static
|
||||
HANDLE WINAPI SHLWAPI_DupSharedHandle(HANDLE hShared, DWORD dwDstProcId,
|
||||
DWORD dwSrcProcId, DWORD dwAccess,
|
||||
DWORD dwOptions)
|
||||
static HANDLE SHLWAPI_DupSharedHandle(HANDLE hShared, DWORD dwDstProcId,
|
||||
DWORD dwSrcProcId, DWORD dwAccess,
|
||||
DWORD dwOptions)
|
||||
{
|
||||
HANDLE hDst, hSrc;
|
||||
DWORD dwMyProcId = GetCurrentProcessId();
|
||||
|
@ -1251,11 +1250,11 @@ BOOL WINAPI SHIsSameObject(IUnknown* lpInt1, IUnknown* lpInt2)
|
|||
if (lpInt1 == lpInt2)
|
||||
return TRUE;
|
||||
|
||||
if (!SUCCEEDED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown,
|
||||
if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown,
|
||||
(LPVOID *)&lpUnknown1)))
|
||||
return FALSE;
|
||||
|
||||
if (!SUCCEEDED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown,
|
||||
if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown,
|
||||
(LPVOID *)&lpUnknown2)))
|
||||
return FALSE;
|
||||
|
||||
|
@ -2260,6 +2259,25 @@ HRESULT WINAPI QISearch(
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.220]
|
||||
*
|
||||
* Set the Font for a window and the "PropDlgFont" property of the parent window.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Parent Window to set the property
|
||||
* id [I] Index of child Window to set the Font
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHSetDefaultDialogFont(HWND hWnd, INT id)
|
||||
{
|
||||
FIXME("(%p, %d) stub\n", hWnd, id);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.221]
|
||||
*
|
||||
|
@ -2798,7 +2816,7 @@ HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEM
|
|||
*
|
||||
* _SHPackDispParamsV
|
||||
*/
|
||||
HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, va_list valist)
|
||||
HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, __ms_va_list valist)
|
||||
{
|
||||
VARIANTARG *iter;
|
||||
|
||||
|
@ -2852,14 +2870,12 @@ HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt,
|
|||
*/
|
||||
HRESULT WINAPIV SHPackDispParams(DISPPARAMS *params, VARIANTARG *args, UINT cnt, ...)
|
||||
{
|
||||
va_list valist;
|
||||
__ms_va_list valist;
|
||||
HRESULT hres;
|
||||
|
||||
va_start(valist, cnt);
|
||||
|
||||
__ms_va_start(valist, cnt);
|
||||
hres = SHPackDispParamsV(params, args, cnt, valist);
|
||||
|
||||
va_end(valist);
|
||||
__ms_va_end(valist);
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
@ -2985,7 +3001,7 @@ HRESULT WINAPIV IUnknown_CPContainerInvokeParam(
|
|||
IConnectionPoint *iCP;
|
||||
IConnectionPointContainer *iCPC;
|
||||
DISPPARAMS dispParams = {buffer, NULL, cParams, 0};
|
||||
va_list valist;
|
||||
__ms_va_list valist;
|
||||
|
||||
if (!container)
|
||||
return E_NOINTERFACE;
|
||||
|
@ -2999,9 +3015,9 @@ HRESULT WINAPIV IUnknown_CPContainerInvokeParam(
|
|||
if(FAILED(result))
|
||||
return result;
|
||||
|
||||
va_start(valist, cParams);
|
||||
__ms_va_start(valist, cParams);
|
||||
SHPackDispParamsV(&dispParams, buffer, cParams, valist);
|
||||
va_end(valist);
|
||||
__ms_va_end(valist);
|
||||
|
||||
result = SHLWAPI_InvokeByIID(iCP, riid, dispId, &dispParams);
|
||||
IConnectionPoint_Release(iCP);
|
||||
|
@ -3527,7 +3543,7 @@ HRESULT WINAPI SHIShellFolder_EnumObjects(LPSHELLFOLDER lpFolder, HWND hwnd, SHC
|
|||
}
|
||||
|
||||
/* INTERNAL: Map from HLS color space to RGB */
|
||||
static WORD WINAPI ConvertHue(int wHue, WORD wMid1, WORD wMid2)
|
||||
static WORD ConvertHue(int wHue, WORD wMid1, WORD wMid2)
|
||||
{
|
||||
wHue = wHue > 240 ? wHue - 240 : wHue < 0 ? wHue + 240 : wHue;
|
||||
|
||||
|
@ -3672,10 +3688,34 @@ DWORD WINAPI MLClearMLHInstance(DWORD x)
|
|||
return 0xabba1247;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.432]
|
||||
*
|
||||
* See SHSendMessageBroadcastW
|
||||
*
|
||||
*/
|
||||
DWORD WINAPI SHSendMessageBroadcastA(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return SendMessageTimeoutA(HWND_BROADCAST, uMsg, wParam, lParam,
|
||||
SMTO_ABORTIFHUNG, 2000, NULL);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.433]
|
||||
*
|
||||
* A wrapper for sending Broadcast Messages to all top level Windows
|
||||
*
|
||||
*/
|
||||
DWORD WINAPI SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return SendMessageTimeoutW(HWND_BROADCAST, uMsg, wParam, lParam,
|
||||
SMTO_ABORTIFHUNG, 2000, NULL);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.436]
|
||||
*
|
||||
* Convert an Unicode string CLSID into a CLSID.
|
||||
* Convert a Unicode string CLSID into a CLSID.
|
||||
*
|
||||
* PARAMS
|
||||
* idstr [I] string containing a CLSID in text form
|
||||
|
@ -4269,10 +4309,10 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText,
|
|||
WCHAR szText[100], szTitle[100];
|
||||
LPCWSTR pszText = szText, pszTitle = szTitle;
|
||||
LPWSTR pszTemp;
|
||||
va_list args;
|
||||
__ms_va_list args;
|
||||
int ret;
|
||||
|
||||
va_start(args, uType);
|
||||
__ms_va_start(args, uType);
|
||||
|
||||
TRACE("(%p,%p,%p,%p,%08x)\n", hInstance, hWnd, lpText, lpCaption, uType);
|
||||
|
||||
|
@ -4289,10 +4329,10 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText,
|
|||
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
|
||||
pszText, 0, 0, (LPWSTR)&pszTemp, 0, &args);
|
||||
|
||||
va_end(args);
|
||||
__ms_va_end(args);
|
||||
|
||||
ret = MessageBoxW(hWnd, pszTemp, pszTitle, uType);
|
||||
LocalFree((HLOCAL)pszTemp);
|
||||
LocalFree(pszTemp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -1156,7 +1156,7 @@ BOOL WINAPI PathFileExistsDefExtA(LPSTR lpszPath,DWORD dwWhich)
|
|||
*
|
||||
* Internal helper for SHLWAPI_PathFindOnPathExA/W.
|
||||
*/
|
||||
static BOOL WINAPI SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich)
|
||||
static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich)
|
||||
{
|
||||
static const WCHAR szSystem[] = { 'S','y','s','t','e','m','\0'};
|
||||
static const WCHAR szPath[] = { 'P','A','T','H','\0'};
|
||||
|
@ -1792,7 +1792,7 @@ BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
|
|||
/*************************************************************************
|
||||
* PathMatchSingleMaskA [internal]
|
||||
*/
|
||||
static BOOL WINAPI PathMatchSingleMaskA(LPCSTR name, LPCSTR mask)
|
||||
static BOOL PathMatchSingleMaskA(LPCSTR name, LPCSTR mask)
|
||||
{
|
||||
while (*name && *mask && *mask!=';')
|
||||
{
|
||||
|
@ -1826,7 +1826,7 @@ static BOOL WINAPI PathMatchSingleMaskA(LPCSTR name, LPCSTR mask)
|
|||
/*************************************************************************
|
||||
* PathMatchSingleMaskW [internal]
|
||||
*/
|
||||
static BOOL WINAPI PathMatchSingleMaskW(LPCWSTR name, LPCWSTR mask)
|
||||
static BOOL PathMatchSingleMaskW(LPCWSTR name, LPCWSTR mask)
|
||||
{
|
||||
while (*name && *mask && *mask != ';')
|
||||
{
|
||||
|
@ -2991,7 +2991,7 @@ UINT WINAPI PathGetCharTypeW(WCHAR ch)
|
|||
*
|
||||
* Internal helper for PathMakeSystemFolderW.
|
||||
*/
|
||||
static BOOL WINAPI SHLWAPI_UseSystemForSystemFolders(void)
|
||||
static BOOL SHLWAPI_UseSystemForSystemFolders(void)
|
||||
{
|
||||
static BOOL bCheckedReg = FALSE;
|
||||
static BOOL bUseSystemForSystemFolders = FALSE;
|
||||
|
|
|
@ -66,10 +66,10 @@ HRESULT WINAPI SHRegGetCLSIDKeyW(REFGUID,LPCWSTR,BOOL,BOOL,PHKEY);
|
|||
* Function: Return the proper registry key from the HUSKEY structure
|
||||
* also allow special predefined values.
|
||||
*/
|
||||
static HKEY WINAPI REG_GetHKEYFromHUSKEY(HUSKEY hUSKey, BOOL which)
|
||||
static HKEY REG_GetHKEYFromHUSKEY(HUSKEY hUSKey, BOOL which)
|
||||
{
|
||||
HKEY test = (HKEY) hUSKey;
|
||||
LPSHUSKEY mihk = (LPSHUSKEY) hUSKey;
|
||||
HKEY test = hUSKey;
|
||||
LPSHUSKEY mihk = hUSKey;
|
||||
|
||||
if ((test == HKEY_CLASSES_ROOT) ||
|
||||
(test == HKEY_CURRENT_CONFIG) ||
|
||||
|
@ -174,7 +174,7 @@ LONG WINAPI SHRegOpenUSKeyW(LPCWSTR Path, REGSAM AccessType, HUSKEY hRelativeUSK
|
|||
|
||||
TRACE("HUSKEY=%p\n", hKey);
|
||||
if (phNewUSKey)
|
||||
*phNewUSKey = (HUSKEY)hKey;
|
||||
*phNewUSKey = hKey;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1398,21 +1398,21 @@ DWORD WINAPI SHQueryValueExA( HKEY hKey, LPCSTR lpszValue,
|
|||
char cNull = '\0';
|
||||
nBytesToAlloc = dwUnExpDataLen;
|
||||
|
||||
szData = (LPSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
RegQueryValueExA (hKey, lpszValue, lpReserved, NULL, (LPBYTE)szData, &nBytesToAlloc);
|
||||
dwExpDataLen = ExpandEnvironmentStringsA(szData, &cNull, 1);
|
||||
dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen);
|
||||
LocalFree((HLOCAL) szData);
|
||||
LocalFree(szData);
|
||||
}
|
||||
else
|
||||
{
|
||||
nBytesToAlloc = (lstrlenA(pvData)+1) * sizeof (CHAR);
|
||||
szData = (LPSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc );
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
lstrcpyA(szData, pvData);
|
||||
dwExpDataLen = ExpandEnvironmentStringsA(szData, pvData, *pcbData / sizeof(CHAR));
|
||||
if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA;
|
||||
dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen);
|
||||
LocalFree((HLOCAL) szData);
|
||||
LocalFree(szData);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1459,21 +1459,21 @@ DWORD WINAPI SHQueryValueExW(HKEY hKey, LPCWSTR lpszValue,
|
|||
WCHAR cNull = '\0';
|
||||
nBytesToAlloc = dwUnExpDataLen;
|
||||
|
||||
szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
RegQueryValueExW (hKey, lpszValue, lpReserved, NULL, (LPBYTE)szData, &nBytesToAlloc);
|
||||
dwExpDataLen = ExpandEnvironmentStringsW(szData, &cNull, 1);
|
||||
dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen);
|
||||
LocalFree((HLOCAL) szData);
|
||||
LocalFree(szData);
|
||||
}
|
||||
else
|
||||
{
|
||||
nBytesToAlloc = (lstrlenW(pvData) + 1) * sizeof(WCHAR);
|
||||
szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc );
|
||||
szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc);
|
||||
lstrcpyW(szData, pvData);
|
||||
dwExpDataLen = ExpandEnvironmentStringsW(szData, pvData, *pcbData/sizeof(WCHAR) );
|
||||
if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA;
|
||||
dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen);
|
||||
LocalFree((HLOCAL) szData);
|
||||
LocalFree(szData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -217,7 +217,7 @@
|
|||
217 stdcall -noname SHUnicodeToAnsi(wstr ptr ptr)
|
||||
218 stdcall -noname SHUnicodeToAnsiCP(long wstr ptr ptr)
|
||||
219 stdcall -noname QISearch(long long long long)
|
||||
220 stub -noname SHSetDefaultDialogFont
|
||||
220 stdcall -noname SHSetDefaultDialogFont(ptr long)
|
||||
221 stdcall -noname SHRemoveDefaultDialogFont(ptr)
|
||||
222 stdcall -noname SHGlobalCounterCreate(long)
|
||||
223 stdcall -noname SHGlobalCounterGetValue(long)
|
||||
|
@ -429,8 +429,8 @@
|
|||
429 stdcall -noname MLIsMLHInstance(long)
|
||||
430 stdcall -noname MLSetMLHInstance(long long)
|
||||
431 stdcall -noname MLClearMLHInstance(long)
|
||||
432 stub -noname SHSendMessageBroadcastA
|
||||
433 stub -noname SHSendMessageBroadcastW
|
||||
432 stdcall -noname SHSendMessageBroadcastA(long long long)
|
||||
433 stdcall -noname SHSendMessageBroadcastW(long long long)
|
||||
434 stdcall -noname SendMessageTimeoutWrapW(long long long long long long ptr) user32.SendMessageTimeoutW
|
||||
435 stdcall -noname CLSIDFromProgIDWrap(wstr ptr) ole32.CLSIDFromProgID
|
||||
436 stdcall -noname CLSIDFromStringWrap(wstr ptr)
|
||||
|
|
|
@ -18,20 +18,23 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "エラー!"
|
||||
FONT 9, "MS UI Gothic"
|
||||
CAPTION "エラー!"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
|
||||
LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
|
||||
CHECKBOX "今後はこのメッセージを表示しない(&i)", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
|
||||
CHECKBOX "今後はこのメッセージを表示しない(&i)", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"キャンセル(&C)" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"はい(&Y)" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"いいえ(&N)" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"キャンセル(&C)" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"はい(&Y)" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON L"いいえ(&N)" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
}
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
@ -41,3 +44,5 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_TIME_INTERVAL_MINUTES " min"
|
||||
IDS_TIME_INTERVAL_SECONDS " sec"
|
||||
}
|
||||
|
||||
#pragma code_page(default)
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "¿¡·¯!"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
|
||||
LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
|
||||
|
|
|
@ -26,7 +26,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
|||
IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "错误!"
|
||||
FONT 9, "MS Song"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
|
||||
LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
|
||||
|
@ -50,7 +50,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
|||
IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "錯誤!"
|
||||
FONT 8, "PMingLiu"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
|
||||
LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
|
||||
|
|
|
@ -911,7 +911,7 @@ LPSTR WINAPI StrDupA(LPCSTR lpszStr)
|
|||
TRACE("(%s)\n",debugstr_a(lpszStr));
|
||||
|
||||
iLen = lpszStr ? strlen(lpszStr) + 1 : 1;
|
||||
lpszRet = (LPSTR)LocalAlloc(LMEM_FIXED, iLen);
|
||||
lpszRet = LocalAlloc(LMEM_FIXED, iLen);
|
||||
|
||||
if (lpszRet)
|
||||
{
|
||||
|
@ -936,7 +936,7 @@ LPWSTR WINAPI StrDupW(LPCWSTR lpszStr)
|
|||
TRACE("(%s)\n",debugstr_w(lpszStr));
|
||||
|
||||
iLen = (lpszStr ? strlenW(lpszStr) + 1 : 1) * sizeof(WCHAR);
|
||||
lpszRet = (LPWSTR)LocalAlloc(LMEM_FIXED, iLen);
|
||||
lpszRet = LocalAlloc(LMEM_FIXED, iLen);
|
||||
|
||||
if (lpszRet)
|
||||
{
|
||||
|
|
|
@ -140,7 +140,7 @@ HRESULT WINAPI SHGetThreadRef(IUnknown **lppUnknown)
|
|||
if (!lppUnknown || SHLWAPI_ThreadRef_index == TLS_OUT_OF_INDEXES)
|
||||
return E_NOINTERFACE;
|
||||
|
||||
*lppUnknown = (IUnknown*)TlsGetValue(SHLWAPI_ThreadRef_index);
|
||||
*lppUnknown = TlsGetValue(SHLWAPI_ThreadRef_index);
|
||||
if (!*lppUnknown)
|
||||
return E_NOINTERFACE;
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ static const unsigned char HashDataLookup[256] = {
|
|||
|
||||
static DWORD get_scheme_code(LPCWSTR scheme, DWORD scheme_len)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
for(i=0; i < sizeof(shlwapi_schemes)/sizeof(shlwapi_schemes[0]); i++) {
|
||||
if(scheme_len == strlenW(shlwapi_schemes[i].scheme_name)
|
||||
|
@ -314,8 +314,8 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized,
|
|||
HRESULT hr = S_OK;
|
||||
DWORD EscapeFlags;
|
||||
LPWSTR lpszUrlCpy, wk1, wk2, mp, mp2, root;
|
||||
INT nByteLen, state;
|
||||
DWORD nLen, nWkLen;
|
||||
INT state;
|
||||
DWORD nByteLen, nLen, nWkLen;
|
||||
WCHAR slash = '/';
|
||||
|
||||
static const WCHAR wszFile[] = {'f','i','l','e',':'};
|
||||
|
@ -332,7 +332,7 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
nByteLen = (lstrlenW(pszUrl) + 1) * sizeof(WCHAR); /* length in bytes */
|
||||
nByteLen = (strlenW(pszUrl) + 1) * sizeof(WCHAR); /* length in bytes */
|
||||
lpszUrlCpy = HeapAlloc(GetProcessHeap(), 0,
|
||||
INTERNET_MAX_URL_LENGTH * sizeof(WCHAR));
|
||||
|
||||
|
@ -1589,7 +1589,7 @@ static HRESULT URL_GuessScheme(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut)
|
|||
index++;
|
||||
}
|
||||
RegCloseKey(newkey);
|
||||
return -1;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT URL_ApplyDefault(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut)
|
||||
|
@ -1652,7 +1652,7 @@ HRESULT WINAPI UrlApplySchemeW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut, DW
|
|||
if (res1) {
|
||||
/* no scheme in input, need to see if we need to guess */
|
||||
if (dwFlags & URL_APPLY_GUESSSCHEME) {
|
||||
if ((ret = URL_GuessScheme(pszIn, pszOut, pcchOut)) != -1)
|
||||
if ((ret = URL_GuessScheme(pszIn, pszOut, pcchOut)) != E_FAIL)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -284,7 +284,7 @@ static UINT WPRINTF_GetLen( WPRINTF_FORMAT *format, WPRINTF_DATA *arg,
|
|||
* Success: The number of characters written.
|
||||
* Failure: -1.
|
||||
*/
|
||||
INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, va_list args )
|
||||
INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, __ms_va_list args )
|
||||
{
|
||||
WPRINTF_FORMAT format;
|
||||
LPSTR p = buffer;
|
||||
|
@ -389,7 +389,7 @@ INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, va_list args )
|
|||
*
|
||||
* See wvnsprintfA.
|
||||
*/
|
||||
INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, va_list args )
|
||||
INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, __ms_va_list args )
|
||||
{
|
||||
WPRINTF_FORMAT format;
|
||||
LPWSTR p = buffer;
|
||||
|
@ -504,12 +504,12 @@ INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, va_list args )
|
|||
*/
|
||||
int WINAPIV wnsprintfA(LPSTR lpOut, int cchLimitIn, LPCSTR lpFmt, ...)
|
||||
{
|
||||
va_list valist;
|
||||
__ms_va_list valist;
|
||||
INT res;
|
||||
|
||||
va_start( valist, lpFmt );
|
||||
__ms_va_start( valist, lpFmt );
|
||||
res = wvnsprintfA( lpOut, cchLimitIn, lpFmt, valist );
|
||||
va_end( valist );
|
||||
__ms_va_end( valist );
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -521,11 +521,11 @@ int WINAPIV wnsprintfA(LPSTR lpOut, int cchLimitIn, LPCSTR lpFmt, ...)
|
|||
*/
|
||||
int WINAPIV wnsprintfW(LPWSTR lpOut, int cchLimitIn, LPCWSTR lpFmt, ...)
|
||||
{
|
||||
va_list valist;
|
||||
__ms_va_list valist;
|
||||
INT res;
|
||||
|
||||
va_start( valist, lpFmt );
|
||||
__ms_va_start( valist, lpFmt );
|
||||
res = wvnsprintfW( lpOut, cchLimitIn, lpFmt, valist );
|
||||
va_end( valist );
|
||||
__ms_va_end( valist );
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -83,10 +83,10 @@ DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
|
|||
DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
|
||||
#define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
|
||||
|
||||
/* Undocumented registry functions */
|
||||
|
||||
HKEY WINAPI SHRegDuplicateHKey(HKEY);
|
||||
|
||||
/* Undocumented registry functions */
|
||||
|
||||
DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR);
|
||||
DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR);
|
||||
#define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey)
|
||||
|
@ -193,6 +193,7 @@ enum
|
|||
ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */
|
||||
ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */
|
||||
ASSOCF_IGNOREBASECLASS = 0x200, /* Don't read baseclass */
|
||||
ASSOCF_INIT_IGNOREUNKNOWN = 0x400, /* Fail for unknown progid */
|
||||
};
|
||||
|
||||
typedef DWORD ASSOCF;
|
||||
|
@ -245,9 +246,7 @@ typedef enum
|
|||
|
||||
typedef struct IQueryAssociations *LPQUERYASSOCIATIONS;
|
||||
|
||||
#ifndef INTERFACE
|
||||
#define INTERFACE IQueryAssociations
|
||||
#endif
|
||||
DECLARE_INTERFACE_(IQueryAssociations,IUnknown)
|
||||
{
|
||||
/*** IUnknown methods ***/
|
||||
|
@ -341,7 +340,7 @@ int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
|
|||
|
||||
HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
|
||||
HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
|
||||
#define PathCreateFromUrl WINELIB_NANE_AW(PathCreateFromUrl)
|
||||
#define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl)
|
||||
|
||||
BOOL WINAPI PathFileExistsA(LPCSTR);
|
||||
BOOL WINAPI PathFileExistsW(LPCWSTR);
|
||||
|
@ -668,17 +667,17 @@ BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
|
|||
|
||||
HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
|
||||
HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
|
||||
#define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
|
||||
#define UrlUnescape WINELIB_NAME_AW(UrlUnescape)
|
||||
|
||||
#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
|
||||
y | URL_UNESCAPE_INPLACE)
|
||||
#define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \
|
||||
y | URL_UNESCAPE_INPLACE)
|
||||
#define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace)
|
||||
#define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace)
|
||||
|
||||
HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
|
||||
HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
|
||||
#define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath)
|
||||
#define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath)
|
||||
|
||||
typedef struct tagPARSEDURLA {
|
||||
DWORD cbSize;
|
||||
|
@ -700,7 +699,7 @@ typedef struct tagPARSEDURLW {
|
|||
|
||||
HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu);
|
||||
HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu);
|
||||
#define ParseURL WINELIB_AW_NAME(ParseUrl)
|
||||
#define ParseURL WINELIB_NAME_AW(ParseUrl)
|
||||
|
||||
#endif /* NO_SHLWAPI_PATH */
|
||||
|
||||
|
@ -784,7 +783,7 @@ LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
|
|||
/* A/W Pairing is broken for this function */
|
||||
LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
|
||||
LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
|
||||
#ifndef __WINESRC__
|
||||
#ifndef WINE_NO_UNICODE_MACROS
|
||||
#ifdef UNICODE
|
||||
#define StrFormatByteSize StrFormatByteSizeW
|
||||
#else
|
||||
|
@ -860,8 +859,8 @@ BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
|
|||
BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
|
||||
#define StrTrim WINELIB_NAME_AW(StrTrim)
|
||||
|
||||
INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list);
|
||||
INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list);
|
||||
INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,__ms_va_list);
|
||||
INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,__ms_va_list);
|
||||
#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
|
||||
|
||||
INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
|
||||
|
@ -1065,7 +1064,7 @@ BOOL WINAPI IsOS(DWORD);
|
|||
#define TPS_EXECUTEIO 0x00000001
|
||||
#define TPS_LONGEXECTIME 0x00000008
|
||||
|
||||
#include <poppack.h>
|
||||
#include <poppack.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
|
|
@ -300,6 +300,18 @@ typedef unsigned int UINT,*PUINT,*LPUINT;
|
|||
|
||||
typedef void *LPVOID;
|
||||
|
||||
#ifndef __ms_va_list
|
||||
# if defined(__x86_64__) && defined (__GNUC__)
|
||||
# define __ms_va_list __builtin_ms_va_list
|
||||
# define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg)
|
||||
# define __ms_va_end(list) __builtin_ms_va_end(list)
|
||||
# else
|
||||
# define __ms_va_list va_list
|
||||
# define __ms_va_start(list,arg) va_start(list,arg)
|
||||
# define __ms_va_end(list) va_end(list)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Check if ntdef.h already defined these for us
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue