Поделиться через


IOCTL_CDROM_RAW_READ IOCTL (ntddcdrm.h)

Считывает данные с компакт-диска в необработанном режиме.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Если IOCTL находится в пользовательском режиме, Irp-AssociatedIrp.SystemBuffer> содержит структуру RAW_READ_INFO, которая указывает смещение начального диска, число секторов и режим отслеживания (XA или CDDA) для чтения. Parameters.DeviceIoControl.InputBufferLength указывает размер структуры в байтах, который должен иметь >значение = sizeof(RAW_READ_INFO). Parameters.DeviceIoControl.OutputBufferLength указывает размер считываемого буфера, который должен быть >= sizeof(SectorCount * RAW_SECTOR_SIZE).

Если IOCTL находится в режиме ядра, Parameters.DeviceIoControl.Type3InputBuffer содержит структуру, которая указывает смещение начального диска, число секторов и режим отслеживания (XA или CDDA) для чтения. Parameters.DeviceIoControl.OutputBufferLength указывает размер считываемого буфера в байтах, который должен быть >= sizeof(SectorCount * RAW_SECTOR_SIZE).

Длина входного буфера

См. выше.

Выходной буфер

Драйвер записывает запрошенные байты напрямую (с помощью DMA или PIO) в буфер, описанный MDL в Irp-MdlAddress>.

Длина выходного буфера

Длина MDL.

Блок состояния

Если чтение выполнено успешно, драйвер устанавливает для параметра Состояние значение STATUS_SUCCESS, а для параметра Information — количество переданных байтов. Если чтение не выполнено, драйвер устанавливает значение Information равным нулю, а состояние — возможно, STATUS_INVALID_PARAMETER, STATUS_INSUFFICIENT_RESOURCES или STATUS_INVALID_DEVICE_REQUEST.

Требования

Требование Значение
Заголовок ntddcdrm.h (включая Ntddcdrm.h)

См. также раздел

RAW_READ_INFO