37 DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
41 static GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04,0x00,0x11,0x95,0x5c,0x2b,0xdb}};
42 static GUID guid2 = {0x6a55b5a5, 0x3f65, 0x11db, {0xb7,0x04,0x00,0x11,0x95,0x5c,0x2b,0xdb}};
47 DWORD dwMaxSubkeyLen, dwMaxValueLen;
65 dwMaxLen =
max(dwMaxSubkeyLen, dwMaxValueLen);
103 if (lpszName != szNameBuf)
112 static const WCHAR machine[] = {
'd',
'u',
'm',
'm',
'y',0 };
114 static char notnull[] =
"NotNull";
146 static const char guidstr[] =
"{6a55b5a4-3f65-11db-b704-0011955c2bdb}";
147 HKEY root_key, class_key;
174 DWORD dwNumberOfBytesWritten;
178 static const char data[] =
180 "Signature=\"$Chicago$\"\n" 182 "ClassGUID={6a55b5a4-3f65-11db-b704-0011955c2bdb}\n" 184 "AddReg=BogusClass.NT.AddReg\n" 185 "[BogusClass.NT.AddReg]\n" 186 "HKR,,,,\"Wine test devices\"\n";
208 static const WCHAR classKey[] = {
'S',
'y',
's',
't',
'e',
'm',
'\\',
209 'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
210 'C',
'o',
'n',
't',
'r',
'o',
'l',
'\\',
'C',
'l',
'a',
's',
's',
'\\',
211 '{',
'6',
'a',
'5',
'5',
'b',
'5',
'a',
'4',
'-',
'3',
'f',
'6',
'5',
'-',
212 '1',
'1',
'd',
'b',
'-',
'b',
'7',
'0',
'4',
'-',
213 '0',
'0',
'1',
'1',
'9',
'5',
'5',
'c',
'2',
'b',
'd',
'b',
'}',0};
223 ok(!
ret,
"Expected failure.\n");
227 ok(!
ret,
"Expected failure.\n");
231 ok(!
ret,
"Expected failure.\n");
235 ok(!
ret,
"Expected failure.\n");
267 ok_(__FILE__,
line)(!
ret,
"Expected failure.\n");
272 #define check_device_info(a,b,c,d) check_device_info_(__LINE__,a,b,c,d) 276 static const GUID deadbeef = {0xdeadbeef,0xdead,0xbeef,{0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef}};
284 ok(!
ret,
"Expected failure.\n");
289 ok(!
ret,
"Expected failure.\n");
297 ok(!
ret,
"Expected failure.\n");
302 ok(!
ret,
"Expected failure.\n");
307 ok(!
ret,
"Expected failure.\n");
318 ok(!
ret,
"Expected failure.\n");
323 ok(!
ret,
"Expected failure.\n");
337 ok(!
strcmp(
id,
"ROOT\\LEGACY_BOGUS\\0002"),
"Got unexpected id %s.\n",
id);
363 ok(!
ret,
"Expected failure.\n");
365 ok(ret_device.DevInst ==
device.DevInst,
"Expected device node %#x, got %#x.\n",
366 device.DevInst, ret_device.DevInst);
377 ok(!
ret,
"Expected failure.\n");
394 memset(
id,
'x',
sizeof(
id));
395 memcpy(
id,
"Root\\LEGACY_BOGUS\\",
strlen(
"Root\\LEGACY_BOGUS\\"));
399 ok(!
ret,
"Expected failure.\n");
405 ok(!
ret,
"Expected failure.\n");
425 ok(!
ret,
"Expected failure.\n");
430 ok(!
ret,
"Expected failure.\n");
438 ok(!
ret,
"Expected failure.\n");
443 ok(!
ret,
"Expected failure.\n");
448 ok(!
ret,
"Expected failure.\n");
454 ok(!
ret,
"Expected failure.\n");
462 ok(!
ret,
"Expected failure.\n");
467 ok(!
strcmp(
id,
"ROOT\\LEGACY_BOGUS\\0000"),
"Got unexpected id %s.\n",
id);
474 ok(!
strcmp(
id,
"ROOT\\LEGACY_BOGUS\\0001"),
"Got unexpected id %s.\n",
id);
488 ok(!
ret,
"Expected failure.\n");
496 ok(!
ret,
"Expected failure.\n");
501 ok(!
ret,
"Expected failure.\n");
507 ok(!
ret,
"Expected failure.\n");
558 detail->
cbSize =
sizeof(*detail);
574 ok_(__FILE__,
line)(!
ret,
"Expected failure.\n");
579 #define check_device_iface(a,b,c,d,e,f) check_device_iface_(__LINE__,a,b,c,d,e,f) 590 detail->
cbSize =
sizeof(*detail);
594 ok(!
ret,
"Expected failure.\n");
599 ok(!
ret,
"Expected failure.\n");
607 ok(!
ret,
"Expected failure.\n");
612 ok(!
ret,
"Expected failure.\n");
623 ok(!
ret,
"Expected failure.\n");
650 ok(iface.
Flags == 0,
"Got unexpected flags %#x.\n", iface.
Flags);
653 ok(!
strcasecmp(detail->
DevicePath,
"\\\\?\\ROOT#LEGACY_BOGUS#0000#{6A55B5A4-3F65-11DB-B704-0011955C2BDB}\\test"),
654 "Got unexpected path %s.\n", detail->
DevicePath);
690 static const char path[] =
"\\\\?\\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}";
700 ok(!
ret,
"Expected failure.\n");
708 ok(!
ret,
"Expected failure.\n");
720 ok(!
ret,
"Expected failure.\n");
725 ok(!
ret,
"Expected failure.\n");
730 ok(!
ret,
"Expected failure.\n");
739 ok(!
ret,
"Expected failure.\n");
745 ok(!
ret,
"Expected failure.\n");
755 ok(!
ret,
"Expected failure.\n");
757 ok(
size == expectedsize,
"Got unexpected size %d.\n",
size);
762 ok(!
ret,
"Expected failure.\n");
772 static const WCHAR classKey[] = {
'S',
'y',
's',
't',
'e',
'm',
'\\',
773 'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
774 'C',
'o',
'n',
't',
'r',
'o',
'l',
'\\',
'C',
'l',
'a',
's',
's',
'\\',
775 '{',
'6',
'a',
'5',
'5',
'b',
'5',
'a',
'4',
'-',
'3',
'f',
'6',
'5',
'-',
776 '1',
'1',
'd',
'b',
'-',
'b',
'7',
'0',
'4',
'-',
777 '0',
'0',
'1',
'1',
'9',
'5',
'5',
'c',
'2',
'b',
'd',
'b',
'}',0};
778 static const WCHAR bogus[] = {
'S',
'y',
's',
't',
'e',
'm',
'\\',
779 'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
780 'E',
'n',
'u',
'm',
'\\',
'R',
'o',
'o',
't',
'\\',
781 'L',
'E',
'G',
'A',
'C',
'Y',
'_',
'B',
'O',
'G',
'U',
'S',0};
851 "Failed to create device key, error %#x.\n",
GetLastError());
882 static const WCHAR bogus[] = {
'S',
'y',
's',
't',
'e',
'm',
'\\',
883 'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
884 'E',
'n',
'u',
'm',
'\\',
'R',
'o',
'o',
't',
'\\',
885 'L',
'E',
'G',
'A',
'C',
'Y',
'_',
'B',
'O',
'G',
'U',
'S',0};
935 static const CHAR bogus[] =
"System\\CurrentControlSet\\Enum\\Root\\LEGACY_BOGUS";
952 ok(!
ret,
"Expected failure.\n");
957 ok(!
ret,
"Expected failure.\n");
962 ok(!
ret,
"Expected failure.\n");
968 ok(!
ret,
"Expected failure.\n");
977 ok(!
ret,
"Expected failure.\n");
982 ok(!
ret,
"Expected failure.\n");
987 ok(!
ret,
"Expected failure.\n");
992 ok(!
ret,
"Expected failure, got %d\n",
ret);
997 ok(!
ret,
"Expected failure.\n");
999 ok(
size ==
sizeof(
"Bogus"),
"Got unexpected size %d.\n",
size);
1019 ok(!
ret,
"Expected failure.\n");
1024 ok(!
ret,
"Expected failure.\n");
1043 static const WCHAR bogus[] = {
'S',
'y',
's',
't',
'e',
'm',
'\\',
1044 'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
1045 'E',
'n',
'u',
'm',
'\\',
'R',
'o',
'o',
't',
'\\',
1046 'L',
'E',
'G',
'A',
'C',
'Y',
'_',
'B',
'O',
'G',
'U',
'S',0};
1056 ok(!
ret,
"Expected failure.\n");
1061 ok(!
ret,
"Expected failure.\n");
1066 ok(!
ret,
"Expected failure.\n");
1072 ok(!
ret,
"Expected failure.\n");
1081 ok(!
ret,
"Expected failure.\n");
1086 ok(!
ret,
"Expected failure.\n");
1091 ok(!
ret,
"Expected failure.\n");
1096 ok(!
ret,
"Expected failure.\n");
1101 ok(!
ret,
"Expected failure.\n");
1123 ok(!
ret,
"Expected failure.\n");
1128 ok(!
ret,
"Expected failure.\n");
1139 static const char inffile[] =
"winetest.inf";
1140 static const char content[] =
"[Version]\r\n\r\n";
1141 static const char* signatures[] = {
"\"$CHICAGO$\"",
"\"$Windows NT$\""};
1158 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1160 "expected error ERROR_FILE_NOT_FOUND, got %u\n",
GetLastError());
1165 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1167 "expected error ERROR_FILE_NOT_FOUND, got %u\n",
GetLastError());
1171 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1173 "expected error ERROR_FILE_NOT_FOUND, got %u\n",
GetLastError());
1177 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1179 "expected error ERROR_FILE_NOT_FOUND, got %u\n",
GetLastError());
1183 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1185 "expected error ERROR_FILE_NOT_FOUND, got %u\n",
GetLastError());
1194 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1198 trace(
"testing signature %s\n", signatures[
i]);
1206 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1211 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1217 ok(retval,
"expected SetupDiGetINFClassA to succeed! error %u\n",
GetLastError());
1222 ok(retval,
"expected SetupDiGetINFClassA to succeed! error %u\n",
GetLastError());
1228 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1230 "expected error ERROR_INSUFFICIENT_BUFFER, got %u\n",
GetLastError());
1236 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1238 "expected error ERROR_INVALID_PARAMETER, got %u\n",
GetLastError());
1242 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1244 "expected error ERROR_INVALID_PARAMETER, got %u\n",
GetLastError());
1248 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1250 "expected error ERROR_INVALID_PARAMETER, got %u\n",
GetLastError());
1254 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1265 ok(!retval,
"expected SetupDiGetINFClassA to fail!\n");
1271 "{4d36e972-e325-11ce-bfc1-08002be10318}",
filename);
1276 ok(retval,
"expected SetupDiGetINFClassA to succeed! error %u\n",
GetLastError());
1306 const char keypath[] =
"System\\CurrentControlSet\\Control\\DeviceClasses\\" 1307 "{6a55b5a4-3f65-11db-b704-0011955c2bdb}\\" 1308 "##?#ROOT#LEGACY_BOGUS#0001#{6a55b5a4-3f65-11db-b704-0011955c2bdb}";
1326 ok(!
ret,
"failed to open device parent key: %u\n",
ret);
1335 ok(!
ret,
"key should exist: %u\n",
ret);
1340 ok(!
ret,
"RegQueryValue failed: %u\n",
ret);
1360 static GUID displayguid = {0x4d36e968, 0xe325, 0x11ce, {0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18}};
1366 disp.
cb =
sizeof(disp);
1373 devinfo.
cbSize =
sizeof(devinfo);
1386 skip(
"needs admin rights\n");
#define ERROR_INVALID_PARAMETER
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
#define ERROR_INVALID_REG_PROPERTY
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO DeviceInfoSet, PCSTR DeviceName, CONST GUID *ClassGuid, PCSTR DeviceDescription, HWND hwndParent, DWORD CreationFlags, PSP_DEVINFO_DATA DeviceInfoData)
static void test_registry_property_w(void)
static void create_inf_file(LPCSTR filename)
static void test_get_inf_class(void)
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
char * strcat(char *DstString, const char *SrcString)
#define ERROR_NO_MORE_ITEMS
ACPI_SIZE strlen(const char *String)
char * wine_dbgstr_w(const wchar_t *wstr)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
GLuint GLuint GLsizei count
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, DWORD DeviceInterfaceDetailDataSize, PDWORD RequiredSize, PSP_DEVINFO_DATA DeviceInfoData)
static void test_device_info(void)
HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(const GUID *ClassGuid, HWND hwndParent, PCWSTR MachineName, PVOID Reserved)
#define ERROR_INVALID_HANDLE
#define check_device_iface(a, b, c, d, e, f)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
#define ERROR_KEY_DOES_NOT_EXIST
static void check_device_iface_(int line, HDEVINFO set, SP_DEVINFO_DATA *device, const GUID *class, int index, DWORD flags, const char *path)
#define ERROR_NOT_ENOUGH_MEMORY
const char * wine_dbgstr_guid(const GUID *guid)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
CONFIGRET WINAPI CM_Get_Device_IDA(_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
LONG WINAPI RegSetValueA(HKEY hKeyOriginal, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData)
HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, DWORD Reserved, REGSAM samDesired, HINF InfHandle, PCSTR InfSectionName)
static void test_device_interface_key(void)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
static void * heap_alloc(size_t len)
GLfloat GLfloat GLfloat GLfloat h
#define ERROR_INVALID_USER_BUFFER
GLenum GLuint GLenum GLsizei const GLchar * buf
static void test_device_iface_detail(void)
BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PSTR DeviceInstanceId, DWORD DeviceInstanceIdSize, PDWORD RequiredSize)
static void test_get_device_instance_id(void)
BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData, DWORD DeviceInterfaceDetailDataSize, PDWORD RequiredSize, PSP_DEVINFO_DATA DeviceInfoData)
#define ERROR_ACCESS_DENIED
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
#define ERROR_CLASS_MISMATCH
BOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEA lpDisplayDevice, DWORD dwFlags)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
static UINT set(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, struct ctab_constant *constant, const void **indata, D3DXPARAMETER_TYPE intype, UINT *size, UINT incol, D3DXPARAMETER_CLASS inclass, UINT index, BOOL is_pointer)
#define ERROR_FILE_NOT_FOUND
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, HINF InfHandle, PCWSTR InfSectionName)
static void get_temp_filename(LPSTR path)
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
_Check_return_ _CRTIMP FILE *__cdecl tmpfile(void)
static void test_register_device_info(void)
HKEY WINAPI SetupDiOpenClassRegKeyExA(const GUID *ClassGuid, REGSAM samDesired, DWORD Flags, PCSTR MachineName, PVOID Reserved)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
static void check_device_info_(int line, HDEVINFO set, int index, const GUID *class, const char *expect_id)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WINAPI SetupDiGetINFClassA(IN PCSTR InfName, OUT LPGUID ClassGuid, OUT PSTR ClassName, IN DWORD ClassNameSize, OUT PDWORD RequiredSize OPTIONAL)
BOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, DWORD Reserved)
static void test_register_device_iface(void)
BOOL WINAPI SetupDiDeleteDeviceInfo(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData)
#define ERROR_DEVINFO_NOT_REGISTERED
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
#define SPDRP_FRIENDLYNAME
HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *class, LPCSTR enumstr, HWND parent, DWORD flags)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
#define ERROR_NO_SUCH_DEVINST
#define RPC_S_INVALID_STRING_UUID
#define MAX_DEVICE_ID_LEN
#define FILE_ATTRIBUTE_NORMAL
static void test_open_class_key(void)
static void test_install_class(void)
static const char machine[]
#define memcpy(s1, s2, n)
CHAR DevicePath[ANYSIZE_ARRAY]
HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, REGSAM samDesired)
BOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO info, PSP_DEVICE_INTERFACE_DATA data)
BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Flags, PSP_DETSIG_CMPPROC CompareProc, PVOID CompareContext, PSP_DEVINFO_DATA DupDeviceInfoData)
static void test_create_device_list_ex(void)
#define ERROR_INVALID_DATA
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
static const char inffile[]
static void test_devnode(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
#define ERROR_DEVINST_ALREADY_EXISTS
BOOL WINAPI SetupDiRemoveDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData)
static const WCHAR friendly_name[]
#define ERROR_INVALID_CLASS
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
static void test_device_iface(void)
#define FIELD_OFFSET(t, f)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
#define ERROR_MACHINE_UNAVAILABLE
BOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
#define DIGCF_DEVICEINTERFACE
static void test_device_key(void)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
#define ERROR_INVALID_MACHINENAME
BOOL WINAPI SetupDiInstallClassA(HWND hwndParent, PCSTR InfFileName, DWORD Flags, HSPFILEQ FileQueue)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
int strcmp(const char *String1, const char *String2)
#define ERROR_CALL_NOT_IMPLEMENTED
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA_A
#define ERROR_INVALID_DEVINST_NAME
char * cleanup(char *str)
static void test_registry_property_a(void)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
GLuint GLuint GLsizei GLenum type
#define CreateFileA(a, b, c, d, e, f, g)
static void testSetupDiGetClassDevsA(void)
BOOL WINAPI DECLSPEC_HOTPATCH WritePrivateProfileStringA(LPCSTR section, LPCSTR entry, LPCSTR string, LPCSTR filename)
BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, const GUID *InterfaceClassGuid, PCSTR ReferenceString, DWORD CreationFlags, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
#define HeapFree(x, y, z)
#define ERROR_INVALID_FLAGS
HKEY WINAPI SetupDiOpenClassRegKey(const GUID *ClassGuid, REGSAM samDesired)
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static LSTATUS devinst_RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey)
#define check_device_info(a, b, c, d)
static BOOL heap_free(void *mem)
#define HKEY_LOCAL_MACHINE
#define ERROR_INSUFFICIENT_BUFFER