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_MJ_DEVICE_CONTROL

输入缓冲区

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_CONTROLNVCACHE_REQUEST_BLOCK和特定于函数的数据缓冲区的组合。 数据缓冲区是否存在由 NVCACHE_REQUEST_BLOCK****DataBufSize 字段指示。

输出缓冲区

更新SRB_IO_CONTROLSRB_IO_CONTROL**] () 和NVCACHE_REQUEST_BLOCK结构以及可选的特定于函数的数据缓冲区返回到 Irp-AssociatedIrp.SystemBuffer> 处的缓冲区。

输出缓冲区长度

缓冲区的长度。

状态块

“信息”字段包含输出缓冲区中返回的字节数。 “状态”字段指示操作的结果。

要求

要求
Header ntddscsi.h (包括 Ntddscsi.h)

另请参阅

IOCTL_SCSI_MINIPORT

IoBuildDeviceIoControlRequest

NVCACHE_REQUEST_BLOCK

SRB_IO_CONTROL