mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
Implement SetupDiGetClassDevs(Ex)A/W
svn path=/trunk/; revision=16425
This commit is contained in:
parent
3c215ef287
commit
4a200035de
2 changed files with 53 additions and 8 deletions
|
@ -613,7 +613,7 @@ DECL_WINELIB_SETUPAPI_TYPE_AW(PFILEPATHS)
|
|||
#define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
|
||||
#define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
|
||||
|
||||
/* flags for SetupDiGetClassDevs */
|
||||
/* flags for SetupDiGetClassDevs(Ex) */
|
||||
#define DIGCF_DEFAULT 0x00000001
|
||||
#define DIGCF_PRESENT 0x00000002
|
||||
#define DIGCF_ALLCLASSES 0x00000004
|
||||
|
@ -741,6 +741,9 @@ BOOL WINAPI SetupDiGetClassDescriptionExW(const GUID*, PWSTR, DWORD, PDWORD,
|
|||
HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *,LPCSTR,HWND,DWORD);
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *,LPCWSTR,HWND,DWORD);
|
||||
#define SetupDiGetClassDevs WINELIB_NAME_AW(SetupDiGetClassDevs)
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID *,LPCSTR,HWND,DWORD,LPCSTR,PVOID);
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID *,LPCWSTR,HWND,DWORD,LPCWSTR,PVOID);
|
||||
#define SetupDiGetClassDevsEx WINELIB_NAME_AW(SetupDiGetClassDevsEx)
|
||||
BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
|
||||
DWORD, PDWORD, PSP_DEVINFO_DATA);
|
||||
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
|
||||
|
|
|
@ -948,9 +948,38 @@ HDEVINFO WINAPI SetupDiGetClassDevsA(
|
|||
LPCSTR enumstr,
|
||||
HWND parent,
|
||||
DWORD flags)
|
||||
{
|
||||
return SetupDiGetClassDevsExA(class, enumstr, parent,
|
||||
flags, NULL, NULL);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SetupDiGetClassDevsW (SETUPAPI.@)
|
||||
*/
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsW(
|
||||
CONST GUID *class,
|
||||
LPCWSTR enumstr,
|
||||
HWND parent,
|
||||
DWORD flags)
|
||||
{
|
||||
return SetupDiGetClassDevsExW(class, enumstr, parent,
|
||||
flags, NULL, NULL);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SetupDiGetClassDevsExA (SETUPAPI.@)
|
||||
*/
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsExA(
|
||||
CONST GUID *class,
|
||||
LPCSTR enumstr,
|
||||
HWND parent,
|
||||
DWORD flags,
|
||||
LPCSTR machine,
|
||||
PVOID reserved)
|
||||
{
|
||||
HDEVINFO ret;
|
||||
LPWSTR enumstrW = NULL;
|
||||
LPWSTR machineW = NULL;
|
||||
|
||||
if (enumstr)
|
||||
{
|
||||
|
@ -963,10 +992,22 @@ HDEVINFO WINAPI SetupDiGetClassDevsA(
|
|||
}
|
||||
MultiByteToWideChar(CP_ACP, 0, enumstr, -1, enumstrW, len);
|
||||
}
|
||||
ret = SetupDiGetClassDevsW(class, enumstrW, parent, flags);
|
||||
HeapFree(GetProcessHeap(), 0, enumstrW);
|
||||
if (machine)
|
||||
{
|
||||
int len = MultiByteToWideChar(CP_ACP, 0, machine, -1, NULL, 0);
|
||||
machineW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
if (!machineW)
|
||||
{
|
||||
ret = (HDEVINFO)INVALID_HANDLE_VALUE;
|
||||
goto end;
|
||||
}
|
||||
MultiByteToWideChar(CP_ACP, 0, machine, -1, machineW, len);
|
||||
}
|
||||
ret = SetupDiGetClassDevsExW(class, enumstrW, parent, flags, machineW, reserved);
|
||||
|
||||
end:
|
||||
HeapFree(GetProcessHeap(), 0, enumstrW);
|
||||
HeapFree(GetProcessHeap(), 0, machineW);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1079,7 +1120,6 @@ static HDEVINFO SETUP_CreateDevListFromClass(
|
|||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
FIXME("subKeys %ld, maxSubKey %ld\n", subKeys, maxSubKey);
|
||||
for (i = 0; i < subKeys; i++)
|
||||
{
|
||||
deviceInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(DeviceInfo) + maxSubKey * sizeof(WCHAR));
|
||||
|
@ -1108,13 +1148,15 @@ static HDEVINFO SETUP_CreateDevListFromClass(
|
|||
}
|
||||
|
||||
/***********************************************************************
|
||||
* SetupDiGetClassDevsW (SETUPAPI.@)
|
||||
* SetupDiGetClassDevsExW (SETUPAPI.@)
|
||||
*/
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsW(
|
||||
HDEVINFO WINAPI SetupDiGetClassDevsExW(
|
||||
CONST GUID *class,
|
||||
LPCWSTR enumstr,
|
||||
HWND parent,
|
||||
DWORD flags)
|
||||
DWORD flags,
|
||||
LPCWSTR machine,
|
||||
PVOID reserved)
|
||||
{
|
||||
HDEVINFO ret = (HDEVINFO)INVALID_HANDLE_VALUE;
|
||||
|
||||
|
@ -1141,7 +1183,7 @@ HDEVINFO WINAPI SetupDiGetClassDevsW(
|
|||
else
|
||||
#else
|
||||
{
|
||||
ret = SETUP_CreateDevListFromClass(NULL, (LPGUID)class);
|
||||
ret = SETUP_CreateDevListFromClass(machine, (LPGUID)class);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue