[PATCH v7 2/2] kernel32/tests: Add SeekPenalty Test to Volume.c

David Koolhoven david at koolhoven-home.net
Mon May 24 19:10:45 CDT 2021


From: Ackurus <84048003+Ackurus at users.noreply.github.com>

Helps test for compatibility with SeekPenaltyQueryProperty.

Signed-off-by: David Koolhoven <david at koolhoven-home.net>
---
v2: Update module label.
---
 dlls/kernel32/tests/volume.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index ed3897a6b94..019f764019c 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -654,6 +654,40 @@ static void test_disk_query_property(void)
     CloseHandle(handle);
 }
 
+static void test_disk_query_seek_penalty_property(void)
+{
+    STORAGE_PROPERTY_QUERY query = {0};
+    DEVICE_SEEK_PENALTY_DESCRIPTOR descriptor = {0};
+    HANDLE handle;
+    DWORD error;
+    DWORD size;
+    BOOL ret;
+
+    handle = CreateFileA("\\\\.\\PhysicalDrive0", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
+                         0, 0);
+    if (handle == INVALID_HANDLE_VALUE)
+    {
+        win_skip("can't open \\\\.\\PhysicalDrive0 %#x\n", GetLastError());
+        return;
+    }
+
+    query.PropertyId = (STORAGE_PROPERTY_ID)StorageDeviceSeekPenaltyProperty;
+    query.QueryType = PropertyStandardQuery;
+
+    SetLastError(0xdeadbeef);
+    ret = DeviceIoControl(handle, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query), &descriptor, sizeof(descriptor),
+                          &size, NULL);
+    error = GetLastError();
+    /* Only should complete on Win7 and Win10 */
+    ok((ret) || (ret == ERROR_NOT_SUPPORTED), "expect ret %#x, got %#x\n", TRUE, ret);
+    ok((error == 0xdeadbeef) || (error == ERROR_NOT_SUPPORTED), "expect err %#x, got err %#x\n", 0xdeadbeef, error);
+    ok(size == sizeof(descriptor), "got size %d\n", size);
+    ok(descriptor.Version == sizeof(descriptor), "got descriptor.Version %d\n", descriptor.Version);
+    ok(descriptor.Size >= sizeof(descriptor), "got descriptor.Size %d\n", descriptor.Size);
+
+    CloseHandle(handle);
+}
+
 static void test_GetVolumePathNameA(void)
 {
     char volume_path[MAX_PATH], cwd[MAX_PATH], expect_path[MAX_PATH];
@@ -1645,6 +1679,7 @@ START_TEST(volume)
     test_enum_vols();
     test_disk_extents();
     test_disk_query_property();
+    test_disk_query_seek_penalty_property();
     test_GetVolumePathNamesForVolumeNameA();
     test_GetVolumePathNamesForVolumeNameW();
     test_cdrom_ioctl();
-- 
2.31.1




More information about the wine-devel mailing list