定義選用控制器記憶體緩衝區暫存器的大小,並用於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;
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 ,且控制器支援 SGL、則控制器會支援控制器記憶體緩衝區中的 SGL。 如果此位元設為 1,則「提交佇列支援 (SQS)」欄位將設為 1。
當清除此值 0時,所有PRP清單和SGL都將放置在主機記憶體中。
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 |