NVCACHE_REQUEST_BLOCK 结构 (ntddscsi.h)

NVCACHE_REQUEST_BLOCK结构与IOCTL_SCSI_MINIPORT请求结合使用, (H-HDD) 设备 (管理混合硬盘驱动器,例如 Microsoft ReadyDrive 技术) 。 本主题定义对 NV 缓存管理器的调用的输入数据和输出数据的常规结构。 调用方应在调用 DeviceIoControlIoBuildDeviceIoControlRequest 之前填写所有必填字段。 微型端口驱动程序必须在请求的函数完成后和返回之前执行相同的操作。

语法

typedef struct _NVCACHE_REQUEST_BLOCK {
  ULONG     NRBSize;
  USHORT    Function;
  ULONG     NRBFlags;
  ULONG     NRBStatus;
  ULONG     Count;
  ULONGLONG LBA;
  ULONG     DataBufSize;
  ULONG     NVCacheStatus;
  ULONG     NVCacheSubStatus;
} NVCACHE_REQUEST_BLOCK, *PNVCACHE_REQUEST_BLOCK;

成员

NRBSize

(NVCACHE_REQUEST_BLOCK) 的大小

Function

指定要执行的操作,可以是以下值之一:

含义
NRB_FUNCTION_NVCACHE_INFO 从设备获取 NV 缓存管理器功能支持信息。 成功完成此函数后,所需的数据字段将返回给调用方。 返回数据结构 NV_FEATURE_PARAMETER
NRB_FUNCTION_SPINDLE_STATUS 确定设备当前是旋转还是正在旋转。 对于 ATA 设备,需要“检查电源模式”命令来获取设备的轴状态。 对于 SCSI 设备,可以使用 Mode Sense 命令来查询设备的当前电源模式。
NRB_FUNCTION_NVCACHE_POWER_MODE_SET 打开 NV 缓存管理器电源模式。
NRB_FUNCTION_NVCACHE_POWER_MODE_RESET 关闭 NV 缓存管理器电源模式。
NRB_FUNCTION_FLUSH_NVCACHE 刷新当前固定在 NV 缓存内存中的数据,使所需的 NV 缓存内存空间可用。
NRB_FUNCTION_QUERY_PINNED_SET 获取 NV 缓存管理器固定集中当前) 范围的 LBA (逻辑块地址。
NRB_FUNCTION_QUERY_CACHE_MISS 请求设备在单个 512 字节块中报告 LBA 范围内的 NV 缓存未命中数。
NRB_FUNCTION_ADD_LBAS_PINNED_SET 将 NV 缓存管理器集数据中指定的 BA 添加到 NV 缓存管理器固定集(如果尚未这样做)。
NRB_FUNCTION_REMOVE_LBAS_PINNED_SET 从 NV 缓存固定集中删除 NV 缓存集数据中指定的 LBA。
NRB_FUNCTION_QUERY_HYBRID_DISK_STATUS 保留供将来使用。
NRB_FUNCTION_PASS_HINT_PAYLOAD 将 IO 提示传递到 SATA 设备。

NRBFlags

保留供将来使用。

NRBStatus

指示来自驱动程序的 NV 缓存管理器函数请求状态。 这可以是以下值之一:

含义
NRB_SUCCESS 无错误。
NRB_ILLEGAL_REQUEST 端口驱动程序检测到的非法请求。
NRB_INVALID_PARAMETER 传递给端口驱动程序的参数无效。
NRB_INPUT_DATA_OVERRUN 提供给端口驱动程序的数据过多。
NRB_INPUT_DATA_UNDERRUN 向端口驱动程序提供的数据不足。
NRB_OUTPUT_DATA_OVERRUN 从端口驱动程序返回的数据过多。
NRB_OUTPUT_DATA_UNDERRUN 从端口驱动程序返回的数据不足。

Count

要通过指定函数传输的 512 字节块的数目。

LBA

为指定函数启动设备的 LBA。

DataBufSize

数据缓冲区的大小(以字节为单位)。

NVCacheStatus

从设备返回的状态。 对于 ATA 设备,此值是其任务文件中状态寄存器的内容。 对于 SCSI 设备,此值是从设备返回的感知代码。

NVCacheSubStatus

从设备返回的错误代码。 对于 ATA 设备,此值是其任务文件中错误注册的内容。 对于 SCSI 设备,此值是从设备返回的 Sense 键。

注解

有关函数行为的详细信息,请参阅 ATA8-ACS 规范的第 7.20 部分。

要求

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

另请参阅

IOCTL_SCSI_MINIPORT

IOCTL_SCSI_MINIPORT_NVCACHE