IOCTL_SCSI_MINIPORT_NVCACHE IOCTL (ntddscsi.h)
可以使用 DeviceIoControl 和 IOCTL_SCSI_MINIPORT 控制代码,通过管理员权限运行的用户模式应用程序代码调用此处定义的 NV 缓存管理作。 或者,调用方可以是内核模式驱动程序代码,使用 IoBuildDeviceIoControlRequest 和IOCTL_SCSI_MINIPORT控制代码。
NV 缓存管理函数请求是在 NVCACHE_REQUEST_BLOCK 结构中的字段中指定的。 IOCTL_SCSI_MINIPORT 的输入是用户定义的数据结构,其中包含 SRB_IO_CONTROL 结构,后跟 NVCACHE_REQUEST_BLOCK 结构。 其他特定于函数的数据可以选择遵循 NVCACHE_REQUEST_BLOCK 结构。
用于 NV 缓存管理功能的接口由两个层组成。 第一层是调用方和端口驱动程序之间的接口,由 IOCTL_SCSI_MINIPORT定义。 第二层是调用方与设备之间的接口,该接口由 ATA8-ACS 规范和IOCTL_SCSI_MINIPORT_NVCACHE定义。 用户模式应用程序代码的 API 是 DeviceIoControl 接口。 内核模式驱动程序代码的 API 是 IoBuildDeviceIoControlRequest 接口,该接口使用 IOCTL_SCSI_MINIPORT。
主要代码
输入缓冲区
Irp->AssociatedIrp.SystemBuffer 的缓冲区包含一个 SRB_IO_CONTROL 结构,签名字段设置为“HYBRDISK”,ControlCode 字段设置为IOCTL_SCSI_MINIPORT_NVCACHE。 NVCACHE_REQUEST_BLOCK 结构紧跟 SRB_IO_CONTROL 结构。 任何特定于函数的可选数据缓冲区紧跟 NVCACHE_REQUEST_BLOCK 结构。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 指示所有输入数据的大小(以字节为单位):SRB_IO_CONTROL、NVCACHE_REQUEST_BLOCK和函数特定的数据缓冲区组合在一起。 数据缓冲区的存在或不存在由 NVCACHE_REQUEST_BLOCK****DataBufSize 字段指示。
输出缓冲区
更新 SRB_IO_CONTROLSRB_IO_CONTROL**]()和 NVCACHE_REQUEST_BLOCK 结构以及可选的特定于函数的数据缓冲区将返回到 Irp->AssociatedIrp.SystemBuffer的缓冲区。
输出缓冲区长度
缓冲区的长度。
状态块
信息 字段包含输出缓冲区中返回的字节数。 状态 字段指示作的结果。
要求
要求 | 价值 |
---|---|
标头 | ntddscsi.h (包括 Ntddscsi.h) |