IOCTL_CDROM_RAW_READ IOCTL (ntddcdrm.h)
Считывает данные с компакт-диска в необработанном режиме.
Основной код
Входной буфер
Если 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) |