NVME_CONTROLLER_MEMORY_BUFFER_SIZE union (nvme.h)
定義選擇性控制器記憶體緩衝區緩存器的大小,並用於 NVME_CONTROLLER_REGISTERS 結構的CMBSZ欄位中。
如果控制器不支援控制器記憶體緩衝區功能, CMBSZ 欄位會清除為 0h
。
控制器記憶體緩衝區的位置是在 NVME_CONTROLLER_REGISTERS的CMBLOC欄位中指定。
語法
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) 和散佈 清單 (SGL) 。
當此值設定為 1
時,控制器支援控制器記憶體緩衝區中的PRP清單。 如果值設定 1
為 ,且控制器支援 SCL,控制器支援控制器記憶體緩衝區中的 SGLS。 如果這個位設定為 1
,[提交佇列支援 (SQS) ] 欄位將會設定為 1
。
當此值清除為 0
時,所有 PRP 清單 和 SCL 都會放在主機記憶體中。
DUMMYSTRUCTNAME.RDS
指出控制器是否支援控制器記憶體緩衝區中的數據和元數據,例如從控制器傳送至主機的讀取命令。
當此值設定為 1
時,控制器支援控制器記憶體緩衝區中的數據和元數據,以取得將數據從控制器傳輸到主機的命令。
當此值清除為 0
時,從控制器傳送數據至主機之命令的所有數據和元數據都會傳輸至主機記憶體。
DUMMYSTRUCTNAME.WDS
指出控制器是否支援控制器記憶體緩衝區中的數據和元數據,例如寫入命令,將數據從主機傳輸到控制器。
當此值設定為 1
時,控制器支援控制器記憶體緩衝區中的數據和元數據,以取得將數據從主機傳輸到控制器的命令。
當此值清除為 0
時,會將從主機傳輸數據至控制器之命令的所有數據和元數據,從主機記憶體傳輸。
DUMMYSTRUCTNAME.Reserved
DUMMYSTRUCTNAME.SZU
NVME_CMBSZ_SIZE_UNITS值,指出 [大小 SZ] 字段的數據粒度。
DUMMYSTRUCTNAME.SZ
指出主機可使用的控制器記憶體緩衝區大小。 大小為大小單位 SZU 的倍數。
如果NVME_CONTROLLER_MEMORY_BUFFER_LOCATION結構中的Offset (OFST 欄位) + 大小 (SZ) 超過指定基地址快存器的長度, (NVME_CONTROLLER_MEMORY_BUFFER_LOCATION結構中的 BIR 欄位) ,則主機可用的大小會受限於基底位址緩存器的長度。
AsUlong
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
標頭 | nvme.h |