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 结构,签名字段设置为“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的缓冲区。

输出缓冲区长度

缓冲区的长度。

状态块

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

要求

要求 价值
标头 ntddscsi.h (包括 Ntddscsi.h)

另请参阅

IOCTL_SCSI_MINIPORT

IoBuildDeviceIoControlRequest

NVCACHE_REQUEST_BLOCK

SRB_IO_CONTROL