Allow VerQueryValueW to query 16-bit resources.
This commit is contained in:
parent
39628f49ed
commit
bcc80032ab
|
@ -626,32 +626,13 @@ static VS_VERSION_INFO_STRUCT32 *VersionInfo32_FindChild( VS_VERSION_INFO_STRUCT
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* VerQueryValueA [VERSION.@]
|
* VersionInfo16_QueryValue [internal]
|
||||||
|
*
|
||||||
|
* Gets a value from a 16-bit NE resource
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI VerQueryValueA( LPVOID pBlock, LPCSTR lpSubBlock,
|
DWORD WINAPI VersionInfo16_QueryValue( VS_VERSION_INFO_STRUCT16 *info, LPCSTR lpSubBlock,
|
||||||
LPVOID *lplpBuffer, UINT *puLen )
|
LPVOID *lplpBuffer, UINT *puLen )
|
||||||
{
|
{
|
||||||
VS_VERSION_INFO_STRUCT16 *info = (VS_VERSION_INFO_STRUCT16 *)pBlock;
|
|
||||||
if ( !VersionInfoIs16( info ) )
|
|
||||||
{
|
|
||||||
INT len;
|
|
||||||
LPWSTR wide_str;
|
|
||||||
DWORD give;
|
|
||||||
|
|
||||||
/* <lawson_whitney@juno.com> Feb 2001 */
|
|
||||||
/* AOL 5.0 does this, expecting to get this: */
|
|
||||||
len = MultiByteToWideChar(CP_ACP, 0, lpSubBlock, -1, NULL, 0);
|
|
||||||
wide_str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
|
||||||
MultiByteToWideChar(CP_ACP, 0, lpSubBlock, -1, wide_str, len);
|
|
||||||
|
|
||||||
give = VerQueryValueW(pBlock, wide_str, lplpBuffer, puLen);
|
|
||||||
HeapFree(GetProcessHeap(), 0, wide_str);
|
|
||||||
return give;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE("(%p,%s,%p,%p)\n",
|
|
||||||
pBlock, debugstr_a(lpSubBlock), lplpBuffer, puLen );
|
|
||||||
|
|
||||||
while ( *lpSubBlock )
|
while ( *lpSubBlock )
|
||||||
{
|
{
|
||||||
/* Find next path component */
|
/* Find next path component */
|
||||||
|
@ -682,6 +663,37 @@ DWORD WINAPI VerQueryValueA( LPVOID pBlock, LPCSTR lpSubBlock,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* VerQueryValueA [VERSION.@]
|
||||||
|
*/
|
||||||
|
DWORD WINAPI VerQueryValueA( LPVOID pBlock, LPCSTR lpSubBlock,
|
||||||
|
LPVOID *lplpBuffer, UINT *puLen )
|
||||||
|
{
|
||||||
|
VS_VERSION_INFO_STRUCT16 *info = (VS_VERSION_INFO_STRUCT16 *)pBlock;
|
||||||
|
|
||||||
|
TRACE("(%p,%s,%p,%p)\n",
|
||||||
|
pBlock, debugstr_a(lpSubBlock), lplpBuffer, puLen );
|
||||||
|
|
||||||
|
if ( !VersionInfoIs16( info ) )
|
||||||
|
{
|
||||||
|
INT len;
|
||||||
|
LPWSTR wide_str;
|
||||||
|
DWORD give;
|
||||||
|
|
||||||
|
/* <lawson_whitney@juno.com> Feb 2001 */
|
||||||
|
/* AOL 5.0 does this, expecting to get this: */
|
||||||
|
len = MultiByteToWideChar(CP_ACP, 0, lpSubBlock, -1, NULL, 0);
|
||||||
|
wide_str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, lpSubBlock, -1, wide_str, len);
|
||||||
|
|
||||||
|
give = VerQueryValueW(pBlock, wide_str, lplpBuffer, puLen);
|
||||||
|
HeapFree(GetProcessHeap(), 0, wide_str);
|
||||||
|
return give;
|
||||||
|
}
|
||||||
|
|
||||||
|
return VersionInfo16_QueryValue(info, lpSubBlock, lplpBuffer, puLen);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* VerQueryValueW [VERSION.@]
|
* VerQueryValueW [VERSION.@]
|
||||||
*/
|
*/
|
||||||
|
@ -689,15 +701,23 @@ DWORD WINAPI VerQueryValueW( LPVOID pBlock, LPCWSTR lpSubBlock,
|
||||||
LPVOID *lplpBuffer, UINT *puLen )
|
LPVOID *lplpBuffer, UINT *puLen )
|
||||||
{
|
{
|
||||||
VS_VERSION_INFO_STRUCT32 *info = (VS_VERSION_INFO_STRUCT32 *)pBlock;
|
VS_VERSION_INFO_STRUCT32 *info = (VS_VERSION_INFO_STRUCT32 *)pBlock;
|
||||||
if ( VersionInfoIs16( info ) )
|
|
||||||
{
|
|
||||||
ERR("called on NE resource!\n" );
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE("(%p,%s,%p,%p)\n",
|
TRACE("(%p,%s,%p,%p)\n",
|
||||||
pBlock, debugstr_w(lpSubBlock), lplpBuffer, puLen );
|
pBlock, debugstr_w(lpSubBlock), lplpBuffer, puLen );
|
||||||
|
|
||||||
|
if ( VersionInfoIs16( info ) )
|
||||||
|
{
|
||||||
|
DWORD ret;
|
||||||
|
int len = WideCharToMultiByte(CP_ACP, 0, lpSubBlock, -1, NULL, 0, NULL, NULL);
|
||||||
|
LPSTR lpSubBlockA = HeapAlloc(GetProcessHeap(), 0, len * sizeof(char));
|
||||||
|
if (!lpSubBlockA)
|
||||||
|
return FALSE;
|
||||||
|
WideCharToMultiByte(CP_ACP, 0, lpSubBlock, -1, lpSubBlockA, len, NULL, NULL);
|
||||||
|
ret = VersionInfo16_QueryValue(pBlock, lpSubBlockA, lplpBuffer, puLen);
|
||||||
|
HeapFree(GetProcessHeap(), 0, lpSubBlockA);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
while ( *lpSubBlock )
|
while ( *lpSubBlock )
|
||||||
{
|
{
|
||||||
/* Find next path component */
|
/* Find next path component */
|
||||||
|
|
Loading…
Reference in New Issue