定义可选控制器内存缓冲区寄存器的大小,并在NVME_CONTROLLER_REGISTERS结构的 CMBSZ 字段中使用。
如果控制器不支持控制器内存缓冲区功能,则会清除 0hCMBSZ 字段。
控制器内存缓冲区的位置在NVME_CONTROLLER_REGISTERS的 CMBLOC 字段中指定。
Syntax
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;
Members
DUMMYSTRUCTNAME
DUMMYSTRUCTNAME.SQS
指示控制器是否支持控制器内存缓冲区中的管理员和 I/O 提交队列。
如果此值设置为 1,控制器支持控制器内存缓冲区中的管理员和 I/O 提交队列。
清除此值 0后,所有提交队列将放置在主机内存中。
DUMMYSTRUCTNAME.CQS
指示控制器是否支持控制器内存缓冲区中的管理员和 I/O 完成队列。
如果此值设置为 1,控制器支持控制器内存缓冲区中的管理员和 I/O 完成队列。
清除此值 0后,所有完成队列将置于主机内存中。
DUMMYSTRUCTNAME.LISTS
指示控制器是否支持控制器内存缓冲区中的物理区域页(PRP)和散点收集列表(SGL)。
如果此值设置为 1,控制器支持控制器内存缓冲区中的 PRP 列表。 如果该值设置为 1 控制器且 SCL 受控制器支持,则控制器支持控制器内存缓冲区中的 SCL。 如果此位设置为 1,则提交队列支持 (SQS) 字段将设置为 1。
清除此值 0后,所有 PRP 列表和 SCL 都将放置在主机内存中。
DUMMYSTRUCTNAME.RDS
指示控制器是否支持控制器内存缓冲区中的数据和元数据,这些命令(例如读取命令)将数据从控制器传输到主机。
如果此值设置为 1,控制器支持控制器内存缓冲区中的数据和元数据,用于将数据从控制器传输到主机的命令。
清除此值 0后,从控制器传输到主机的命令的所有数据和元数据都将传输到主机内存。
DUMMYSTRUCTNAME.WDS
指示控制器是否支持控制器内存缓冲区中的数据和元数据,这些命令(例如写入命令)将数据从主机传输到控制器。
如果此值设置为 1,控制器支持控制器内存缓冲区中的数据和元数据,用于将数据从主机传输到控制器的命令。
清除 0此值后,从主机传输到控制器的命令的所有数据和元数据都将从主机内存传输。
DUMMYSTRUCTNAME.Reserved
DUMMYSTRUCTNAME.SZU
指示大小 SZ 字段粒度的NVME_CMBSZ_SIZE_UNITS值。
DUMMYSTRUCTNAME.SZ
指示主机可用的控制器内存缓冲区的大小。 大小单位 SZU 的倍数。
如果偏移量(NVME_CONTROLLER_MEMORY_BUFFER_LOCATION结构中的 OFST 字段) + 大小 (SZ) 超过指定的基址寄存器(NVME_CONTROLLER_MEMORY_BUFFER_LOCATION 结构中的 BIR 字段)的长度,则主机可用的大小受基址寄存器的长度限制。
AsUlong
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10操作系统 |
| Header | nvme.h |