IOCTL_CDROM_RAW_READ IOCTL (ntddcdrm.h)
在原始模式下从 CD-ROM 读取数据。
主要代码
输入缓冲区
如果 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) 将请求的字节直接 (写入 Irp-MdlAddress> 处的 MDL 描述的缓冲区。
输出缓冲区长度
MDL 的长度。
状态块
如果读取成功,驱动程序会将 “状态” 设置为“STATUS_SUCCESS”,将 “信息” 设置为传输的字节数。 如果读取不成功,驱动程序会将 “信息” 设置为零,将 “状态” 设置为可能STATUS_INVALID_PARAMETER、STATUS_INSUFFICIENT_RESOURCES或STATUS_INVALID_DEVICE_REQUEST。
要求
要求 | 值 |
---|---|
Header | ntddcdrm.h (包括 Ntddcdrm.h) |