NVME_CONTROLLER_MEMORY_BUFFER_SIZE union (nvme.h)

定义可选控制器内存缓冲区寄存器的大小,用于NVME_CONTROLLER_REGISTERS结构的 CMBSZ 字段中。

如果控制器不支持控制器内存缓冲区功能,则会将 CMBSZ 字段清除为 0h

控制器内存缓冲区的位置在 NVME_CONTROLLER_REGISTERSCMBLOC 字段中指定。

语法

typedef union {
  struct {
    ULONG SQS : 1;
    ULONG CQS : 1;
    ULONG LISTS : 1;
    ULONG RDS : 1;
    ULONG WDS : 1;
    ULONG Reserved : 3;
    ULONG SZU : 4;
    ULONG SZ : 20;
  } DUMMYSTRUCTNAME;
  ULONG  AsUlong;
} NVME_CONTROLLER_MEMORY_BUFFER_SIZE, *PNVME_CONTROLLER_MEMORY_BUFFER_SIZE;

成员

DUMMYSTRUCTNAME

DUMMYSTRUCTNAME.SQS

指示控制器是否支持控制器内存缓冲区中的管理员和 I/O 提交队列。

当此值设置为 1时,控制器支持控制器内存缓冲区中的管理员和 I/O 提交队列。 将此值清除为 0时,所有提交队列都将放置在主机内存中。

DUMMYSTRUCTNAME.CQS

指示控制器是否支持控制器内存缓冲区中的管理员和 I/O 完成队列。

当此值设置为 1时,控制器支持控制器内存缓冲区中的管理员和 I/O 完成队列。 将此值清除为 0时,所有完成队列都将放置在主机内存中。

DUMMYSTRUCTNAME.LISTS

指示控制器是否支持控制器内存缓冲区中的物理区域页 (PRP) 和散点聚集Lists (SGL) 。

当此值设置为 1时,控制器支持控制器内存缓冲区中的 PRP Lists。 如果值设置为 1 ,并且控制器支持 SGLS,则控制器支持控制器内存缓冲区中的 SGLS。 如果此位设置为 1,则提交队列支持 (SQS) 字段将设置为 1

将此值清除为 0时,所有 PRP Lists和 SDK 都将放置在主机内存中。

DUMMYSTRUCTNAME.RDS

指示控制器是否支持用于将数据从控制器传输到主机的命令(如 Read 命令)的控制器内存缓冲区中的数据和元数据。

当此值设置为 1时,控制器支持用于将数据从控制器传输到主机的命令的控制器内存缓冲区中的数据和元数据。

将此值清除为 0时,将数据从控制器传输到主机的命令的所有数据和元数据都将传输到主机内存。

DUMMYSTRUCTNAME.WDS

指示控制器是否支持用于将数据从主机传输到控制器的命令(如 Write 命令)的控制器内存缓冲区中的数据和元数据。

当此值设置为 1时,控制器支持用于将数据从主机传输到控制器的命令的控制器内存缓冲区中的数据和元数据。

将此值清除为 0时,用于将数据从主机传输到控制器的命令的所有数据和元数据都将从主机内存中传输。

DUMMYSTRUCTNAME.Reserved

DUMMYSTRUCTNAME.SZU

一个NVME_CMBSZ_SIZE_UNITS值,该值指示“大小 SZ”字段的粒度。

DUMMYSTRUCTNAME.SZ

指示可供主机使用的控制器内存缓冲区的大小。 大小以大小单位 SZU 的倍数表示。

如果 SZ) NVME_CONTROLLER_MEMORY_BUFFER_LOCATION 结构中的“偏移量 (OFST”字段) + 大小 (超过了NVME_CONTROLLER_MEMORY_BUFFER_LOCATION结构) 中指定基址寄存器 (BIR 字段的长度,则主机可用大小受基址寄存器的长度限制。

AsUlong

要求

要求
最低受支持的客户端 Windows 10
标头 nvme.h

另请参阅