| /* |
| * Unit tests for disk space functions |
| * |
| * Copyright 2010 Andrew Nguyen |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #include <stdarg.h> |
| |
| #include "windef.h" |
| #include "winbase.h" |
| #include "winnls.h" |
| #include "winuser.h" |
| #include "winreg.h" |
| #include "setupapi.h" |
| |
| #include "wine/test.h" |
| |
| static void test_SetupCreateDiskSpaceListA(void) |
| { |
| HDSKSPC ret; |
| |
| ret = SetupCreateDiskSpaceListA(NULL, 0, 0); |
| ok(ret != NULL, |
| "Expected SetupCreateDiskSpaceListA to return a valid handle, got NULL\n"); |
| |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| ret = SetupCreateDiskSpaceListA(NULL, 0, SPDSL_IGNORE_DISK); |
| ok(ret != NULL, |
| "Expected SetupCreateDiskSpaceListA to return a valid handle, got NULL\n"); |
| |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListA(NULL, 0, ~0U); |
| ok(ret == NULL || |
| broken(ret != NULL), /* NT4/Win9x/Win2k */ |
| "Expected SetupCreateDiskSpaceListA to return NULL, got %p\n", ret); |
| if (!ret) |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| else |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListA(NULL, 0xdeadbeef, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListA to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win9x/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListA((void *)0xdeadbeef, 0, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListA to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win9x/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListA((void *)0xdeadbeef, 0xdeadbeef, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListA to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win9x/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| } |
| |
| static void test_SetupCreateDiskSpaceListW(void) |
| { |
| HDSKSPC ret; |
| |
| ret = SetupCreateDiskSpaceListW(NULL, 0, 0); |
| if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) |
| { |
| win_skip("SetupCreateDiskSpaceListW is not implemented\n"); |
| return; |
| } |
| ok(ret != NULL, |
| "Expected SetupCreateDiskSpaceListW to return a valid handle, got NULL\n"); |
| |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| ret = SetupCreateDiskSpaceListW(NULL, 0, SPDSL_IGNORE_DISK); |
| ok(ret != NULL, |
| "Expected SetupCreateDiskSpaceListW to return a valid handle, got NULL\n"); |
| |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListW(NULL, 0, ~0U); |
| ok(ret == NULL || |
| broken(ret != NULL), /* NT4/Win2k */ |
| "Expected SetupCreateDiskSpaceListW to return NULL, got %p\n", ret); |
| if (!ret) |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| else |
| ok(SetupDestroyDiskSpaceList(ret), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListW(NULL, 0xdeadbeef, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListW to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListW((void *)0xdeadbeef, 0, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListW to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupCreateDiskSpaceListW((void *)0xdeadbeef, 0xdeadbeef, 0); |
| ok(ret == NULL, |
| "Expected SetupCreateDiskSpaceListW to return NULL, got %p\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| broken(GetLastError() == 0xdeadbeef), /* NT4/Win2k */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| } |
| |
| static void test_SetupDuplicateDiskSpaceListA(void) |
| { |
| HDSKSPC handle, duplicate; |
| int is_win9x = !SetupCreateDiskSpaceListW((void *)0xdeadbeef, 0xdeadbeef, 0) && |
| GetLastError() == ERROR_CALL_NOT_IMPLEMENTED; |
| |
| if (is_win9x) |
| win_skip("SetupDuplicateDiskSpaceListA crashes with NULL disk space handle on Win9x\n"); |
| else |
| { |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(NULL, NULL, 0, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(NULL, (void *)0xdeadbeef, 0, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(NULL, NULL, 0xdeadbeef, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(NULL, NULL, 0, ~0U); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| } |
| |
| handle = SetupCreateDiskSpaceListA(NULL, 0, 0); |
| ok(handle != NULL, |
| "Expected SetupCreateDiskSpaceListA to return a valid handle, got NULL\n"); |
| |
| if (!handle) |
| { |
| skip("Failed to create a disk space handle\n"); |
| return; |
| } |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(handle, (void *)0xdeadbeef, 0, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(handle, NULL, 0xdeadbeef, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(handle, NULL, 0, SPDSL_IGNORE_DISK); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListA(handle, NULL, 0, ~0U); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| duplicate = SetupDuplicateDiskSpaceListA(handle, NULL, 0, 0); |
| ok(duplicate != NULL, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(duplicate != handle, |
| "Expected new handle (%p) to be different from the old handle (%p)\n", duplicate, handle); |
| |
| ok(SetupDestroyDiskSpaceList(duplicate), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| ok(SetupDestroyDiskSpaceList(handle), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| } |
| |
| static void test_SetupDuplicateDiskSpaceListW(void) |
| { |
| HDSKSPC handle, duplicate; |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(NULL, NULL, 0, 0); |
| if (!duplicate && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) |
| { |
| win_skip("SetupDuplicateDiskSpaceListW is not available\n"); |
| return; |
| } |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(NULL, (void *)0xdeadbeef, 0, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(NULL, NULL, 0xdeadbeef, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(NULL, NULL, 0, ~0U); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| handle = SetupCreateDiskSpaceListW(NULL, 0, 0); |
| ok(handle != NULL, |
| "Expected SetupCreateDiskSpaceListW to return a valid handle, got NULL\n"); |
| |
| if (!handle) |
| { |
| skip("Failed to create a disk space handle\n"); |
| return; |
| } |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(handle, (void *)0xdeadbeef, 0, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(handle, NULL, 0xdeadbeef, 0); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(handle, NULL, 0, SPDSL_IGNORE_DISK); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| duplicate = SetupDuplicateDiskSpaceListW(handle, NULL, 0, ~0U); |
| ok(!duplicate, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); |
| |
| duplicate = SetupDuplicateDiskSpaceListW(handle, NULL, 0, 0); |
| ok(duplicate != NULL, "Expected SetupDuplicateDiskSpaceList to return NULL, got %p\n", duplicate); |
| ok(duplicate != handle, |
| "Expected new handle (%p) to be different from the old handle (%p)\n", duplicate, handle); |
| |
| ok(SetupDestroyDiskSpaceList(duplicate), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| ok(SetupDestroyDiskSpaceList(handle), "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| } |
| |
| static void test_SetupQuerySpaceRequiredOnDriveA(void) |
| { |
| BOOL ret; |
| HDSKSPC handle; |
| LONGLONG space; |
| int is_win9x = !SetupCreateDiskSpaceListW((void *)0xdeadbeef, 0xdeadbeef, 0) && |
| GetLastError() == ERROR_CALL_NOT_IMPLEMENTED; |
| |
| if (is_win9x) |
| win_skip("SetupQuerySpaceRequiredOnDriveA crashes with NULL disk space handle on Win9x\n"); |
| else |
| { |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveA(NULL, NULL, NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveA(NULL, NULL, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveA(NULL, "", NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveA(NULL, "", &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| } |
| |
| handle = SetupCreateDiskSpaceListA(NULL, 0, 0); |
| ok(handle != NULL, |
| "Expected SetupCreateDiskSpaceListA to return a valid handle, got NULL\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveA(handle, NULL, NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| GetLastError() == ERROR_INVALID_DRIVE, /* Win9x */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveA(handle, NULL, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| GetLastError() == ERROR_INVALID_DRIVE, /* Win9x */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveA(handle, "", NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_DRIVE, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveA(handle, "", &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveA to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_DRIVE, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| ok(SetupDestroyDiskSpaceList(handle), |
| "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| } |
| |
| static void test_SetupQuerySpaceRequiredOnDriveW(void) |
| { |
| static const WCHAR emptyW[] = {0}; |
| |
| BOOL ret; |
| HDSKSPC handle; |
| LONGLONG space; |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveW(NULL, NULL, NULL, NULL, 0); |
| if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) |
| { |
| win_skip("SetupQuerySpaceRequiredOnDriveW is not available\n"); |
| return; |
| } |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveW(NULL, NULL, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveW(NULL, emptyW, NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveW(NULL, emptyW, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_HANDLE, |
| "Expected GetLastError() to return ERROR_INVALID_HANDLE, got %u\n", |
| GetLastError()); |
| |
| handle = SetupCreateDiskSpaceListA(NULL, 0, 0); |
| ok(handle != NULL, |
| "Expected SetupCreateDiskSpaceListA to return a valid handle, got NULL\n"); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveW(handle, NULL, NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| GetLastError() == ERROR_INVALID_DRIVE, /* NT4/Win2k/XP/Win2k3 */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveW(handle, NULL, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_PARAMETER || |
| GetLastError() == ERROR_INVALID_DRIVE, /* NT4/Win2k/XP/Win2k3 */ |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| ret = SetupQuerySpaceRequiredOnDriveW(handle, emptyW, NULL, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(GetLastError() == ERROR_INVALID_DRIVE, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| SetLastError(0xdeadbeef); |
| space = 0xdeadbeef; |
| ret = SetupQuerySpaceRequiredOnDriveW(handle, emptyW, &space, NULL, 0); |
| ok(!ret, "Expected SetupQuerySpaceRequiredOnDriveW to return FALSE, got %d\n", ret); |
| ok(space == 0xdeadbeef, "Expected output space parameter to be untouched\n"); |
| ok(GetLastError() == ERROR_INVALID_DRIVE, |
| "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n", |
| GetLastError()); |
| |
| ok(SetupDestroyDiskSpaceList(handle), |
| "Expected SetupDestroyDiskSpaceList to succeed\n"); |
| } |
| |
| START_TEST(diskspace) |
| { |
| test_SetupCreateDiskSpaceListA(); |
| test_SetupCreateDiskSpaceListW(); |
| test_SetupDuplicateDiskSpaceListA(); |
| test_SetupDuplicateDiskSpaceListW(); |
| test_SetupQuerySpaceRequiredOnDriveA(); |
| test_SetupQuerySpaceRequiredOnDriveW(); |
| } |