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结构,其中 Signature 字段设置为“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> 处的缓冲区。
输出缓冲区长度
缓冲区的长度。
状态块
“信息”字段包含输出缓冲区中返回的字节数。 “状态”字段指示操作的结果。
要求
要求 | 值 |
---|---|
Header | ntddscsi.h (包括 Ntddscsi.h) |