mirror of
https://github.com/reactos/reactos.git
synced 2024-08-14 23:49:49 +00:00
Implement SetupDiGetDeviceRegistryPropertyA
Add stub for SetupDiGetDeviceRegistryPropertyW svn path=/trunk/; revision=16398
This commit is contained in:
parent
1d354a90fe
commit
3988ea5599
|
@ -747,6 +747,7 @@ BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_
|
||||||
DWORD, PDWORD, PSP_DEVINFO_DATA);
|
DWORD, PDWORD, PSP_DEVINFO_DATA);
|
||||||
#define SetupDiGetDeviceInterfaceDetail WINELIB_NAME_AW(SetupDiGetDeviceInterfaceDetail)
|
#define SetupDiGetDeviceInterfaceDetail WINELIB_NAME_AW(SetupDiGetDeviceInterfaceDetail)
|
||||||
BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
|
BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
|
||||||
|
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
|
||||||
BOOL WINAPI SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ);
|
BOOL WINAPI SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ);
|
||||||
BOOL WINAPI SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ);
|
BOOL WINAPI SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ);
|
||||||
#define SetupDiInstallClass WINELIB_NAME_AW(SetupDiInstallClass)
|
#define SetupDiInstallClass WINELIB_NAME_AW(SetupDiInstallClass)
|
||||||
|
|
|
@ -1180,6 +1180,79 @@ BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(
|
||||||
PBYTE PropertyBuffer,
|
PBYTE PropertyBuffer,
|
||||||
DWORD PropertyBufferSize,
|
DWORD PropertyBufferSize,
|
||||||
PDWORD RequiredSize)
|
PDWORD RequiredSize)
|
||||||
|
{
|
||||||
|
BOOL bResult;
|
||||||
|
BOOL bIsStringProperty;
|
||||||
|
DWORD RegType;
|
||||||
|
DWORD RequiredSizeA, RequiredSizeW;
|
||||||
|
DWORD PropertyBufferSizeW;
|
||||||
|
PBYTE PropertyBufferW;
|
||||||
|
|
||||||
|
TRACE("%04lx %p %ld %p %p %ld %p\n", (DWORD)devinfo, DeviceInfoData,
|
||||||
|
Property, PropertyRegDataType, PropertyBuffer, PropertyBufferSize,
|
||||||
|
RequiredSize);
|
||||||
|
|
||||||
|
PropertyBufferSizeW = PropertyBufferSize * 2;
|
||||||
|
PropertyBufferW = HeapAlloc(GetProcessHeap(), 0, PropertyBufferSizeW);
|
||||||
|
|
||||||
|
bResult = SetupDiGetDeviceRegistryPropertyW(
|
||||||
|
devinfo,
|
||||||
|
DeviceInfoData,
|
||||||
|
Property,
|
||||||
|
&RegType,
|
||||||
|
PropertyBufferW,
|
||||||
|
PropertyBufferSizeW,
|
||||||
|
&RequiredSizeW);
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, PropertyBufferW);
|
||||||
|
|
||||||
|
if (!bResult)
|
||||||
|
return bResult;
|
||||||
|
|
||||||
|
bIsStringProperty = (RegType == REG_SZ || RegType == REG_MULTI_SZ);
|
||||||
|
|
||||||
|
if (bIsStringProperty)
|
||||||
|
RequiredSizeA = RequiredSizeW / sizeof(WCHAR);
|
||||||
|
else
|
||||||
|
RequiredSizeA = RequiredSizeW;
|
||||||
|
|
||||||
|
if (RequiredSizeA <= PropertyBufferSize)
|
||||||
|
{
|
||||||
|
if (bIsStringProperty && PropertyBufferSize > 0)
|
||||||
|
{
|
||||||
|
if (WideCharToMultiByte(CP_ACP, 0, (LPWSTR)PropertyBufferW, RequiredSizeW / sizeof(WCHAR), PropertyBuffer, PropertyBufferSize, NULL, NULL) == 0)
|
||||||
|
{
|
||||||
|
/* Last error is already set by WideCharToMultiByte */
|
||||||
|
bResult = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
memcpy(PropertyBuffer, PropertyBufferW, RequiredSizeA);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||||
|
bResult = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PropertyRegDataType)
|
||||||
|
*PropertyRegDataType = RegType;
|
||||||
|
if (RequiredSize)
|
||||||
|
*RequiredSize = RequiredSizeA;
|
||||||
|
return bResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* SetupDiGetDeviceRegistryPropertyW (SETUPAPI.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(
|
||||||
|
HDEVINFO devinfo,
|
||||||
|
PSP_DEVINFO_DATA DeviceInfoData,
|
||||||
|
DWORD Property,
|
||||||
|
PDWORD PropertyRegDataType,
|
||||||
|
PBYTE PropertyBuffer,
|
||||||
|
DWORD PropertyBufferSize,
|
||||||
|
PDWORD RequiredSize)
|
||||||
{
|
{
|
||||||
FIXME("%04lx %p %ld %p %p %ld %p\n", (DWORD)devinfo, DeviceInfoData,
|
FIXME("%04lx %p %ld %p %p %ld %p\n", (DWORD)devinfo, DeviceInfoData,
|
||||||
Property, PropertyRegDataType, PropertyBuffer, PropertyBufferSize,
|
Property, PropertyRegDataType, PropertyBuffer, PropertyBufferSize,
|
||||||
|
@ -1187,6 +1260,7 @@ BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* SetupDiInstallClassA (SETUPAPI.@)
|
* SetupDiInstallClassA (SETUPAPI.@)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue