1 /* 2 * PROJECT: ReactOS API tests 3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory 4 * PURPOSE: Test for GetComputerNameEx 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 */ 7 8 #include <apitest.h> 9 10 #define WIN32_NO_STATUS 11 #include <stdio.h> 12 #include <ndk/rtltypes.h> 13 #include <winreg.h> 14 15 static 16 VOID 17 TestGetComputerNameEx( 18 _In_ COMPUTER_NAME_FORMAT NameType) 19 { 20 WCHAR Reference[128]; 21 DWORD ReferenceLen; 22 WCHAR BufferW[128]; 23 CHAR BufferA[128]; 24 BOOL Ret; 25 DWORD Size; 26 DWORD Error; 27 ULONG i; 28 29 Size = RTL_NUMBER_OF(Reference); 30 Ret = GetComputerNameExW(NameType, Reference, &Size); 31 ok(Ret == TRUE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 32 if (!Ret) 33 { 34 skip("[%d] Failed to get reference string\n", NameType); 35 return; 36 } 37 trace("[%d] Reference is %ls\n", NameType, Reference); 38 ReferenceLen = wcslen(Reference); 39 ok(ReferenceLen < RTL_NUMBER_OF(Reference), 40 "[%d] Unexpected ReferenceLen %lu\n", NameType, ReferenceLen); 41 if (NameType != ComputerNameDnsDomain && NameType != ComputerNamePhysicalDnsDomain) 42 { 43 ok(ReferenceLen != 0, "[%d] Unexpected ReferenceLen %lu\n", NameType, ReferenceLen); 44 } 45 ok(Size == ReferenceLen, "[%d] Size is %lu, expected %lu\n", NameType, Size, ReferenceLen); 46 47 /* NULL buffer, NULL size */ 48 StartSeh() 49 Ret = GetComputerNameExW(NameType, NULL, NULL); 50 Error = GetLastError(); 51 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 52 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 53 EndSeh(STATUS_SUCCESS); 54 StartSeh() 55 Ret = GetComputerNameExA(NameType, NULL, NULL); 56 Error = GetLastError(); 57 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 58 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 59 EndSeh(STATUS_SUCCESS); 60 61 /* NULL buffer, nonzero size */ 62 Size = 0x55555555; 63 Ret = GetComputerNameExW(NameType, NULL, &Size); 64 Error = GetLastError(); 65 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 66 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 67 ok(Size == 0x55555555, "[%d] Got Size %lu\n", NameType, Size); 68 69 Size = 0x55555555; 70 Ret = GetComputerNameExA(NameType, NULL, &Size); 71 Error = GetLastError(); 72 ok(Ret == FALSE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 73 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExA returned error %lu\n", NameType, Error); 74 ok(Size == 0x55555555, "[%d] Got Size %lu\n", NameType, Size); 75 76 /* non-NULL buffer, NULL size */ 77 RtlFillMemory(BufferW, sizeof(BufferW), 0x55); 78 Ret = GetComputerNameExW(NameType, BufferW, NULL); 79 Error = GetLastError(); 80 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 81 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 82 ok(BufferW[0] == 0x5555, "[%d] BufferW[0] = 0x%x\n", NameType, BufferW[0]); 83 84 RtlFillMemory(BufferA, sizeof(BufferA), 0x55); 85 Ret = GetComputerNameExA(NameType, BufferA, NULL); 86 Error = GetLastError(); 87 ok(Ret == FALSE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 88 ok(Error == ERROR_INVALID_PARAMETER, "[%d] GetComputerNameExA returned error %lu\n", NameType, Error); 89 ok(BufferA[0] == 0x55, "[%d] BufferA[0] = 0x%x\n", NameType, BufferA[0]); 90 91 /* NULL buffer, zero size */ 92 Size = 0; 93 Ret = GetComputerNameExW(NameType, NULL, &Size); 94 Error = GetLastError(); 95 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 96 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 97 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 98 99 Size = 0; 100 Ret = GetComputerNameExA(NameType, NULL, &Size); 101 Error = GetLastError(); 102 ok(Ret == FALSE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 103 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExA returned error %lu\n", NameType, Error); 104 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 105 106 /* non-NULL buffer, zero size */ 107 RtlFillMemory(BufferW, sizeof(BufferW), 0x55); 108 Size = 0; 109 Ret = GetComputerNameExW(NameType, BufferW, &Size); 110 Error = GetLastError(); 111 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 112 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 113 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 114 ok(BufferW[0] == 0x5555, "[%d] BufferW[0] = 0x%x\n", NameType, BufferW[0]); 115 116 RtlFillMemory(BufferA, sizeof(BufferA), 0x55); 117 Size = 0; 118 Ret = GetComputerNameExA(NameType, BufferA, &Size); 119 Error = GetLastError(); 120 ok(Ret == FALSE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 121 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExA returned error %lu\n", NameType, Error); 122 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 123 ok(BufferA[0] == 0x55, "[%d] BufferA[0] = 0x%x\n", NameType, BufferA[0]); 124 125 /* non-NULL buffer, too small size */ 126 RtlFillMemory(BufferW, sizeof(BufferW), 0x55); 127 Size = ReferenceLen; 128 Ret = GetComputerNameExW(NameType, BufferW, &Size); 129 Error = GetLastError(); 130 ok(Ret == FALSE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 131 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExW returned error %lu\n", NameType, Error); 132 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 133 if (NameType != ComputerNameNetBIOS && NameType != ComputerNamePhysicalNetBIOS) 134 { 135 if (ReferenceLen == 0) 136 { 137 ok(BufferW[0] == 0x5555, "[%d] BufferW[0] = 0x%x\n", 138 NameType, BufferW[0]); 139 } 140 else 141 { 142 ok(BufferW[0] == 0, "[%d] BufferW[0] = 0x%x\n", 143 NameType, BufferW[0]); 144 } 145 } 146 ok(BufferW[1] == 0x5555, "[%d] BufferW[1] = 0x%x\n", NameType, BufferW[1]); 147 148 RtlFillMemory(BufferA, sizeof(BufferA), 0x55); 149 Size = ReferenceLen; 150 Ret = GetComputerNameExA(NameType, BufferA, &Size); 151 Error = GetLastError(); 152 ok(Ret == FALSE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 153 ok(Error == ERROR_MORE_DATA, "[%d] GetComputerNameExA returned error %lu\n", NameType, Error); 154 ok(Size == ReferenceLen + 1, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 155 ok(BufferA[0] == 0x55, "[%d] BufferA[0] = 0x%x\n", NameType, BufferA[0]); 156 157 /* non-NULL buffer, exact size */ 158 RtlFillMemory(BufferW, sizeof(BufferW), 0x55); 159 Size = ReferenceLen + 1; 160 Ret = GetComputerNameExW(NameType, BufferW, &Size); 161 ok(Ret == TRUE, "[%d] GetComputerNameExW returned %d\n", NameType, Ret); 162 ok(Size == ReferenceLen, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 163 ok(BufferW[ReferenceLen] == 0, "[%d] BufferW[ReferenceLen] = 0x%x\n", NameType, BufferW[ReferenceLen]); 164 ok(BufferW[ReferenceLen + 1] == 0x5555, "[%d] BufferW[ReferenceLen + 1] = 0x%x\n", NameType, BufferW[ReferenceLen + 1]); 165 ok(!wcscmp(BufferW, Reference), "[%d] '%ls' != '%ls'\n", NameType, BufferW, Reference); 166 167 RtlFillMemory(BufferA, sizeof(BufferA), 0x55); 168 Size = ReferenceLen + 1; 169 Ret = GetComputerNameExA(NameType, BufferA, &Size); 170 ok(Ret == TRUE, "[%d] GetComputerNameExA returned %d\n", NameType, Ret); 171 ok(Size == ReferenceLen, "[%d] Got Size %lu, expected %lu\n", NameType, Size, ReferenceLen + 1); 172 ok(BufferA[ReferenceLen] == 0, "[%d] BufferA[ReferenceLen] = 0x%x\n", NameType, BufferA[ReferenceLen]); 173 ok(BufferA[ReferenceLen + 1] == 0x55, "[%d] BufferA[ReferenceLen + 1] = 0x%x\n", NameType, BufferA[ReferenceLen + 1]); 174 for (i = 0; i < ReferenceLen; i++) 175 { 176 if (BufferA[i] != Reference[i]) 177 { 178 ok(0, "[%d] BufferA[%lu] = 0x%x, expected 0x%x\n", NameType, i, BufferA[i], Reference[i]); 179 } 180 } 181 } 182 183 static 184 LSTATUS 185 ReadRegistryValue(PCHAR ValueName, PCHAR Value) 186 { 187 INT ErrorCode; 188 HKEY ParametersKey; 189 DWORD RegType; 190 DWORD RegSize = 0; 191 192 /* Open the database path key */ 193 ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE, 194 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters", 195 0, 196 KEY_READ, 197 &ParametersKey); 198 if (ErrorCode == NO_ERROR) 199 { 200 /* Read the actual path */ 201 ErrorCode = RegQueryValueExA(ParametersKey, 202 ValueName, 203 NULL, 204 &RegType, 205 NULL, 206 &RegSize); 207 if (RegSize) 208 { 209 /* Read the actual path */ 210 ErrorCode = RegQueryValueExA(ParametersKey, 211 ValueName, 212 NULL, 213 &RegType, 214 (LPBYTE)Value, 215 &RegSize); 216 } 217 218 /* Close the key */ 219 RegCloseKey(ParametersKey); 220 } 221 return ErrorCode; 222 } 223 224 static 225 LSTATUS 226 ReadRegistryComputerNameValue(PCHAR ValueName, PCHAR Value) 227 { 228 INT ErrorCode; 229 HKEY ParametersKey; 230 DWORD RegType; 231 DWORD RegSize = 0; 232 233 /* Open the database path key */ 234 ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE, 235 "System\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName", 236 0, 237 KEY_READ, 238 &ParametersKey); 239 if (ErrorCode == NO_ERROR) 240 { 241 /* Read the actual path */ 242 ErrorCode = RegQueryValueExA(ParametersKey, 243 ValueName, 244 NULL, 245 &RegType, 246 NULL, 247 &RegSize); 248 if (RegSize) 249 { 250 /* Read the actual path */ 251 ErrorCode = RegQueryValueExA(ParametersKey, 252 ValueName, 253 NULL, 254 &RegType, 255 (LPBYTE)Value, 256 &RegSize); 257 } 258 259 /* Close the key */ 260 RegCloseKey(ParametersKey); 261 } 262 return ErrorCode; 263 } 264 265 static 266 LSTATUS 267 WriteRegistryValue(PCHAR ValueName, PCHAR Value) 268 { 269 INT ErrorCode; 270 HKEY ParametersKey; 271 272 /* Open the database path key */ 273 ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE, 274 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters", 275 0, 276 KEY_WRITE, 277 &ParametersKey); 278 if (ErrorCode == NO_ERROR) 279 { 280 /* Read the actual path */ 281 ErrorCode = RegSetValueExA(ParametersKey, 282 ValueName, 283 0, 284 REG_SZ, 285 (LPBYTE)Value, 286 strlen(Value) + 1); 287 288 /* Close the key */ 289 RegCloseKey(ParametersKey); 290 } 291 return ErrorCode; 292 } 293 294 static 295 LSTATUS 296 DeleteRegistryValue(PCHAR ValueName) 297 { 298 INT ErrorCode; 299 HKEY ParametersKey; 300 301 /* Open the database path key */ 302 ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE, 303 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters", 304 0, 305 KEY_WRITE, 306 &ParametersKey); 307 if (ErrorCode == NO_ERROR) 308 { 309 /* Read the actual path */ 310 ErrorCode = RegDeleteValueA(ParametersKey, ValueName); 311 312 /* Close the key */ 313 RegCloseKey(ParametersKey); 314 } 315 return ErrorCode; 316 } 317 318 /* If this test crashes it might end up with wrong host and/or domain name in registry! */ 319 static 320 VOID 321 TestReturnValues() 322 { 323 CHAR OrigNetBIOS[128]; 324 CHAR OrigHostname[128]; 325 CHAR OrigDomainName[128]; 326 CHAR OrigDhcpHostname[128]; 327 CHAR OrigDhcpDomainName[128]; 328 BOOL OrigNetBIOSExists; 329 BOOL OrigHostnameExists; 330 BOOL OrigDomainNameExists; 331 BOOL OrigDhcpHostnameExists; 332 BOOL OrigDhcpDomainNameExists; 333 CHAR ComputerName[128]; 334 DWORD ComputerNameSize = 0; 335 INT ErrorCode; 336 337 memset(OrigNetBIOS, 0, sizeof(OrigNetBIOS)); 338 memset(OrigHostname, 0, sizeof(OrigHostname)); 339 memset(OrigDomainName, 0, sizeof(OrigDomainName)); 340 memset(OrigDhcpHostname, 0, sizeof(OrigDhcpHostname)); 341 memset(OrigDhcpDomainName, 0, sizeof(OrigDhcpDomainName)); 342 /* read current registry values */ 343 ErrorCode = ReadRegistryComputerNameValue("ComputerName", OrigNetBIOS); 344 ok(ErrorCode == ERROR_SUCCESS, "Failed to read registry key ComputerName %d\n", ErrorCode); 345 OrigNetBIOSExists = ErrorCode == STATUS_SUCCESS; 346 ErrorCode = ReadRegistryValue("Hostname", OrigHostname); 347 ok(ErrorCode == ERROR_SUCCESS, "Failed to read registry key Hostname %d\n", ErrorCode); 348 OrigHostnameExists = ErrorCode == STATUS_SUCCESS; 349 ErrorCode = ReadRegistryValue("Domain", OrigDomainName); 350 ok(ErrorCode == ERROR_SUCCESS || ErrorCode == ERROR_FILE_NOT_FOUND, "Failed to read registry key DomainName %d\n", ErrorCode); 351 OrigDomainNameExists = ErrorCode == STATUS_SUCCESS; 352 ErrorCode = ReadRegistryValue("DhcpHostname", OrigDhcpHostname); 353 ok(ErrorCode == ERROR_SUCCESS || ErrorCode == ERROR_FILE_NOT_FOUND, "Failed to read registry key DhcpHostname %d\n", ErrorCode); 354 OrigDhcpHostnameExists = ErrorCode == STATUS_SUCCESS; 355 ErrorCode = ReadRegistryValue("DhcpDomain", OrigDhcpDomainName); 356 ok(ErrorCode == ERROR_SUCCESS || ErrorCode == ERROR_FILE_NOT_FOUND, "Failed to read registry key DhcpDomainName %d\n", ErrorCode); 357 OrigDhcpDomainNameExists = ErrorCode == STATUS_SUCCESS; 358 359 trace("Starting values:\n"); 360 trace("NetBIOS: %s, exists %s\n", OrigNetBIOS, OrigNetBIOSExists ? "yes" : "no"); 361 trace("Hostname: %s, exists %s\n", OrigHostname, OrigHostnameExists ? "yes" : "no"); 362 trace("Domain: %s, exists %s\n", OrigDomainName, OrigDomainNameExists ? "yes" : "no"); 363 trace("DhcpHostname: %s, exists %s\n", OrigDhcpHostnameExists ? OrigDhcpHostname : "", OrigDhcpHostnameExists ? "yes" : "no"); 364 trace("DhcpDomain: %s, exists %s\n", OrigDhcpDomainNameExists ? OrigDhcpDomainName : "", OrigDhcpDomainNameExists ? "yes" : "no"); 365 366 /* ComputerNamePhysicalNetBIOS */ 367 ComputerNameSize = 0; 368 StartSeh() 369 GetComputerNameExA(ComputerNamePhysicalNetBIOS, ComputerName, &ComputerNameSize); 370 if (ComputerNameSize) 371 ok(GetComputerNameExA(ComputerNamePhysicalNetBIOS, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalNetBIOS) failed with %ld\n", GetLastError()); 372 else 373 memset(ComputerName, 0, sizeof(ComputerName)); 374 ok(strcmp(ComputerName, OrigNetBIOS) == 0, "ComputerNamePhysicalNetBIOS doesn't match registry value '%s' != '%s'\n", ComputerName, OrigNetBIOS); 375 EndSeh(STATUS_SUCCESS); 376 377 /* ComputerNamePhysicalDnsHostname */ 378 ComputerNameSize = 0; 379 StartSeh() 380 GetComputerNameExA(ComputerNamePhysicalDnsHostname, ComputerName, &ComputerNameSize); 381 if (ComputerNameSize) 382 ok(GetComputerNameExA(ComputerNamePhysicalDnsHostname, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalDnsHostname) failed with %ld\n", GetLastError()); 383 else 384 memset(ComputerName, 0, sizeof(ComputerName)); 385 ok(strcmp(ComputerName, OrigHostname) == 0, "ComputerNamePhysicalDnsHostname doesn't match registry value '%s' != '%s'\n", ComputerName, OrigHostname); 386 EndSeh(STATUS_SUCCESS); 387 388 /* ComputerNamePhysicalDnsDomain */ 389 ComputerNameSize = 0; 390 StartSeh() 391 GetComputerNameExA(ComputerNamePhysicalDnsDomain, ComputerName, &ComputerNameSize); 392 if (ComputerNameSize) 393 ok(GetComputerNameExA(ComputerNamePhysicalDnsDomain, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalDnsDomain) failed with %ld\n", GetLastError()); 394 else 395 memset(ComputerName, 0, sizeof(ComputerName)); 396 ok(strcmp(ComputerName, OrigDomainName) == 0, "ComputerNamePhysicalDnsDomain doesn't match registry value '%s' != '%s'\n", ComputerName, OrigDomainName); 397 EndSeh(STATUS_SUCCESS); 398 ComputerNameSize = 0; 399 400 /* ComputerNameNetBIOS */ 401 StartSeh() 402 GetComputerNameExA(ComputerNameNetBIOS, ComputerName, &ComputerNameSize); 403 if (ComputerNameSize) 404 ok(GetComputerNameExA(ComputerNameNetBIOS, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameNetBIOS) failed with %ld\n", GetLastError()); 405 else 406 memset(ComputerName, 0, sizeof(ComputerName)); 407 ok(strcmp(ComputerName, OrigNetBIOS) == 0, "ComputerNameNetBIOS doesn't match registry value '%s' != '%s'\n", ComputerName, OrigNetBIOS); 408 EndSeh(STATUS_SUCCESS); 409 410 /* ComputerNameDnsHostname */ 411 ComputerNameSize = 0; 412 StartSeh() 413 GetComputerNameExA(ComputerNameDnsHostname, ComputerName, &ComputerNameSize); 414 if (ComputerNameSize) 415 ok(GetComputerNameExA(ComputerNameDnsHostname, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameDnsHostname) failed with %ld\n", GetLastError()); 416 else 417 memset(ComputerName, 0, sizeof(ComputerName)); 418 ok(strcmp(ComputerName, OrigHostname) == 0, "ComputerNameDnsHostname doesn't match registry value '%s' != '%s'\n", ComputerName, OrigHostname); 419 EndSeh(STATUS_SUCCESS); 420 421 /* ComputerNameDnsDomain */ 422 ComputerNameSize = 0; 423 StartSeh() 424 GetComputerNameExA(ComputerNameDnsDomain, ComputerName, &ComputerNameSize); 425 if (ComputerNameSize) 426 ok(GetComputerNameExA(ComputerNameDnsDomain, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameDnsDomain) failed with %ld\n", GetLastError()); 427 else 428 memset(ComputerName, 0, sizeof(ComputerName)); 429 ok(strcmp(ComputerName, OrigDomainName) == 0, "ComputerNameDnsDomain doesn't match registry value '%s' != '%s'\n", ComputerName, OrigDomainName); 430 EndSeh(STATUS_SUCCESS); 431 432 ErrorCode = WriteRegistryValue("DhcpHostname", "testdhcproshost"); 433 ok(ErrorCode == ERROR_SUCCESS, "Failed to write registry key DhcpHostname %d\n", ErrorCode); 434 ErrorCode = WriteRegistryValue("DhcpDomain", "testrosdomain"); 435 ok(ErrorCode == ERROR_SUCCESS, "Failed to write registry key DhcpDomainName %d\n", ErrorCode); 436 437 /* ComputerNamePhysicalNetBIOS */ 438 ComputerNameSize = 0; 439 StartSeh() 440 GetComputerNameExA(ComputerNamePhysicalNetBIOS, ComputerName, &ComputerNameSize); 441 if (ComputerNameSize) 442 ok(GetComputerNameExA(ComputerNamePhysicalNetBIOS, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalNetBIOS) failed with %ld\n", GetLastError()); 443 else 444 memset(ComputerName, 0, sizeof(ComputerName)); 445 ok(strcmp(ComputerName, OrigNetBIOS) == 0, "ComputerNamePhysicalNetBIOS doesn't match registry value '%s' != '%s'\n", ComputerName, OrigNetBIOS); 446 EndSeh(STATUS_SUCCESS); 447 448 /* ComputerNamePhysicalDnsHostname */ 449 ComputerNameSize = 0; 450 StartSeh() 451 GetComputerNameExA(ComputerNamePhysicalDnsHostname, ComputerName, &ComputerNameSize); 452 if (ComputerNameSize) 453 ok(GetComputerNameExA(ComputerNamePhysicalDnsHostname, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalDnsHostname) failed with %ld\n", GetLastError()); 454 else 455 memset(ComputerName, 0, sizeof(ComputerName)); 456 ok(strcmp(ComputerName, OrigHostname) == 0, "ComputerNamePhysicalDnsHostname doesn't match registry value '%s' != '%s'\n", ComputerName, OrigHostname); 457 EndSeh(STATUS_SUCCESS); 458 459 /* ComputerNamePhysicalDnsDomain */ 460 ComputerNameSize = 0; 461 StartSeh() 462 GetComputerNameExA(ComputerNamePhysicalDnsDomain, ComputerName, &ComputerNameSize); 463 if (ComputerNameSize) 464 ok(GetComputerNameExA(ComputerNamePhysicalDnsDomain, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNamePhysicalDnsDomain) failed with %ld\n", GetLastError()); 465 else 466 memset(ComputerName, 0, sizeof(ComputerName)); 467 ok(strcmp(ComputerName, OrigDomainName) == 0, "ComputerNamePhysicalDnsDomain doesn't match registry value '%s' != '%s'\n", ComputerName, OrigDomainName); 468 EndSeh(STATUS_SUCCESS); 469 ComputerNameSize = 0; 470 471 /* ComputerNameNetBIOS */ 472 StartSeh() 473 GetComputerNameExA(ComputerNameNetBIOS, ComputerName, &ComputerNameSize); 474 if (ComputerNameSize) 475 ok(GetComputerNameExA(ComputerNameNetBIOS, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameNetBIOS) failed with %ld\n", GetLastError()); 476 else 477 memset(ComputerName, 0, sizeof(ComputerName)); 478 ok(strcmp(ComputerName, OrigNetBIOS) == 0, "ComputerNameNetBIOS doesn't match registry value '%s' != '%s'\n", ComputerName, OrigNetBIOS); 479 EndSeh(STATUS_SUCCESS); 480 481 /* ComputerNameDnsHostname */ 482 ComputerNameSize = 0; 483 StartSeh() 484 GetComputerNameExA(ComputerNameDnsHostname, ComputerName, &ComputerNameSize); 485 if (ComputerNameSize) 486 ok(GetComputerNameExA(ComputerNameDnsHostname, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameDnsHostname) failed with %ld\n", GetLastError()); 487 else 488 memset(ComputerName, 0, sizeof(ComputerName)); 489 ok(strcmp(ComputerName, OrigHostname) == 0, "ComputerNameDnsHostname doesn't match registry value '%s' != '%s'\n", ComputerName, OrigHostname); 490 EndSeh(STATUS_SUCCESS); 491 492 /* ComputerNameDnsDomain */ 493 ComputerNameSize = 0; 494 StartSeh() 495 GetComputerNameExA(ComputerNameDnsDomain, ComputerName, &ComputerNameSize); 496 if (ComputerNameSize) 497 ok(GetComputerNameExA(ComputerNameDnsDomain, ComputerName, &ComputerNameSize), "GetComputerNameExA(ComputerNameDnsDomain) failed with %ld\n", GetLastError()); 498 else 499 memset(ComputerName, 0, sizeof(ComputerName)); 500 ok(strcmp(ComputerName, OrigDomainName) == 0, "ComputerNameDnsDomain doesn't match registry value '%s' != '%s'\n", ComputerName, OrigDomainName); 501 EndSeh(STATUS_SUCCESS); 502 503 /* restore registry values */ 504 if (OrigDhcpHostnameExists) 505 ErrorCode = WriteRegistryValue("DhcpHostname", OrigDhcpHostname); 506 else 507 ErrorCode = DeleteRegistryValue("DhcpHostname"); 508 ok(ErrorCode == ERROR_SUCCESS, "Failed to restore registry key DhcpHostname %d\n", ErrorCode); 509 if (OrigDhcpDomainNameExists) 510 ErrorCode = WriteRegistryValue("DhcpDomain", OrigDhcpDomainName); 511 else 512 ErrorCode = DeleteRegistryValue("DhcpDomain"); 513 ok(ErrorCode == ERROR_SUCCESS, "Failed to restore registry key DhcpDomainName %d\n", ErrorCode); 514 } 515 516 START_TEST(GetComputerNameEx) 517 { 518 TestGetComputerNameEx(ComputerNameNetBIOS); 519 TestGetComputerNameEx(ComputerNameDnsHostname); 520 TestGetComputerNameEx(ComputerNameDnsDomain); 521 //TestGetComputerNameEx(ComputerNameDnsFullyQualified); 522 TestGetComputerNameEx(ComputerNamePhysicalNetBIOS); 523 TestGetComputerNameEx(ComputerNamePhysicalDnsHostname); 524 TestGetComputerNameEx(ComputerNamePhysicalDnsDomain); 525 //TestGetComputerNameEx(ComputerNamePhysicalDnsFullyQualified); 526 TestReturnValues(); 527 } 528