37DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
41static GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04,0x00,0x11,0x95,0x5c,0x2b,0xdb}};
42static 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");
static const char inffile[]
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define RegCloseKey(hKey)
CONFIGRET WINAPI CM_Get_Device_IDA(_In_ DEVINST dnDevInst, _Out_writes_(BufferLen) PCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define MAX_DEVICE_ID_LEN
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
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)
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueA(HKEY hKeyOriginal, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
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)
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)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
static const WCHAR empty[]
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define ERROR_NO_MORE_ITEMS
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define ERROR_ACCESS_DENIED
static void cleanup(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI DECLSPEC_HOTPATCH WritePrivateProfileStringA(LPCSTR section, LPCSTR entry, LPCSTR string, LPCSTR filename)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, const GUID *InterfaceClassGuid, PCSTR ReferenceString, DWORD CreationFlags, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(const GUID *ClassGuid, HWND hwndParent, PCWSTR MachineName, PVOID Reserved)
BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
BOOL WINAPI SetupDiInstallClassA(HWND hwndParent, PCSTR InfFileName, DWORD Flags, HSPFILEQ FileQueue)
HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, HINF InfHandle, PCWSTR InfSectionName)
BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO DeviceInfoSet, PCSTR DeviceName, CONST GUID *ClassGuid, PCSTR DeviceDescription, HWND hwndParent, DWORD CreationFlags, PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Flags, PSP_DETSIG_CMPPROC CompareProc, PVOID CompareContext, PSP_DEVINFO_DATA DupDeviceInfoData)
BOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, DWORD Reserved)
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, CONST GUID *InterfaceClassGuid, DWORD MemberIndex, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, PDWORD PropertyRegDataType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize)
HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, DWORD Reserved, REGSAM samDesired, HINF InfHandle, PCSTR InfSectionName)
BOOL WINAPI SetupDiDeleteDeviceInfo(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData)
HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, REGSAM samDesired)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
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)
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)
HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *class, LPCSTR enumstr, HWND parent, DWORD flags)
HKEY WINAPI SetupDiOpenClassRegKey(const GUID *ClassGuid, REGSAM samDesired)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PSTR DeviceInstanceId, DWORD DeviceInstanceIdSize, PDWORD RequiredSize)
HKEY WINAPI SetupDiOpenClassRegKeyExA(const GUID *ClassGuid, REGSAM samDesired, DWORD Flags, PCSTR MachineName, PVOID Reserved)
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
BOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO DeviceInfoSet, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
BOOL WINAPI SetupDiGetINFClassA(IN PCSTR InfName, OUT LPGUID ClassGuid, OUT PSTR ClassName, IN DWORD ClassNameSize, OUT PDWORD RequiredSize OPTIONAL)
BOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO info, PSP_DEVICE_INTERFACE_DATA data)
BOOL WINAPI SetupDiRemoveDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLfloat GLfloat GLfloat GLfloat h
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
_Check_return_ _CRTIMP FILE *__cdecl tmpfile(void)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static void create_inf_file(void)
static const WCHAR friendly_name[]
static const char machine[]
static void test_install_class(void)
static void test_device_info(void)
#define check_device_iface(a, b, c, d, e, f)
static void test_device_iface_detail(void)
static void test_device_iface(void)
static void test_create_device_list_ex(void)
static void test_device_key(void)
static void testSetupDiGetClassDevsA(void)
static void check_device_iface_(int line, HDEVINFO set, SP_DEVINFO_DATA *device, const GUID *class, int index, DWORD flags, const char *path)
#define check_device_info(a, b, c, d)
static void test_registry_property_a(void)
static void test_open_class_key(void)
static void get_temp_filename(LPSTR path)
static void test_get_device_instance_id(void)
static void test_get_inf_class(void)
static LSTATUS devinst_RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey)
static void test_devnode(void)
static void check_device_info_(int line, HDEVINFO set, int index, const GUID *class, const char *expect_id)
static void test_device_interface_key(void)
static void test_register_device_info(void)
static void test_register_device_iface(void)
static void test_registry_property_w(void)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
static __inline const char * wine_dbgstr_guid(const GUID *id)
#define ERROR_INVALID_DEVINST_NAME
#define ERROR_INVALID_MACHINENAME
#define ERROR_DEVINST_ALREADY_EXISTS
#define ERROR_INVALID_CLASS
#define ERROR_INVALID_REG_PROPERTY
struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA_A
#define ERROR_NO_SUCH_DEVINST
#define ERROR_MACHINE_UNAVAILABLE
#define DIGCF_DEVICEINTERFACE
#define ERROR_CLASS_MISMATCH
#define ERROR_DEVINFO_NOT_REGISTERED
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
#define ERROR_KEY_DOES_NOT_EXIST
#define SPDRP_FRIENDLYNAME
CHAR DevicePath[ANYSIZE_ARRAY]
#define FIELD_OFFSET(t, f)
BOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEA lpDisplayDevice, DWORD dwFlags)
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_USER_BUFFER
#define RPC_S_INVALID_STRING_UUID
#define ERROR_INVALID_FLAGS
#define ERROR_INVALID_DATA
#define HKEY_LOCAL_MACHINE