kernel32/tests: Add a IOCTL_DVD_READ_STRUCTURE (DvdCopyrightDescriptor) test.
This commit is contained in:
parent
a3b5dd2dff
commit
9fce6a37ec
|
@ -749,6 +749,7 @@ static void test_dvd_read_structure(HANDLE handle)
|
|||
DVD_READ_STRUCTURE dvdReadStructure;
|
||||
DVD_LAYER_DESCRIPTOR dvdLayerDescriptor;
|
||||
struct COMPLETE_DVD_LAYER_DESCRIPTOR completeDvdLayerDescriptor;
|
||||
DVD_COPYRIGHT_DESCRIPTOR dvdCopyrightDescriptor;
|
||||
|
||||
dvdReadStructure.BlockByteOffset.QuadPart = 0;
|
||||
dvdReadStructure.SessionId = 0;
|
||||
|
@ -818,6 +819,26 @@ static void test_dvd_read_structure(HANDLE handle)
|
|||
ok( (!ret && GetLastError() == ERROR_INVALID_PARAMETER),
|
||||
"IOCTL_DVD_READ_STRUCTURE should have failed\n");
|
||||
}
|
||||
|
||||
|
||||
/* DvdCopyrightDescriptor */
|
||||
dvdReadStructure.Format = 1;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
/* Strangely, with NULL lpOutBuffer, last error is insufficient buffer, not invalid parameter as we could expect */
|
||||
ret = DeviceIoControl(handle, IOCTL_DVD_READ_STRUCTURE, &dvdReadStructure, sizeof(DVD_READ_STRUCTURE),
|
||||
NULL, sizeof(DVD_COPYRIGHT_DESCRIPTOR), &nbBytes, NULL);
|
||||
ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "IOCTL_DVD_READ_STRUCTURE should have failed %d %u\n", ret, GetLastError());
|
||||
|
||||
for(i=0; i<sizeof(DVD_COPYRIGHT_DESCRIPTOR); i++)
|
||||
{
|
||||
SetLastError(0xdeadbeef);
|
||||
|
||||
ret = DeviceIoControl(handle, IOCTL_DVD_READ_STRUCTURE, &dvdReadStructure, sizeof(DVD_READ_STRUCTURE),
|
||||
&dvdCopyrightDescriptor, i, &nbBytes, NULL);
|
||||
ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "IOCTL_DVD_READ_STRUCTURE should have failed %d %u\n", ret, GetLastError());
|
||||
}
|
||||
}
|
||||
|
||||
static void test_cdrom_ioctl(void)
|
||||
|
|
|
@ -3083,7 +3083,7 @@ NTSTATUS CDROM_DeviceIoControl(HANDLE hDevice,
|
|||
case IOCTL_DVD_READ_STRUCTURE:
|
||||
sz = sizeof(DVD_LAYER_DESCRIPTOR);
|
||||
if (lpInBuffer == NULL || nInBufferSize != sizeof(DVD_READ_STRUCTURE)) status = STATUS_INVALID_PARAMETER;
|
||||
else if (nOutBufferSize < sz) status = STATUS_BUFFER_TOO_SMALL;
|
||||
else if (nOutBufferSize < sz || !lpOutBuffer) status = STATUS_BUFFER_TOO_SMALL;
|
||||
else
|
||||
{
|
||||
TRACE("doing DVD_READ_STRUCTURE\n");
|
||||
|
|
Loading…
Reference in New Issue