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