From: Jactry Zeng <jzeng@codeweavers.com> --- dlls/kernel32/tests/volume.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c index 6560fb8ac27..a0f249857e3 100644 --- a/dlls/kernel32/tests/volume.c +++ b/dlls/kernel32/tests/volume.c @@ -661,6 +661,7 @@ static void test_disk_query_property(void) STORAGE_PROPERTY_QUERY query = {0}; STORAGE_DESCRIPTOR_HEADER header = {0}; STORAGE_DEVICE_DESCRIPTOR descriptor = {0}; + DEVICE_TRIM_DESCRIPTOR trim_descriptor = {0}; DEVICE_SEEK_PENALTY_DESCRIPTOR seek_pen = {0}; HANDLE handle; DWORD error; @@ -732,6 +733,34 @@ static void test_disk_query_property(void) } } + /* Tests of StorageDeviceTrimProperty. */ + query.PropertyId = StorageDeviceTrimProperty; + query.QueryType = PropertyStandardQuery; + SetLastError(0xdeadbeef); + ret = DeviceIoControl(handle, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query), &header, + sizeof(header), &size, NULL); + error = GetLastError(); + ok(!!ret, "expect ret %#x, got %#x\n", TRUE, ret); + ok(error == 0xdeadbeef, "expect err %#x, got err %#lx\n", 0xdeadbeef, error); + ok(size == sizeof(header), "got size %ld\n", size); + ok(header.Version == sizeof(trim_descriptor), "got header.Version %ld\n", header.Version); + ok(header.Size == sizeof(trim_descriptor), "got header.Size %ld\n", header.Size); + + SetLastError(0xdeadbeef); + memset(&trim_descriptor, 0xcc, sizeof(trim_descriptor)); + ret = DeviceIoControl(handle, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query), &trim_descriptor, + sizeof(trim_descriptor), &size, NULL); + error = GetLastError(); + ok(!!ret || broken(!ret && error == ERROR_INVALID_FUNCTION) /* Win8 */, + "expect ret %#x, got err %#lx\n", ret, error); + if (ret) + { + ok(error == 0xdeadbeef, "expect err %#x, got err %#lx\n", 0xdeadbeef, error); + ok(size == sizeof(trim_descriptor), "got size %ld\n", size); + ok(trim_descriptor.Version == sizeof(trim_descriptor), "got descriptor.Version %ld\n", trim_descriptor.Version); + ok(trim_descriptor.Size == sizeof(trim_descriptor), "got descriptor.Size %ld\n", trim_descriptor.Size); + } + CloseHandle(handle); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9984