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