| /* | |
| * 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 BOOL is_win9x; | |
| 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; | |
| 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; | |
| 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) | |
| { | |
| is_win9x = !SetupCreateDiskSpaceListW((void *)0xdeadbeef, 0xdeadbeef, 0) && | |
| GetLastError() == ERROR_CALL_NOT_IMPLEMENTED; | |
| test_SetupCreateDiskSpaceListA(); | |
| test_SetupCreateDiskSpaceListW(); | |
| test_SetupDuplicateDiskSpaceListA(); | |
| test_SetupDuplicateDiskSpaceListW(); | |
| test_SetupQuerySpaceRequiredOnDriveA(); | |
| test_SetupQuerySpaceRequiredOnDriveW(); | |
| } |