NVME_IDENTIFY_CONTROLLER_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| VID | WORD | 2 | +0 | +0 | Peripheral Component Interconnect - Special Interest Group (PCI-SIG) によって割り当てられた企業ベンダー識別子を格納します。 |
| SSVID | WORD | 2 | +2 | +2 | サブシステム用に PCI-SIG によって割り当てられた企業ベンダー識別子を格納します。 |
| SN | BYTE | 20 | +4 | +4 | ベンダーによって ASCII 文字列として割り当てられた、NVM サブシステムのシリアル番号を格納します。 |
| MN | BYTE | 40 | +24 | +24 | ベンダーによって ASCII 文字列として割り当てられた、NVM サブシステムのモデル番号を格納します。 |
| FR | BYTE | 8 | +64 | +64 | NVM サブシステムで現在アクティブなファームウェアリビジョンを格納します。 これは、Get Log Page コマンドで取得できる NVME_FIRMWARE_SLOT_INFO_LOG 内のファームウェアリビジョン情報と同じものです。 |
| RAB | BYTE | 1 | +72 | +72 | 推奨される Arbitration Burst サイズを格納します。 |
| IEEE | BYTE | 3 | +73 | +73 | コントローラーベンダーの Organization Unique Identifier (OUI) を格納します。 OUI は、http://standards.ieee.org/develop/regauth/oui/public.html で登録できる、有効な IEEE/RAC 割り当て識別子です。 |
| CMIC | _CMIC_e__Struct | 1 | +76 | +76 | コントローラーおよび NVM サブシステムのマルチパス I/O と名前空間共有の機能を指定する、Controller Multi-Path I/O and Namespace Sharing Capabilities (CMIC) 構造体です。 |
| MDTS | BYTE | 1 | +77 | +77 | ホストとコントローラーの間の最大データ転送サイズを示します。 ホストは、この転送サイズを超えるコマンドを送信すべきではありません。転送サイズを超えるコマンドが送信された場合、そのコマンドは NVME_STATUS_INVALID_FIELD_IN_COMMAND のステータスで中止されます。 このフィールドの値は、Controller Capabilities 構造体の MPSMIN フィールドで指定される最小メモリページサイズを単位とし、2 のべき乗 (2^n) として報告されます。値 SGL Bit Bucket 記述子がサポートされている場合、転送先データバッファーについてコマンドが最大データ転送サイズを超えるかどうかの判定に、その長さが含まれます。転送元データバッファー内での長さは、最大データ転送サイズの計算には含まれません。 |
| CNTLID | WORD | 2 | +78 | +78 | コントローラーに関連付けられた、NVM サブシステム内で一意のコントローラー識別子を格納します。 |
| VER | DWORD | 4 | +80 | +80 | NVME_CONTROLLER_REGISTERS 構造体の VS フィールドで定義される Version レジスタで報告される値を格納します。 NVMe 仕様バージョン 1.2 以降に準拠する実装は、このフィールドに 0 以外の値を報告します。 |
| RTD3R | DWORD | 4 | +84 | +84 | Runtime D3 (RTD3) から復帰するときの一般的なレイテンシをマイクロ秒単位で示します。 NVMe 仕様バージョン 1.2 以降に準拠する実装は、このフィールドに 0 以外の値を報告します。 |
| RTD3E | DWORD | 4 | +88 | +88 | Runtime D3 (RTD3) に入るときの一般的なレイテンシをマイクロ秒単位で示します。 NVMe 仕様バージョン 1.2 以降に準拠する実装は、このフィールドに 0 以外の値を報告します。 |
| OAES | _OAES_e__Struct | 4 | +92 | +92 | オプションの非同期イベントがコントローラーでサポートされているかどうかを示すフィールドを含む、Optional Asynchronous Events Supported (OAES) 構造体です。 コントローラーは、ホストソフトウェアによって有効化される前に、オプションの非同期イベントを送信すべきではありません。 |
| CTRATT | _CTRATT_e__Struct | 4 | +96 | +96 | コントローラーの属性情報を含む、Controller Attributes (CTRATT) 構造体です。 |
| RRLS | _RRLS_e__Struct | 2 | +100 | +100 | 読み取り回復レベル対応を示す構造体。 |
| Reserved0 | BYTE | 9 | +102 | +102 | CTRATT 構造体のビット 0:27 は予約済みです。 |
| CNTRLTYPE | BYTE | 1 | +111 | +111 | コントローラ種別(I/O・管理・検出)を示す値。 |
| FGUID | BYTE | 16 | +112 | +112 | FRU(現場交換ユニット)グローバル一意識別子(16バイト)。 |
| CRDT1 | WORD | 2 | +128 | +128 | コマンドリトライ遅延時間1。 |
| CRDT2 | WORD | 2 | +130 | +130 | コマンドリトライ遅延時間2。 |
| CRDT3 | WORD | 2 | +132 | +132 | コマンドリトライ遅延時間3。 |
| Reserved1 | BYTE | 106 | +134 | +134 | OAES 構造体のビット 0:7 は予約済みです。 |
| ReservedForManagement | BYTE | 13 | +240 | +240 | NVMe 管理用に予約済みです。 |
| NVMSR | BYTE | 1 | +253 | +253 | NVMサブシステムレポート(エンクロージャ等)を示す値。 |
| VWCI | BYTE | 1 | +254 | +254 | VPDライトサイクル情報を示す値。 |
| MEC | BYTE | 1 | +255 | +255 | 管理エンドポイント機能(SMBus/PCIe)を示す値。 |
| OACS | _OACS_e__Struct | 2 | +256 | +256 | コントローラーがサポートするオプションの Admin コマンド を示すフィールドを含む、Optional Admin Command Support (OACS) 構造体です。 |
| ACL | BYTE | 1 | +258 | +258 | コントローラーがサポートする、同時に未処理にできる Abort コマンドの最大数を示します。 これは 0 基準の値です。実装は、同時に少なくとも 4 個の未処理の Abort コマンドをサポートすべきです。 |
| AERL | BYTE | 1 | +259 | +259 | コントローラーがサポートする、同時に未処理にできる Asynchronous Event Request コマンドの最大数を示します。 これは 0 基準の値です。実装は、同時に少なくとも 4 個の未処理の Asynchronous Event Request コマンドをサポートすべきです。 |
| FRMW | _FRMW_e__Struct | 1 | +260 | +260 | ファームウェア更新に関する機能を示すフィールドを含む、Firmware Updates (FRMW) 構造体です。 |
| LPA | _LPA_e__Struct | 1 | +261 | +261 | Get Log Page コマンドを使用してアクセスするログページのオプション属性を示すフィールドを含む、Log Page Attributes (LPA) 構造体です。 |
| ELPE | BYTE | 1 | +262 | +262 | コントローラーが保存する Error Information ログエントリの数を示します。このフィールドは 0 基準の値です。 |
| NPSS | BYTE | 1 | +263 | +263 | コントローラーがサポートする NVM Express の電力状態の数を示します。これは 0 基準の値です。 電力状態は、電力状態 0 から順に番号が付けられます。コントローラーは少なくとも 1 つの電力状態 (たとえば電力状態 0) をサポートする必要があり、さらに最大 31 個の電力状態をサポートできます (合計で 32 個)。 |
| AVSCC | _AVSCC_e__Struct | 1 | +264 | +264 | Admin Vendor Specific コマンドの処理に関する構成設定を示すフィールドを含む、Admin Vendor Specific Command Configuration (AVSCC) 構造体です。 |
| APSTA | _APSTA_e__Struct | 1 | +265 | +265 | 自律的な電力状態遷移機能 の属性を示すフィールドを含む、Autonomous Power State Transition Attributes (APSTA) 構造体です。 |
| WCTEMP | WORD | 2 | +266 | +266 | コントローラーの動作は継続するものの過熱状態であることを示す、Composite Temperature フィールド (SMART / Health Information ログで報告されます) の最小値を示します。 直ちに対処すること (たとえば冷却の追加やワークロードの削減) が推奨されます。プラットフォームは、複合温度をこの値未満に維持するよう努めるべきです。 このフィールドの値 |
| CCTEMP | WORD | 2 | +268 | +268 | 重大な過熱状態であることを示す、Composite Temperature フィールド (SMART / Health Information ログで報告されます) の最小値を示します。たとえば、通常の動作を継続できなくなる、データが失われる可能性がある、デバイスが自動的にシャットダウンする、パフォーマンスが極端に制限される、または恒久的な損傷が生じる、といった状態です。 このフィールドの値 |
| MTFA | WORD | 2 | +270 | +270 | ファームウェアイメージをアクティブ化するために、コントローラーがコマンドの処理を一時的に停止する最大時間を示します。 このフィールドは、コントローラーがリセットなしでのファームウェアのアクティブ化をサポートする場合に有効です。MFTA の値は 100 ミリ秒単位で指定されます。値 |
| HMPRE | DWORD | 4 | +272 | +272 | Host Memory Buffer 機能のためにホストが割り当てるべき推奨サイズを 4KB 単位で示します。 この値は、Host Memory Buffer の最小サイズ (HMMIN) 以上でなければなりません。 このフィールドが 0 以外の場合、Host Memory Buffer 機能がサポートされます。この値が |
| HMMIN | DWORD | 4 | +276 | +276 | Host Memory Buffer 機能のためにホストが割り当てるべき最小サイズを 4KB 単位で示します。 この値が |
| TNVMCAP | BYTE | 16 | +280 | +280 | NVM サブシステムの合計 NVM 容量をバイト単位で示します。 このフィールドは、Namespace Management コマンドと Namespace Attachment コマンドがサポートされている場合にサポートされます。 |
| UNVMCAP | BYTE | 16 | +296 | +296 | NVM サブシステムの未割り当ての NVM 容量をバイト単位で示します。 このフィールドは、Namespace Management コマンドと Namespace Attachment コマンドがサポートされている場合にサポートされます。 |
| RPMBS | _RPMBS_e__Struct | 4 | +312 | +312 | コントローラーが 1 つ以上の Replay Protected Memory Block (RPMB) をサポートするかどうかと、関連する機能を示すフィールドを含む、Replay Protected Memory Block Support (RPMBS) 構造体です。 |
| EDSTT | WORD | 2 | +316 | +316 | Extended Device Self-test Time (EDSTT) を示します。 |
| DSTO | BYTE | 1 | +318 | +318 | Device Self-test Options (DSTO) を示します。 |
| FWUG | BYTE | 1 | +319 | +319 | Firmware Update Granularity (FWUG) を示します。 |
| KAS | WORD | 2 | +320 | +320 | Keep Alive Support (KAS) を示します。 |
| HCTMA | _HCTMA_e__Struct | 2 | +322 | +322 | Host Controlled Thermal Management Attributes (HCTMA) 構造体です。 |
| MNTMT | WORD | 2 | +324 | +324 | Minimum Thermal Management Temperature (MNTMT、最小熱管理温度) です。 |
| MXTMT | WORD | 2 | +326 | +326 | Maximum Thermal Management Temperature (MXTMT、最大熱管理温度) です。 |
| SANICAP | _SANICAP_e__Struct | 4 | +328 | +328 | Sanitize Capabilities (SANICAP、サニタイズ機能) です。 |
| HMMINDS | DWORD | 4 | +332 | +332 | ホストメモリバッファ最小デスクリプタサイズ。 |
| HMMAXD | WORD | 2 | +336 | +336 | ホストメモリバッファ最大デスクリプタエントリ数。 |
| NSETIDMAX | WORD | 2 | +338 | +338 | NVM Set Identifier の最大値です。 |
| ENDGIDMAX | WORD | 2 | +340 | +340 | サポートするエンデュアランスグループIDの最大値。 |
| ANATT | BYTE | 1 | +342 | +342 | ANA遷移時間(秒)。 |
| ANACAP | _ANACAP_e__Struct | 1 | +343 | +343 | ANA(非対称ネームスペースアクセス)機能の対応を示す構造体。 |
| ANAGRPMAX | DWORD | 4 | +344 | +344 | サポートするANAグループIDの最大値。 |
| NANAGRPID | DWORD | 4 | +348 | +348 | サポートするANAグループIDの総数。 |
| PELS | DWORD | 4 | +352 | +352 | 永続イベントログのサイズ(64KiB単位)。 |
| DomainId | WORD | 2 | +356 | +356 | このコントローラが属するドメインの識別子。 |
| Reserved2 | BYTE | 10 | +358 | +358 | 予約領域。未使用。 |
| MEGCAP | BYTE | 16 | +368 | +368 | 最大エンデュアランスグループ容量(バイト、128ビット)。 |
| TMPTHHA | BYTE | 1 | +384 | +384 | 温度閾値ヒステリシス属性を示す値。 |
| Reserved3 | BYTE | 1 | +385 | +385 | 予約済みのフィールドです。 |
| CQT | WORD | 2 | +386 | +386 | コマンドキュータイムアウト関連値。 |
| Reserved4 | BYTE | 124 | +388 | +388 | 予約済みのフィールドです。 |
| SQES | _SQES_e__Struct | 1 | +512 | +512 | NVM コマンドセットを使用する場合に必要な Submission Queue エントリのサイズと最大サイズを示すフィールドを含む、Submission Queue Entry Size (SQES) 構造体です。 |
| CQES | _CQES_e__Struct | 1 | +513 | +513 | NVM コマンドセットを使用する場合に必要な Completion Queue エントリのサイズと最大サイズを示すフィールドを含む、Completion Queue Entry Size (CQES) 構造体です。 |
| MAXCMD | WORD | 2 | +514 | +514 | 1キューで未完了にできる最大コマンド数。 |
| NN | DWORD | 4 | +516 | +516 | コントローラーに存在する有効な名前空間の数を示します。 |
| ONCS | _ONCS_e__Struct | 2 | +520 | +520 | コントローラーがサポートするオプションの NVM コマンド と機能を示すフィールドを含む、Optional NVM Command Support (ONCS) 構造体です。 |
| FUSES | _FUSES_e__Struct | 2 | +522 | +522 | コントローラーがサポートする fused 操作を示すフィールドを含む、Fused Operation Support (FUSES) 構造体です。 |
| FNA | _FNA_e__Struct | 1 | +524 | +524 | Format NVM コマンドの属性を示すフィールドを含む、Format NVM Attributes (FNA) 構造体です。 |
| VWC | _VWC_e__Struct | 1 | +525 | +525 | 実装における揮発性書き込みキャッシュの有無に関連する属性を示すフィールドを含む、Volatile Write Cache (VWC) 構造体です。 |
| AWUN | WORD | 2 | +526 | +526 | 通常の動作中に、サポートされる任意の名前空間フォーマットにおいて、すべての名前空間にわたって NVM へアトミックに書き込まれることが保証される書き込み操作のサイズを示します。このフィールドは論理ブロック単位で指定され、0 基準の値です。 特定の名前空間がこのフィールドで報告される値より大きいサイズを保証する場合、その名前空間固有のサイズは Identify Namespace データ構造体の NAWUN フィールドで報告されます。 AWUN の値以下のサイズで書き込みコマンドが送信された場合、他の読み取りコマンドまたは書き込みコマンドとの関係において、その書き込みコマンドが NVM に対してアトミックであることがホストに保証されます。AWUN の値より大きいサイズで書き込みコマンドが送信された場合、コマンドのアトミック性は保証されません。 AWUN の値は、電源障害によって発生する書き込みエラーには適用されません。詳細については、Atomic Write Unit Power Fail (AWUPF) フィールドを参照してください。 値 |
| AWUPF | WORD | 2 | +528 | +528 | 電源障害またはエラー状態の発生時に、サポートされる任意の名前空間フォーマットにおいて、すべての名前空間にわたって NVM へアトミックに書き込まれることが保証される書き込み操作のサイズを示します。このフィールドは論理ブロック単位で指定され、0 基準の値です。 特定の名前空間がこのフィールドで報告される値より大きいサイズを保証する場合、その名前空間固有のサイズは Identify Namespace データ構造体の NAWUPF フィールドで報告されます。AWUPF の値は AWUN の値以下でなければなりません。 AWUPF の値以下のサイズで書き込みコマンドが送信された場合、他の読み取りコマンドまたは書き込みコマンドとの関係において、その書き込みが NVM に対してアトミックであることがホストに保証されます。このサイズより大きい書き込みコマンドが送信された場合、コマンドのアトミック性は保証されません。書き込みサイズが AWUPF の値以下で、その書き込みコマンドが失敗した場合、対象の論理ブロックに対する以降の読み取りコマンドは、直前に成功した書き込みコマンドのデータを返します。 AWUPF の値より大きいサイズで書き込みコマンドが送信された場合、対象の論理ブロックの以降の読み取りで返されるデータは保証されません。 |
| NVSCC | _NVSCC_e__Struct | 1 | +530 | +530 | NVM Vendor Specific コマンドの処理に関する構成設定を示すフィールドを含む、NVM Vendor Specific Command Configuration (NVSCC) 構造体です。 |
| NWPC | _NWPC_e__Struct | 1 | +531 | +531 | ネームスペース書き込み保護機能の対応を示す構造体。 |
| ACWU | WORD | 2 | +532 | +532 | Compare and Write の fused 操作について、サポートされる任意の名前空間フォーマットにおいて、すべての名前空間にわたって NVM へアトミックに書き込まれることが保証される書き込み操作のサイズを示します。 特定の名前空間がこのフィールドで報告される値より大きいサイズを保証する場合、その名前空間固有のサイズは Identify Namespace データ構造体の NACWU フィールドで報告されます。 このフィールドは、Compare and Write の fused コマンドがサポートされている場合にサポートされます。このフィールドは論理ブロック単位で指定され、0 基準の値です。この値より大きい転送サイズを要求する Compare and Write が送信された場合、コントローラーは NVME_STATUS_INVALID_FIELD_IN_COMMAND のステータスでコマンドを失敗させることがあります。 Compare and Write が fused コマンドとしてサポートされていない場合、このフィールドの値は |
| CopyDescFormats | WORD | 2 | +534 | +534 | サポートするコピーデスクリプタ形式を示すビットマスク。 |
| SGLS | _SGLS_e__Struct | 4 | +536 | +536 | NVM コマンドセットで Scatter Gather List (SGL) がサポートされるかどうかと、サポートされる SGL の種類を指定するフィールドを含む、SGL Support (SGLS) 構造体です。 |
| MNAN | DWORD | 4 | +540 | +540 | サポートする最大ネームスペース数。 |
| MAXDNA | BYTE | 16 | +544 | +544 | ドメインあたりの最大ネームスペース割り当て容量(128ビット)。 |
| MAXCNA | DWORD | 4 | +560 | +560 | コントローラあたりの最大割り当て可能ネームスペース数。 |
| Reserved6 | BYTE | 204 | +564 | +564 | バイト 704:2047 は I/O Command Set Attributes 用に予約済みです。 |
| SUBNQN | BYTE | 256 | +768 | +768 | NVMサブシステムのNVMe修飾名を表す固定長バイト配列。 |
| Reserved7 | BYTE | 768 | +1024 | +1024 | 予約領域。未使用。 |
| IOCCSZ | DWORD | 4 | +1792 | +1792 | I/Oキューコマンドカプセルサイズ(16バイト単位、Fabrics)。 |
| IORCSZ | DWORD | 4 | +1796 | +1796 | I/Oキュー応答カプセルサイズ(16バイト単位、Fabrics)。 |
| ICDOFF | WORD | 2 | +1800 | +1800 | インカプセルデータオフセット(16バイト単位、Fabrics)。 |
| FCATT | _FCATT_e__Struct | 1 | +1802 | +1802 | Fabricsコントローラ属性を示す構造体。 |
| MSDBD | BYTE | 1 | +1803 | +1803 | SGLデスクリプタの最大送信データブロック数(Fabrics)。 |
| OFCS | _OFCS_e__Struct | 2 | +1804 | +1804 | 任意Fabricsコマンド(切断等)の対応を示す構造体。 |
| DCTYPE | BYTE | 1 | +1806 | +1806 | 検出コントローラ種別を示す値(Fabrics)。 |
| Reserved8 | BYTE | 241 | +1807 | +1807 | 予約領域。未使用。 |
| PDS | NVME_POWER_STATE_DESC | 1024 | +2048 | +2048 | 32 個の Power State Descriptor から成る配列を格納します。配列の各メンバーは、Power State Descriptor の特性を示す 32 ビットのフィールドです。このフィールドの形式は NVME_POWER_STATE_DESC 構造体で定義されています。 配列内の構造体の 0 基準の位置は Power State Descriptor の名前に対応しており、Power State 0 Descriptor (PSD0) は位置 0、Power State 1 Descriptor (PSD1) は位置 1、というように続き、Power State 31 Descriptor (PSD31) は位置 31 になります。 |
| VS | BYTE | 1024 | +3072 | +3072 | バイト 3072:4095 はベンダー固有の用途に割り当てられています。 |
構造体: _CMIC_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _OAES_e__Struct x64 4B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | DWORD | 4 | +0 | +0 |
構造体: _CTRATT_e__Struct x64 4B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | DWORD | 4 | +0 | +0 |
構造体: _RRLS_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
構造体: _OACS_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
構造体: _FRMW_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _LPA_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _AVSCC_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _APSTA_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _RPMBS_e__Struct x64 4B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | DWORD | 4 | +0 | +0 |
構造体: _HCTMA_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
構造体: _SANICAP_e__Struct x64 4B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | DWORD | 4 | +0 | +0 |
構造体: _ANACAP_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _SQES_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _CQES_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _ONCS_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
構造体: _FUSES_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
構造体: _FNA_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _VWC_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _NVSCC_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _NWPC_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _SGLS_e__Struct x64 4B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | DWORD | 4 | +0 | +0 |
構造体: _FCATT_e__Struct x64 1B / x86 1B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | BYTE | 1 | +0 | +0 |
構造体: _OFCS_e__Struct x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| _bitfield | WORD | 2 | +0 | +0 |
公式ドキュメント
コントローラーの能力、機能、コマンドセット属性、および電力状態記述子を示す値を格納します。
解説(Remarks)
VID、SN、MN の各フィールドの値を組み合わせることで、NVM サブシステムを識別するグローバルに一意な値を作成できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// NVME_POWER_STATE_DESC (x64 32 / x86 32 バイト)
typedef struct NVME_POWER_STATE_DESC {
WORD MP;
BYTE Reserved0;
BYTE _bitfield1;
DWORD ENLAT;
DWORD EXLAT;
BYTE _bitfield2;
BYTE _bitfield3;
BYTE _bitfield4;
BYTE _bitfield5;
WORD IDLP;
BYTE _bitfield6;
BYTE Reserved7;
WORD ACTP;
BYTE _bitfield7;
BYTE Reserved9[9];
} NVME_POWER_STATE_DESC;
// NVME_IDENTIFY_CONTROLLER_DATA (x64 4096 / x86 4096 バイト)
typedef struct NVME_IDENTIFY_CONTROLLER_DATA {
WORD VID;
WORD SSVID;
BYTE SN[20];
BYTE MN[40];
BYTE FR[8];
BYTE RAB;
BYTE IEEE[3];
_CMIC_e__Struct CMIC;
BYTE MDTS;
WORD CNTLID;
DWORD VER;
DWORD RTD3R;
DWORD RTD3E;
_OAES_e__Struct OAES;
_CTRATT_e__Struct CTRATT;
_RRLS_e__Struct RRLS;
BYTE Reserved0[9];
BYTE CNTRLTYPE;
BYTE FGUID[16];
WORD CRDT1;
WORD CRDT2;
WORD CRDT3;
BYTE Reserved1[106];
BYTE ReservedForManagement[13];
BYTE NVMSR;
BYTE VWCI;
BYTE MEC;
_OACS_e__Struct OACS;
BYTE ACL;
BYTE AERL;
_FRMW_e__Struct FRMW;
_LPA_e__Struct LPA;
BYTE ELPE;
BYTE NPSS;
_AVSCC_e__Struct AVSCC;
_APSTA_e__Struct APSTA;
WORD WCTEMP;
WORD CCTEMP;
WORD MTFA;
DWORD HMPRE;
DWORD HMMIN;
BYTE TNVMCAP[16];
BYTE UNVMCAP[16];
_RPMBS_e__Struct RPMBS;
WORD EDSTT;
BYTE DSTO;
BYTE FWUG;
WORD KAS;
_HCTMA_e__Struct HCTMA;
WORD MNTMT;
WORD MXTMT;
_SANICAP_e__Struct SANICAP;
DWORD HMMINDS;
WORD HMMAXD;
WORD NSETIDMAX;
WORD ENDGIDMAX;
BYTE ANATT;
_ANACAP_e__Struct ANACAP;
DWORD ANAGRPMAX;
DWORD NANAGRPID;
DWORD PELS;
WORD DomainId;
BYTE Reserved2[10];
BYTE MEGCAP[16];
BYTE TMPTHHA;
BYTE Reserved3;
WORD CQT;
BYTE Reserved4[124];
_SQES_e__Struct SQES;
_CQES_e__Struct CQES;
WORD MAXCMD;
DWORD NN;
_ONCS_e__Struct ONCS;
_FUSES_e__Struct FUSES;
_FNA_e__Struct FNA;
_VWC_e__Struct VWC;
WORD AWUN;
WORD AWUPF;
_NVSCC_e__Struct NVSCC;
_NWPC_e__Struct NWPC;
WORD ACWU;
WORD CopyDescFormats;
_SGLS_e__Struct SGLS;
DWORD MNAN;
BYTE MAXDNA[16];
DWORD MAXCNA;
BYTE Reserved6[204];
BYTE SUBNQN[256];
BYTE Reserved7[768];
DWORD IOCCSZ;
DWORD IORCSZ;
WORD ICDOFF;
_FCATT_e__Struct FCATT;
BYTE MSDBD;
_OFCS_e__Struct OFCS;
BYTE DCTYPE;
BYTE Reserved8[241];
NVME_POWER_STATE_DESC PDS[32];
BYTE VS[1024];
} NVME_IDENTIFY_CONTROLLER_DATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_POWER_STATE_DESC
{
public ushort MP;
public byte Reserved0;
public byte _bitfield1;
public uint ENLAT;
public uint EXLAT;
public byte _bitfield2;
public byte _bitfield3;
public byte _bitfield4;
public byte _bitfield5;
public ushort IDLP;
public byte _bitfield6;
public byte Reserved7;
public ushort ACTP;
public byte _bitfield7;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] public byte[] Reserved9;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_IDENTIFY_CONTROLLER_DATA
{
public ushort VID;
public ushort SSVID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public byte[] SN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)] public byte[] MN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] FR;
public byte RAB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] IEEE;
public _CMIC_e__Struct CMIC;
public byte MDTS;
public ushort CNTLID;
public uint VER;
public uint RTD3R;
public uint RTD3E;
public _OAES_e__Struct OAES;
public _CTRATT_e__Struct CTRATT;
public _RRLS_e__Struct RRLS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] public byte[] Reserved0;
public byte CNTRLTYPE;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] FGUID;
public ushort CRDT1;
public ushort CRDT2;
public ushort CRDT3;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 106)] public byte[] Reserved1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)] public byte[] ReservedForManagement;
public byte NVMSR;
public byte VWCI;
public byte MEC;
public _OACS_e__Struct OACS;
public byte ACL;
public byte AERL;
public _FRMW_e__Struct FRMW;
public _LPA_e__Struct LPA;
public byte ELPE;
public byte NPSS;
public _AVSCC_e__Struct AVSCC;
public _APSTA_e__Struct APSTA;
public ushort WCTEMP;
public ushort CCTEMP;
public ushort MTFA;
public uint HMPRE;
public uint HMMIN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] TNVMCAP;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] UNVMCAP;
public _RPMBS_e__Struct RPMBS;
public ushort EDSTT;
public byte DSTO;
public byte FWUG;
public ushort KAS;
public _HCTMA_e__Struct HCTMA;
public ushort MNTMT;
public ushort MXTMT;
public _SANICAP_e__Struct SANICAP;
public uint HMMINDS;
public ushort HMMAXD;
public ushort NSETIDMAX;
public ushort ENDGIDMAX;
public byte ANATT;
public _ANACAP_e__Struct ANACAP;
public uint ANAGRPMAX;
public uint NANAGRPID;
public uint PELS;
public ushort DomainId;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] public byte[] Reserved2;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] MEGCAP;
public byte TMPTHHA;
public byte Reserved3;
public ushort CQT;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)] public byte[] Reserved4;
public _SQES_e__Struct SQES;
public _CQES_e__Struct CQES;
public ushort MAXCMD;
public uint NN;
public _ONCS_e__Struct ONCS;
public _FUSES_e__Struct FUSES;
public _FNA_e__Struct FNA;
public _VWC_e__Struct VWC;
public ushort AWUN;
public ushort AWUPF;
public _NVSCC_e__Struct NVSCC;
public _NWPC_e__Struct NWPC;
public ushort ACWU;
public ushort CopyDescFormats;
public _SGLS_e__Struct SGLS;
public uint MNAN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] MAXDNA;
public uint MAXCNA;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 204)] public byte[] Reserved6;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public byte[] SUBNQN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 768)] public byte[] Reserved7;
public uint IOCCSZ;
public uint IORCSZ;
public ushort ICDOFF;
public _FCATT_e__Struct FCATT;
public byte MSDBD;
public _OFCS_e__Struct OFCS;
public byte DCTYPE;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 241)] public byte[] Reserved8;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public NVME_POWER_STATE_DESC[] PDS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public byte[] VS;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_POWER_STATE_DESC
Public MP As UShort
Public Reserved0 As Byte
Public _bitfield1 As Byte
Public ENLAT As UInteger
Public EXLAT As UInteger
Public _bitfield2 As Byte
Public _bitfield3 As Byte
Public _bitfield4 As Byte
Public _bitfield5 As Byte
Public IDLP As UShort
Public _bitfield6 As Byte
Public Reserved7 As Byte
Public ACTP As UShort
Public _bitfield7 As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=9)> Public Reserved9() As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_IDENTIFY_CONTROLLER_DATA
Public VID As UShort
Public SSVID As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> Public SN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=40)> Public MN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public FR() As Byte
Public RAB As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public IEEE() As Byte
Public CMIC As _CMIC_e__Struct
Public MDTS As Byte
Public CNTLID As UShort
Public VER As UInteger
Public RTD3R As UInteger
Public RTD3E As UInteger
Public OAES As _OAES_e__Struct
Public CTRATT As _CTRATT_e__Struct
Public RRLS As _RRLS_e__Struct
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=9)> Public Reserved0() As Byte
Public CNTRLTYPE As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public FGUID() As Byte
Public CRDT1 As UShort
Public CRDT2 As UShort
Public CRDT3 As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=106)> Public Reserved1() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=13)> Public ReservedForManagement() As Byte
Public NVMSR As Byte
Public VWCI As Byte
Public MEC As Byte
Public OACS As _OACS_e__Struct
Public ACL As Byte
Public AERL As Byte
Public FRMW As _FRMW_e__Struct
Public LPA As _LPA_e__Struct
Public ELPE As Byte
Public NPSS As Byte
Public AVSCC As _AVSCC_e__Struct
Public APSTA As _APSTA_e__Struct
Public WCTEMP As UShort
Public CCTEMP As UShort
Public MTFA As UShort
Public HMPRE As UInteger
Public HMMIN As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public TNVMCAP() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public UNVMCAP() As Byte
Public RPMBS As _RPMBS_e__Struct
Public EDSTT As UShort
Public DSTO As Byte
Public FWUG As Byte
Public KAS As UShort
Public HCTMA As _HCTMA_e__Struct
Public MNTMT As UShort
Public MXTMT As UShort
Public SANICAP As _SANICAP_e__Struct
Public HMMINDS As UInteger
Public HMMAXD As UShort
Public NSETIDMAX As UShort
Public ENDGIDMAX As UShort
Public ANATT As Byte
Public ANACAP As _ANACAP_e__Struct
Public ANAGRPMAX As UInteger
Public NANAGRPID As UInteger
Public PELS As UInteger
Public DomainId As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> Public Reserved2() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public MEGCAP() As Byte
Public TMPTHHA As Byte
Public Reserved3 As Byte
Public CQT As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=124)> Public Reserved4() As Byte
Public SQES As _SQES_e__Struct
Public CQES As _CQES_e__Struct
Public MAXCMD As UShort
Public NN As UInteger
Public ONCS As _ONCS_e__Struct
Public FUSES As _FUSES_e__Struct
Public FNA As _FNA_e__Struct
Public VWC As _VWC_e__Struct
Public AWUN As UShort
Public AWUPF As UShort
Public NVSCC As _NVSCC_e__Struct
Public NWPC As _NWPC_e__Struct
Public ACWU As UShort
Public CopyDescFormats As UShort
Public SGLS As _SGLS_e__Struct
Public MNAN As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public MAXDNA() As Byte
Public MAXCNA As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=204)> Public Reserved6() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public SUBNQN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=768)> Public Reserved7() As Byte
Public IOCCSZ As UInteger
Public IORCSZ As UInteger
Public ICDOFF As UShort
Public FCATT As _FCATT_e__Struct
Public MSDBD As Byte
Public OFCS As _OFCS_e__Struct
Public DCTYPE As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=241)> Public Reserved8() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public PDS() As NVME_POWER_STATE_DESC
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=1024)> Public VS() As Byte
End Structureimport ctypes
from ctypes import wintypes
class NVME_POWER_STATE_DESC(ctypes.Structure):
_fields_ = [
("MP", ctypes.c_ushort),
("Reserved0", ctypes.c_ubyte),
("_bitfield1", ctypes.c_ubyte),
("ENLAT", wintypes.DWORD),
("EXLAT", wintypes.DWORD),
("_bitfield2", ctypes.c_ubyte),
("_bitfield3", ctypes.c_ubyte),
("_bitfield4", ctypes.c_ubyte),
("_bitfield5", ctypes.c_ubyte),
("IDLP", ctypes.c_ushort),
("_bitfield6", ctypes.c_ubyte),
("Reserved7", ctypes.c_ubyte),
("ACTP", ctypes.c_ushort),
("_bitfield7", ctypes.c_ubyte),
("Reserved9", ctypes.c_ubyte * 9),
]
class NVME_IDENTIFY_CONTROLLER_DATA(ctypes.Structure):
_fields_ = [
("VID", ctypes.c_ushort),
("SSVID", ctypes.c_ushort),
("SN", ctypes.c_ubyte * 20),
("MN", ctypes.c_ubyte * 40),
("FR", ctypes.c_ubyte * 8),
("RAB", ctypes.c_ubyte),
("IEEE", ctypes.c_ubyte * 3),
("CMIC", _CMIC_e__Struct),
("MDTS", ctypes.c_ubyte),
("CNTLID", ctypes.c_ushort),
("VER", wintypes.DWORD),
("RTD3R", wintypes.DWORD),
("RTD3E", wintypes.DWORD),
("OAES", _OAES_e__Struct),
("CTRATT", _CTRATT_e__Struct),
("RRLS", _RRLS_e__Struct),
("Reserved0", ctypes.c_ubyte * 9),
("CNTRLTYPE", ctypes.c_ubyte),
("FGUID", ctypes.c_ubyte * 16),
("CRDT1", ctypes.c_ushort),
("CRDT2", ctypes.c_ushort),
("CRDT3", ctypes.c_ushort),
("Reserved1", ctypes.c_ubyte * 106),
("ReservedForManagement", ctypes.c_ubyte * 13),
("NVMSR", ctypes.c_ubyte),
("VWCI", ctypes.c_ubyte),
("MEC", ctypes.c_ubyte),
("OACS", _OACS_e__Struct),
("ACL", ctypes.c_ubyte),
("AERL", ctypes.c_ubyte),
("FRMW", _FRMW_e__Struct),
("LPA", _LPA_e__Struct),
("ELPE", ctypes.c_ubyte),
("NPSS", ctypes.c_ubyte),
("AVSCC", _AVSCC_e__Struct),
("APSTA", _APSTA_e__Struct),
("WCTEMP", ctypes.c_ushort),
("CCTEMP", ctypes.c_ushort),
("MTFA", ctypes.c_ushort),
("HMPRE", wintypes.DWORD),
("HMMIN", wintypes.DWORD),
("TNVMCAP", ctypes.c_ubyte * 16),
("UNVMCAP", ctypes.c_ubyte * 16),
("RPMBS", _RPMBS_e__Struct),
("EDSTT", ctypes.c_ushort),
("DSTO", ctypes.c_ubyte),
("FWUG", ctypes.c_ubyte),
("KAS", ctypes.c_ushort),
("HCTMA", _HCTMA_e__Struct),
("MNTMT", ctypes.c_ushort),
("MXTMT", ctypes.c_ushort),
("SANICAP", _SANICAP_e__Struct),
("HMMINDS", wintypes.DWORD),
("HMMAXD", ctypes.c_ushort),
("NSETIDMAX", ctypes.c_ushort),
("ENDGIDMAX", ctypes.c_ushort),
("ANATT", ctypes.c_ubyte),
("ANACAP", _ANACAP_e__Struct),
("ANAGRPMAX", wintypes.DWORD),
("NANAGRPID", wintypes.DWORD),
("PELS", wintypes.DWORD),
("DomainId", ctypes.c_ushort),
("Reserved2", ctypes.c_ubyte * 10),
("MEGCAP", ctypes.c_ubyte * 16),
("TMPTHHA", ctypes.c_ubyte),
("Reserved3", ctypes.c_ubyte),
("CQT", ctypes.c_ushort),
("Reserved4", ctypes.c_ubyte * 124),
("SQES", _SQES_e__Struct),
("CQES", _CQES_e__Struct),
("MAXCMD", ctypes.c_ushort),
("NN", wintypes.DWORD),
("ONCS", _ONCS_e__Struct),
("FUSES", _FUSES_e__Struct),
("FNA", _FNA_e__Struct),
("VWC", _VWC_e__Struct),
("AWUN", ctypes.c_ushort),
("AWUPF", ctypes.c_ushort),
("NVSCC", _NVSCC_e__Struct),
("NWPC", _NWPC_e__Struct),
("ACWU", ctypes.c_ushort),
("CopyDescFormats", ctypes.c_ushort),
("SGLS", _SGLS_e__Struct),
("MNAN", wintypes.DWORD),
("MAXDNA", ctypes.c_ubyte * 16),
("MAXCNA", wintypes.DWORD),
("Reserved6", ctypes.c_ubyte * 204),
("SUBNQN", ctypes.c_ubyte * 256),
("Reserved7", ctypes.c_ubyte * 768),
("IOCCSZ", wintypes.DWORD),
("IORCSZ", wintypes.DWORD),
("ICDOFF", ctypes.c_ushort),
("FCATT", _FCATT_e__Struct),
("MSDBD", ctypes.c_ubyte),
("OFCS", _OFCS_e__Struct),
("DCTYPE", ctypes.c_ubyte),
("Reserved8", ctypes.c_ubyte * 241),
("PDS", NVME_POWER_STATE_DESC * 32),
("VS", ctypes.c_ubyte * 1024),
]#[repr(C)]
pub struct NVME_POWER_STATE_DESC {
pub MP: u16,
pub Reserved0: u8,
pub _bitfield1: u8,
pub ENLAT: u32,
pub EXLAT: u32,
pub _bitfield2: u8,
pub _bitfield3: u8,
pub _bitfield4: u8,
pub _bitfield5: u8,
pub IDLP: u16,
pub _bitfield6: u8,
pub Reserved7: u8,
pub ACTP: u16,
pub _bitfield7: u8,
pub Reserved9: [u8; 9],
}
#[repr(C)]
pub struct NVME_IDENTIFY_CONTROLLER_DATA {
pub VID: u16,
pub SSVID: u16,
pub SN: [u8; 20],
pub MN: [u8; 40],
pub FR: [u8; 8],
pub RAB: u8,
pub IEEE: [u8; 3],
pub CMIC: _CMIC_e__Struct,
pub MDTS: u8,
pub CNTLID: u16,
pub VER: u32,
pub RTD3R: u32,
pub RTD3E: u32,
pub OAES: _OAES_e__Struct,
pub CTRATT: _CTRATT_e__Struct,
pub RRLS: _RRLS_e__Struct,
pub Reserved0: [u8; 9],
pub CNTRLTYPE: u8,
pub FGUID: [u8; 16],
pub CRDT1: u16,
pub CRDT2: u16,
pub CRDT3: u16,
pub Reserved1: [u8; 106],
pub ReservedForManagement: [u8; 13],
pub NVMSR: u8,
pub VWCI: u8,
pub MEC: u8,
pub OACS: _OACS_e__Struct,
pub ACL: u8,
pub AERL: u8,
pub FRMW: _FRMW_e__Struct,
pub LPA: _LPA_e__Struct,
pub ELPE: u8,
pub NPSS: u8,
pub AVSCC: _AVSCC_e__Struct,
pub APSTA: _APSTA_e__Struct,
pub WCTEMP: u16,
pub CCTEMP: u16,
pub MTFA: u16,
pub HMPRE: u32,
pub HMMIN: u32,
pub TNVMCAP: [u8; 16],
pub UNVMCAP: [u8; 16],
pub RPMBS: _RPMBS_e__Struct,
pub EDSTT: u16,
pub DSTO: u8,
pub FWUG: u8,
pub KAS: u16,
pub HCTMA: _HCTMA_e__Struct,
pub MNTMT: u16,
pub MXTMT: u16,
pub SANICAP: _SANICAP_e__Struct,
pub HMMINDS: u32,
pub HMMAXD: u16,
pub NSETIDMAX: u16,
pub ENDGIDMAX: u16,
pub ANATT: u8,
pub ANACAP: _ANACAP_e__Struct,
pub ANAGRPMAX: u32,
pub NANAGRPID: u32,
pub PELS: u32,
pub DomainId: u16,
pub Reserved2: [u8; 10],
pub MEGCAP: [u8; 16],
pub TMPTHHA: u8,
pub Reserved3: u8,
pub CQT: u16,
pub Reserved4: [u8; 124],
pub SQES: _SQES_e__Struct,
pub CQES: _CQES_e__Struct,
pub MAXCMD: u16,
pub NN: u32,
pub ONCS: _ONCS_e__Struct,
pub FUSES: _FUSES_e__Struct,
pub FNA: _FNA_e__Struct,
pub VWC: _VWC_e__Struct,
pub AWUN: u16,
pub AWUPF: u16,
pub NVSCC: _NVSCC_e__Struct,
pub NWPC: _NWPC_e__Struct,
pub ACWU: u16,
pub CopyDescFormats: u16,
pub SGLS: _SGLS_e__Struct,
pub MNAN: u32,
pub MAXDNA: [u8; 16],
pub MAXCNA: u32,
pub Reserved6: [u8; 204],
pub SUBNQN: [u8; 256],
pub Reserved7: [u8; 768],
pub IOCCSZ: u32,
pub IORCSZ: u32,
pub ICDOFF: u16,
pub FCATT: _FCATT_e__Struct,
pub MSDBD: u8,
pub OFCS: _OFCS_e__Struct,
pub DCTYPE: u8,
pub Reserved8: [u8; 241],
pub PDS: [NVME_POWER_STATE_DESC; 32],
pub VS: [u8; 1024],
}import "golang.org/x/sys/windows"
type NVME_POWER_STATE_DESC struct {
MP uint16
Reserved0 byte
_bitfield1 byte
ENLAT uint32
EXLAT uint32
_bitfield2 byte
_bitfield3 byte
_bitfield4 byte
_bitfield5 byte
IDLP uint16
_bitfield6 byte
Reserved7 byte
ACTP uint16
_bitfield7 byte
Reserved9 [9]byte
}
type NVME_IDENTIFY_CONTROLLER_DATA struct {
VID uint16
SSVID uint16
SN [20]byte
MN [40]byte
FR [8]byte
RAB byte
IEEE [3]byte
CMIC _CMIC_e__Struct
MDTS byte
CNTLID uint16
VER uint32
RTD3R uint32
RTD3E uint32
OAES _OAES_e__Struct
CTRATT _CTRATT_e__Struct
RRLS _RRLS_e__Struct
Reserved0 [9]byte
CNTRLTYPE byte
FGUID [16]byte
CRDT1 uint16
CRDT2 uint16
CRDT3 uint16
Reserved1 [106]byte
ReservedForManagement [13]byte
NVMSR byte
VWCI byte
MEC byte
OACS _OACS_e__Struct
ACL byte
AERL byte
FRMW _FRMW_e__Struct
LPA _LPA_e__Struct
ELPE byte
NPSS byte
AVSCC _AVSCC_e__Struct
APSTA _APSTA_e__Struct
WCTEMP uint16
CCTEMP uint16
MTFA uint16
HMPRE uint32
HMMIN uint32
TNVMCAP [16]byte
UNVMCAP [16]byte
RPMBS _RPMBS_e__Struct
EDSTT uint16
DSTO byte
FWUG byte
KAS uint16
HCTMA _HCTMA_e__Struct
MNTMT uint16
MXTMT uint16
SANICAP _SANICAP_e__Struct
HMMINDS uint32
HMMAXD uint16
NSETIDMAX uint16
ENDGIDMAX uint16
ANATT byte
ANACAP _ANACAP_e__Struct
ANAGRPMAX uint32
NANAGRPID uint32
PELS uint32
DomainId uint16
Reserved2 [10]byte
MEGCAP [16]byte
TMPTHHA byte
Reserved3 byte
CQT uint16
Reserved4 [124]byte
SQES _SQES_e__Struct
CQES _CQES_e__Struct
MAXCMD uint16
NN uint32
ONCS _ONCS_e__Struct
FUSES _FUSES_e__Struct
FNA _FNA_e__Struct
VWC _VWC_e__Struct
AWUN uint16
AWUPF uint16
NVSCC _NVSCC_e__Struct
NWPC _NWPC_e__Struct
ACWU uint16
CopyDescFormats uint16
SGLS _SGLS_e__Struct
MNAN uint32
MAXDNA [16]byte
MAXCNA uint32
Reserved6 [204]byte
SUBNQN [256]byte
Reserved7 [768]byte
IOCCSZ uint32
IORCSZ uint32
ICDOFF uint16
FCATT _FCATT_e__Struct
MSDBD byte
OFCS _OFCS_e__Struct
DCTYPE byte
Reserved8 [241]byte
PDS [32]NVME_POWER_STATE_DESC
VS [1024]byte
}type
NVME_POWER_STATE_DESC = record
MP: Word;
Reserved0: Byte;
_bitfield1: Byte;
ENLAT: DWORD;
EXLAT: DWORD;
_bitfield2: Byte;
_bitfield3: Byte;
_bitfield4: Byte;
_bitfield5: Byte;
IDLP: Word;
_bitfield6: Byte;
Reserved7: Byte;
ACTP: Word;
_bitfield7: Byte;
Reserved9: array[0..8] of Byte;
end;
NVME_IDENTIFY_CONTROLLER_DATA = record
VID: Word;
SSVID: Word;
SN: array[0..19] of Byte;
MN: array[0..39] of Byte;
FR: array[0..7] of Byte;
RAB: Byte;
IEEE: array[0..2] of Byte;
CMIC: _CMIC_e__Struct;
MDTS: Byte;
CNTLID: Word;
VER: DWORD;
RTD3R: DWORD;
RTD3E: DWORD;
OAES: _OAES_e__Struct;
CTRATT: _CTRATT_e__Struct;
RRLS: _RRLS_e__Struct;
Reserved0: array[0..8] of Byte;
CNTRLTYPE: Byte;
FGUID: array[0..15] of Byte;
CRDT1: Word;
CRDT2: Word;
CRDT3: Word;
Reserved1: array[0..105] of Byte;
ReservedForManagement: array[0..12] of Byte;
NVMSR: Byte;
VWCI: Byte;
MEC: Byte;
OACS: _OACS_e__Struct;
ACL: Byte;
AERL: Byte;
FRMW: _FRMW_e__Struct;
LPA: _LPA_e__Struct;
ELPE: Byte;
NPSS: Byte;
AVSCC: _AVSCC_e__Struct;
APSTA: _APSTA_e__Struct;
WCTEMP: Word;
CCTEMP: Word;
MTFA: Word;
HMPRE: DWORD;
HMMIN: DWORD;
TNVMCAP: array[0..15] of Byte;
UNVMCAP: array[0..15] of Byte;
RPMBS: _RPMBS_e__Struct;
EDSTT: Word;
DSTO: Byte;
FWUG: Byte;
KAS: Word;
HCTMA: _HCTMA_e__Struct;
MNTMT: Word;
MXTMT: Word;
SANICAP: _SANICAP_e__Struct;
HMMINDS: DWORD;
HMMAXD: Word;
NSETIDMAX: Word;
ENDGIDMAX: Word;
ANATT: Byte;
ANACAP: _ANACAP_e__Struct;
ANAGRPMAX: DWORD;
NANAGRPID: DWORD;
PELS: DWORD;
DomainId: Word;
Reserved2: array[0..9] of Byte;
MEGCAP: array[0..15] of Byte;
TMPTHHA: Byte;
Reserved3: Byte;
CQT: Word;
Reserved4: array[0..123] of Byte;
SQES: _SQES_e__Struct;
CQES: _CQES_e__Struct;
MAXCMD: Word;
NN: DWORD;
ONCS: _ONCS_e__Struct;
FUSES: _FUSES_e__Struct;
FNA: _FNA_e__Struct;
VWC: _VWC_e__Struct;
AWUN: Word;
AWUPF: Word;
NVSCC: _NVSCC_e__Struct;
NWPC: _NWPC_e__Struct;
ACWU: Word;
CopyDescFormats: Word;
SGLS: _SGLS_e__Struct;
MNAN: DWORD;
MAXDNA: array[0..15] of Byte;
MAXCNA: DWORD;
Reserved6: array[0..203] of Byte;
SUBNQN: array[0..255] of Byte;
Reserved7: array[0..767] of Byte;
IOCCSZ: DWORD;
IORCSZ: DWORD;
ICDOFF: Word;
FCATT: _FCATT_e__Struct;
MSDBD: Byte;
OFCS: _OFCS_e__Struct;
DCTYPE: Byte;
Reserved8: array[0..240] of Byte;
PDS: array[0..31] of NVME_POWER_STATE_DESC;
VS: array[0..1023] of Byte;
end;const NVME_POWER_STATE_DESC = extern struct {
MP: u16,
Reserved0: u8,
_bitfield1: u8,
ENLAT: u32,
EXLAT: u32,
_bitfield2: u8,
_bitfield3: u8,
_bitfield4: u8,
_bitfield5: u8,
IDLP: u16,
_bitfield6: u8,
Reserved7: u8,
ACTP: u16,
_bitfield7: u8,
Reserved9: [9]u8,
};
const NVME_IDENTIFY_CONTROLLER_DATA = extern struct {
VID: u16,
SSVID: u16,
SN: [20]u8,
MN: [40]u8,
FR: [8]u8,
RAB: u8,
IEEE: [3]u8,
CMIC: _CMIC_e__Struct,
MDTS: u8,
CNTLID: u16,
VER: u32,
RTD3R: u32,
RTD3E: u32,
OAES: _OAES_e__Struct,
CTRATT: _CTRATT_e__Struct,
RRLS: _RRLS_e__Struct,
Reserved0: [9]u8,
CNTRLTYPE: u8,
FGUID: [16]u8,
CRDT1: u16,
CRDT2: u16,
CRDT3: u16,
Reserved1: [106]u8,
ReservedForManagement: [13]u8,
NVMSR: u8,
VWCI: u8,
MEC: u8,
OACS: _OACS_e__Struct,
ACL: u8,
AERL: u8,
FRMW: _FRMW_e__Struct,
LPA: _LPA_e__Struct,
ELPE: u8,
NPSS: u8,
AVSCC: _AVSCC_e__Struct,
APSTA: _APSTA_e__Struct,
WCTEMP: u16,
CCTEMP: u16,
MTFA: u16,
HMPRE: u32,
HMMIN: u32,
TNVMCAP: [16]u8,
UNVMCAP: [16]u8,
RPMBS: _RPMBS_e__Struct,
EDSTT: u16,
DSTO: u8,
FWUG: u8,
KAS: u16,
HCTMA: _HCTMA_e__Struct,
MNTMT: u16,
MXTMT: u16,
SANICAP: _SANICAP_e__Struct,
HMMINDS: u32,
HMMAXD: u16,
NSETIDMAX: u16,
ENDGIDMAX: u16,
ANATT: u8,
ANACAP: _ANACAP_e__Struct,
ANAGRPMAX: u32,
NANAGRPID: u32,
PELS: u32,
DomainId: u16,
Reserved2: [10]u8,
MEGCAP: [16]u8,
TMPTHHA: u8,
Reserved3: u8,
CQT: u16,
Reserved4: [124]u8,
SQES: _SQES_e__Struct,
CQES: _CQES_e__Struct,
MAXCMD: u16,
NN: u32,
ONCS: _ONCS_e__Struct,
FUSES: _FUSES_e__Struct,
FNA: _FNA_e__Struct,
VWC: _VWC_e__Struct,
AWUN: u16,
AWUPF: u16,
NVSCC: _NVSCC_e__Struct,
NWPC: _NWPC_e__Struct,
ACWU: u16,
CopyDescFormats: u16,
SGLS: _SGLS_e__Struct,
MNAN: u32,
MAXDNA: [16]u8,
MAXCNA: u32,
Reserved6: [204]u8,
SUBNQN: [256]u8,
Reserved7: [768]u8,
IOCCSZ: u32,
IORCSZ: u32,
ICDOFF: u16,
FCATT: _FCATT_e__Struct,
MSDBD: u8,
OFCS: _OFCS_e__Struct,
DCTYPE: u8,
Reserved8: [241]u8,
PDS: [32]NVME_POWER_STATE_DESC,
VS: [1024]u8,
};type
NVME_POWER_STATE_DESC {.bycopy.} = object
MP: uint16
Reserved0: uint8
_bitfield1: uint8
ENLAT: uint32
EXLAT: uint32
_bitfield2: uint8
_bitfield3: uint8
_bitfield4: uint8
_bitfield5: uint8
IDLP: uint16
_bitfield6: uint8
Reserved7: uint8
ACTP: uint16
_bitfield7: uint8
Reserved9: array[9, uint8]
NVME_IDENTIFY_CONTROLLER_DATA {.bycopy.} = object
VID: uint16
SSVID: uint16
SN: array[20, uint8]
MN: array[40, uint8]
FR: array[8, uint8]
RAB: uint8
IEEE: array[3, uint8]
CMIC: _CMIC_e__Struct
MDTS: uint8
CNTLID: uint16
VER: uint32
RTD3R: uint32
RTD3E: uint32
OAES: _OAES_e__Struct
CTRATT: _CTRATT_e__Struct
RRLS: _RRLS_e__Struct
Reserved0: array[9, uint8]
CNTRLTYPE: uint8
FGUID: array[16, uint8]
CRDT1: uint16
CRDT2: uint16
CRDT3: uint16
Reserved1: array[106, uint8]
ReservedForManagement: array[13, uint8]
NVMSR: uint8
VWCI: uint8
MEC: uint8
OACS: _OACS_e__Struct
ACL: uint8
AERL: uint8
FRMW: _FRMW_e__Struct
LPA: _LPA_e__Struct
ELPE: uint8
NPSS: uint8
AVSCC: _AVSCC_e__Struct
APSTA: _APSTA_e__Struct
WCTEMP: uint16
CCTEMP: uint16
MTFA: uint16
HMPRE: uint32
HMMIN: uint32
TNVMCAP: array[16, uint8]
UNVMCAP: array[16, uint8]
RPMBS: _RPMBS_e__Struct
EDSTT: uint16
DSTO: uint8
FWUG: uint8
KAS: uint16
HCTMA: _HCTMA_e__Struct
MNTMT: uint16
MXTMT: uint16
SANICAP: _SANICAP_e__Struct
HMMINDS: uint32
HMMAXD: uint16
NSETIDMAX: uint16
ENDGIDMAX: uint16
ANATT: uint8
ANACAP: _ANACAP_e__Struct
ANAGRPMAX: uint32
NANAGRPID: uint32
PELS: uint32
DomainId: uint16
Reserved2: array[10, uint8]
MEGCAP: array[16, uint8]
TMPTHHA: uint8
Reserved3: uint8
CQT: uint16
Reserved4: array[124, uint8]
SQES: _SQES_e__Struct
CQES: _CQES_e__Struct
MAXCMD: uint16
NN: uint32
ONCS: _ONCS_e__Struct
FUSES: _FUSES_e__Struct
FNA: _FNA_e__Struct
VWC: _VWC_e__Struct
AWUN: uint16
AWUPF: uint16
NVSCC: _NVSCC_e__Struct
NWPC: _NWPC_e__Struct
ACWU: uint16
CopyDescFormats: uint16
SGLS: _SGLS_e__Struct
MNAN: uint32
MAXDNA: array[16, uint8]
MAXCNA: uint32
Reserved6: array[204, uint8]
SUBNQN: array[256, uint8]
Reserved7: array[768, uint8]
IOCCSZ: uint32
IORCSZ: uint32
ICDOFF: uint16
FCATT: _FCATT_e__Struct
MSDBD: uint8
OFCS: _OFCS_e__Struct
DCTYPE: uint8
Reserved8: array[241, uint8]
PDS: array[32, NVME_POWER_STATE_DESC]
VS: array[1024, uint8]struct NVME_POWER_STATE_DESC
{
ushort MP;
ubyte Reserved0;
ubyte _bitfield1;
uint ENLAT;
uint EXLAT;
ubyte _bitfield2;
ubyte _bitfield3;
ubyte _bitfield4;
ubyte _bitfield5;
ushort IDLP;
ubyte _bitfield6;
ubyte Reserved7;
ushort ACTP;
ubyte _bitfield7;
ubyte[9] Reserved9;
}
struct NVME_IDENTIFY_CONTROLLER_DATA
{
ushort VID;
ushort SSVID;
ubyte[20] SN;
ubyte[40] MN;
ubyte[8] FR;
ubyte RAB;
ubyte[3] IEEE;
_CMIC_e__Struct CMIC;
ubyte MDTS;
ushort CNTLID;
uint VER;
uint RTD3R;
uint RTD3E;
_OAES_e__Struct OAES;
_CTRATT_e__Struct CTRATT;
_RRLS_e__Struct RRLS;
ubyte[9] Reserved0;
ubyte CNTRLTYPE;
ubyte[16] FGUID;
ushort CRDT1;
ushort CRDT2;
ushort CRDT3;
ubyte[106] Reserved1;
ubyte[13] ReservedForManagement;
ubyte NVMSR;
ubyte VWCI;
ubyte MEC;
_OACS_e__Struct OACS;
ubyte ACL;
ubyte AERL;
_FRMW_e__Struct FRMW;
_LPA_e__Struct LPA;
ubyte ELPE;
ubyte NPSS;
_AVSCC_e__Struct AVSCC;
_APSTA_e__Struct APSTA;
ushort WCTEMP;
ushort CCTEMP;
ushort MTFA;
uint HMPRE;
uint HMMIN;
ubyte[16] TNVMCAP;
ubyte[16] UNVMCAP;
_RPMBS_e__Struct RPMBS;
ushort EDSTT;
ubyte DSTO;
ubyte FWUG;
ushort KAS;
_HCTMA_e__Struct HCTMA;
ushort MNTMT;
ushort MXTMT;
_SANICAP_e__Struct SANICAP;
uint HMMINDS;
ushort HMMAXD;
ushort NSETIDMAX;
ushort ENDGIDMAX;
ubyte ANATT;
_ANACAP_e__Struct ANACAP;
uint ANAGRPMAX;
uint NANAGRPID;
uint PELS;
ushort DomainId;
ubyte[10] Reserved2;
ubyte[16] MEGCAP;
ubyte TMPTHHA;
ubyte Reserved3;
ushort CQT;
ubyte[124] Reserved4;
_SQES_e__Struct SQES;
_CQES_e__Struct CQES;
ushort MAXCMD;
uint NN;
_ONCS_e__Struct ONCS;
_FUSES_e__Struct FUSES;
_FNA_e__Struct FNA;
_VWC_e__Struct VWC;
ushort AWUN;
ushort AWUPF;
_NVSCC_e__Struct NVSCC;
_NWPC_e__Struct NWPC;
ushort ACWU;
ushort CopyDescFormats;
_SGLS_e__Struct SGLS;
uint MNAN;
ubyte[16] MAXDNA;
uint MAXCNA;
ubyte[204] Reserved6;
ubyte[256] SUBNQN;
ubyte[768] Reserved7;
uint IOCCSZ;
uint IORCSZ;
ushort ICDOFF;
_FCATT_e__Struct FCATT;
ubyte MSDBD;
_OFCS_e__Struct OFCS;
ubyte DCTYPE;
ubyte[241] Reserved8;
NVME_POWER_STATE_DESC[32] PDS;
ubyte[1024] VS;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NVME_IDENTIFY_CONTROLLER_DATA サイズ: 4096 バイト(x64)
dim st, 1024 ; 4byte整数×1024(構造体サイズ 4096 / 4 切り上げ)
; VID : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; SSVID : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; SN : BYTE (+4, 20byte) varptr(st)+4 を基点に操作(20byte:入れ子/配列)
; MN : BYTE (+24, 40byte) varptr(st)+24 を基点に操作(40byte:入れ子/配列)
; FR : BYTE (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; RAB : BYTE (+72, 1byte) poke st,72,値 / 値 = peek(st,72)
; IEEE : BYTE (+73, 3byte) varptr(st)+73 を基点に操作(3byte:入れ子/配列)
; CMIC : _CMIC_e__Struct (+76, 1byte) varptr(st)+76 を基点に操作(1byte:入れ子/配列)
; MDTS : BYTE (+77, 1byte) poke st,77,値 / 値 = peek(st,77)
; CNTLID : WORD (+78, 2byte) wpoke st,78,値 / 値 = wpeek(st,78)
; VER : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; RTD3R : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; RTD3E : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; OAES : _OAES_e__Struct (+92, 4byte) varptr(st)+92 を基点に操作(4byte:入れ子/配列)
; CTRATT : _CTRATT_e__Struct (+96, 4byte) varptr(st)+96 を基点に操作(4byte:入れ子/配列)
; RRLS : _RRLS_e__Struct (+100, 2byte) varptr(st)+100 を基点に操作(2byte:入れ子/配列)
; Reserved0 : BYTE (+102, 9byte) varptr(st)+102 を基点に操作(9byte:入れ子/配列)
; CNTRLTYPE : BYTE (+111, 1byte) poke st,111,値 / 値 = peek(st,111)
; FGUID : BYTE (+112, 16byte) varptr(st)+112 を基点に操作(16byte:入れ子/配列)
; CRDT1 : WORD (+128, 2byte) wpoke st,128,値 / 値 = wpeek(st,128)
; CRDT2 : WORD (+130, 2byte) wpoke st,130,値 / 値 = wpeek(st,130)
; CRDT3 : WORD (+132, 2byte) wpoke st,132,値 / 値 = wpeek(st,132)
; Reserved1 : BYTE (+134, 106byte) varptr(st)+134 を基点に操作(106byte:入れ子/配列)
; ReservedForManagement : BYTE (+240, 13byte) varptr(st)+240 を基点に操作(13byte:入れ子/配列)
; NVMSR : BYTE (+253, 1byte) poke st,253,値 / 値 = peek(st,253)
; VWCI : BYTE (+254, 1byte) poke st,254,値 / 値 = peek(st,254)
; MEC : BYTE (+255, 1byte) poke st,255,値 / 値 = peek(st,255)
; OACS : _OACS_e__Struct (+256, 2byte) varptr(st)+256 を基点に操作(2byte:入れ子/配列)
; ACL : BYTE (+258, 1byte) poke st,258,値 / 値 = peek(st,258)
; AERL : BYTE (+259, 1byte) poke st,259,値 / 値 = peek(st,259)
; FRMW : _FRMW_e__Struct (+260, 1byte) varptr(st)+260 を基点に操作(1byte:入れ子/配列)
; LPA : _LPA_e__Struct (+261, 1byte) varptr(st)+261 を基点に操作(1byte:入れ子/配列)
; ELPE : BYTE (+262, 1byte) poke st,262,値 / 値 = peek(st,262)
; NPSS : BYTE (+263, 1byte) poke st,263,値 / 値 = peek(st,263)
; AVSCC : _AVSCC_e__Struct (+264, 1byte) varptr(st)+264 を基点に操作(1byte:入れ子/配列)
; APSTA : _APSTA_e__Struct (+265, 1byte) varptr(st)+265 を基点に操作(1byte:入れ子/配列)
; WCTEMP : WORD (+266, 2byte) wpoke st,266,値 / 値 = wpeek(st,266)
; CCTEMP : WORD (+268, 2byte) wpoke st,268,値 / 値 = wpeek(st,268)
; MTFA : WORD (+270, 2byte) wpoke st,270,値 / 値 = wpeek(st,270)
; HMPRE : DWORD (+272, 4byte) st.68 = 値 / 値 = st.68 (lpoke/lpeek も可)
; HMMIN : DWORD (+276, 4byte) st.69 = 値 / 値 = st.69 (lpoke/lpeek も可)
; TNVMCAP : BYTE (+280, 16byte) varptr(st)+280 を基点に操作(16byte:入れ子/配列)
; UNVMCAP : BYTE (+296, 16byte) varptr(st)+296 を基点に操作(16byte:入れ子/配列)
; RPMBS : _RPMBS_e__Struct (+312, 4byte) varptr(st)+312 を基点に操作(4byte:入れ子/配列)
; EDSTT : WORD (+316, 2byte) wpoke st,316,値 / 値 = wpeek(st,316)
; DSTO : BYTE (+318, 1byte) poke st,318,値 / 値 = peek(st,318)
; FWUG : BYTE (+319, 1byte) poke st,319,値 / 値 = peek(st,319)
; KAS : WORD (+320, 2byte) wpoke st,320,値 / 値 = wpeek(st,320)
; HCTMA : _HCTMA_e__Struct (+322, 2byte) varptr(st)+322 を基点に操作(2byte:入れ子/配列)
; MNTMT : WORD (+324, 2byte) wpoke st,324,値 / 値 = wpeek(st,324)
; MXTMT : WORD (+326, 2byte) wpoke st,326,値 / 値 = wpeek(st,326)
; SANICAP : _SANICAP_e__Struct (+328, 4byte) varptr(st)+328 を基点に操作(4byte:入れ子/配列)
; HMMINDS : DWORD (+332, 4byte) st.83 = 値 / 値 = st.83 (lpoke/lpeek も可)
; HMMAXD : WORD (+336, 2byte) wpoke st,336,値 / 値 = wpeek(st,336)
; NSETIDMAX : WORD (+338, 2byte) wpoke st,338,値 / 値 = wpeek(st,338)
; ENDGIDMAX : WORD (+340, 2byte) wpoke st,340,値 / 値 = wpeek(st,340)
; ANATT : BYTE (+342, 1byte) poke st,342,値 / 値 = peek(st,342)
; ANACAP : _ANACAP_e__Struct (+343, 1byte) varptr(st)+343 を基点に操作(1byte:入れ子/配列)
; ANAGRPMAX : DWORD (+344, 4byte) st.86 = 値 / 値 = st.86 (lpoke/lpeek も可)
; NANAGRPID : DWORD (+348, 4byte) st.87 = 値 / 値 = st.87 (lpoke/lpeek も可)
; PELS : DWORD (+352, 4byte) st.88 = 値 / 値 = st.88 (lpoke/lpeek も可)
; DomainId : WORD (+356, 2byte) wpoke st,356,値 / 値 = wpeek(st,356)
; Reserved2 : BYTE (+358, 10byte) varptr(st)+358 を基点に操作(10byte:入れ子/配列)
; MEGCAP : BYTE (+368, 16byte) varptr(st)+368 を基点に操作(16byte:入れ子/配列)
; TMPTHHA : BYTE (+384, 1byte) poke st,384,値 / 値 = peek(st,384)
; Reserved3 : BYTE (+385, 1byte) poke st,385,値 / 値 = peek(st,385)
; CQT : WORD (+386, 2byte) wpoke st,386,値 / 値 = wpeek(st,386)
; Reserved4 : BYTE (+388, 124byte) varptr(st)+388 を基点に操作(124byte:入れ子/配列)
; SQES : _SQES_e__Struct (+512, 1byte) varptr(st)+512 を基点に操作(1byte:入れ子/配列)
; CQES : _CQES_e__Struct (+513, 1byte) varptr(st)+513 を基点に操作(1byte:入れ子/配列)
; MAXCMD : WORD (+514, 2byte) wpoke st,514,値 / 値 = wpeek(st,514)
; NN : DWORD (+516, 4byte) st.129 = 値 / 値 = st.129 (lpoke/lpeek も可)
; ONCS : _ONCS_e__Struct (+520, 2byte) varptr(st)+520 を基点に操作(2byte:入れ子/配列)
; FUSES : _FUSES_e__Struct (+522, 2byte) varptr(st)+522 を基点に操作(2byte:入れ子/配列)
; FNA : _FNA_e__Struct (+524, 1byte) varptr(st)+524 を基点に操作(1byte:入れ子/配列)
; VWC : _VWC_e__Struct (+525, 1byte) varptr(st)+525 を基点に操作(1byte:入れ子/配列)
; AWUN : WORD (+526, 2byte) wpoke st,526,値 / 値 = wpeek(st,526)
; AWUPF : WORD (+528, 2byte) wpoke st,528,値 / 値 = wpeek(st,528)
; NVSCC : _NVSCC_e__Struct (+530, 1byte) varptr(st)+530 を基点に操作(1byte:入れ子/配列)
; NWPC : _NWPC_e__Struct (+531, 1byte) varptr(st)+531 を基点に操作(1byte:入れ子/配列)
; ACWU : WORD (+532, 2byte) wpoke st,532,値 / 値 = wpeek(st,532)
; CopyDescFormats : WORD (+534, 2byte) wpoke st,534,値 / 値 = wpeek(st,534)
; SGLS : _SGLS_e__Struct (+536, 4byte) varptr(st)+536 を基点に操作(4byte:入れ子/配列)
; MNAN : DWORD (+540, 4byte) st.135 = 値 / 値 = st.135 (lpoke/lpeek も可)
; MAXDNA : BYTE (+544, 16byte) varptr(st)+544 を基点に操作(16byte:入れ子/配列)
; MAXCNA : DWORD (+560, 4byte) st.140 = 値 / 値 = st.140 (lpoke/lpeek も可)
; Reserved6 : BYTE (+564, 204byte) varptr(st)+564 を基点に操作(204byte:入れ子/配列)
; SUBNQN : BYTE (+768, 256byte) varptr(st)+768 を基点に操作(256byte:入れ子/配列)
; Reserved7 : BYTE (+1024, 768byte) varptr(st)+1024 を基点に操作(768byte:入れ子/配列)
; IOCCSZ : DWORD (+1792, 4byte) st.448 = 値 / 値 = st.448 (lpoke/lpeek も可)
; IORCSZ : DWORD (+1796, 4byte) st.449 = 値 / 値 = st.449 (lpoke/lpeek も可)
; ICDOFF : WORD (+1800, 2byte) wpoke st,1800,値 / 値 = wpeek(st,1800)
; FCATT : _FCATT_e__Struct (+1802, 1byte) varptr(st)+1802 を基点に操作(1byte:入れ子/配列)
; MSDBD : BYTE (+1803, 1byte) poke st,1803,値 / 値 = peek(st,1803)
; OFCS : _OFCS_e__Struct (+1804, 2byte) varptr(st)+1804 を基点に操作(2byte:入れ子/配列)
; DCTYPE : BYTE (+1806, 1byte) poke st,1806,値 / 値 = peek(st,1806)
; Reserved8 : BYTE (+1807, 241byte) varptr(st)+1807 を基点に操作(241byte:入れ子/配列)
; PDS : NVME_POWER_STATE_DESC (+2048, 1024byte) varptr(st)+2048 を基点に操作(1024byte:入れ子/配列)
; VS : BYTE (+3072, 1024byte) varptr(st)+3072 を基点に操作(1024byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global NVME_POWER_STATE_DESC
#field short MP
#field byte Reserved0
#field byte _bitfield1
#field int ENLAT
#field int EXLAT
#field byte _bitfield2
#field byte _bitfield3
#field byte _bitfield4
#field byte _bitfield5
#field short IDLP
#field byte _bitfield6
#field byte Reserved7
#field short ACTP
#field byte _bitfield7
#field byte Reserved9 9
#endstruct
#defstruct global NVME_IDENTIFY_CONTROLLER_DATA
#field short VID
#field short SSVID
#field byte SN 20
#field byte MN 40
#field byte FR 8
#field byte RAB
#field byte IEEE 3
#field _CMIC_e__Struct CMIC
#field byte MDTS
#field short CNTLID
#field int VER
#field int RTD3R
#field int RTD3E
#field _OAES_e__Struct OAES
#field _CTRATT_e__Struct CTRATT
#field _RRLS_e__Struct RRLS
#field byte Reserved0 9
#field byte CNTRLTYPE
#field byte FGUID 16
#field short CRDT1
#field short CRDT2
#field short CRDT3
#field byte Reserved1 106
#field byte ReservedForManagement 13
#field byte NVMSR
#field byte VWCI
#field byte MEC
#field _OACS_e__Struct OACS
#field byte ACL
#field byte AERL
#field _FRMW_e__Struct FRMW
#field _LPA_e__Struct LPA
#field byte ELPE
#field byte NPSS
#field _AVSCC_e__Struct AVSCC
#field _APSTA_e__Struct APSTA
#field short WCTEMP
#field short CCTEMP
#field short MTFA
#field int HMPRE
#field int HMMIN
#field byte TNVMCAP 16
#field byte UNVMCAP 16
#field _RPMBS_e__Struct RPMBS
#field short EDSTT
#field byte DSTO
#field byte FWUG
#field short KAS
#field _HCTMA_e__Struct HCTMA
#field short MNTMT
#field short MXTMT
#field _SANICAP_e__Struct SANICAP
#field int HMMINDS
#field short HMMAXD
#field short NSETIDMAX
#field short ENDGIDMAX
#field byte ANATT
#field _ANACAP_e__Struct ANACAP
#field int ANAGRPMAX
#field int NANAGRPID
#field int PELS
#field short DomainId
#field byte Reserved2 10
#field byte MEGCAP 16
#field byte TMPTHHA
#field byte Reserved3
#field short CQT
#field byte Reserved4 124
#field _SQES_e__Struct SQES
#field _CQES_e__Struct CQES
#field short MAXCMD
#field int NN
#field _ONCS_e__Struct ONCS
#field _FUSES_e__Struct FUSES
#field _FNA_e__Struct FNA
#field _VWC_e__Struct VWC
#field short AWUN
#field short AWUPF
#field _NVSCC_e__Struct NVSCC
#field _NWPC_e__Struct NWPC
#field short ACWU
#field short CopyDescFormats
#field _SGLS_e__Struct SGLS
#field int MNAN
#field byte MAXDNA 16
#field int MAXCNA
#field byte Reserved6 204
#field byte SUBNQN 256
#field byte Reserved7 768
#field int IOCCSZ
#field int IORCSZ
#field short ICDOFF
#field _FCATT_e__Struct FCATT
#field byte MSDBD
#field _OFCS_e__Struct OFCS
#field byte DCTYPE
#field byte Reserved8 241
#field NVME_POWER_STATE_DESC PDS 32
#field byte VS 1024
#endstruct
stdim st, NVME_IDENTIFY_CONTROLLER_DATA ; NSTRUCT 変数を確保
st->VID = 100
mes "VID=" + st->VID