ホーム › Storage.Nvme › NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG
NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| State | _State_e__Union | 8/4 | +0 | +0 | TCGセキュリティ機能の現在状態を示す共用体。 |
| Reserved0 | BYTE | 3 | +8 | +4 | 予約領域。将来拡張用で0とする。 |
| LSPActivationCount | BYTE | 1 | +11 | +7 | LSP(Locking Security Provider)のアクティベーション回数。 |
| TPRevertCount | BYTE | 1 | +12 | +8 | TPer(信頼ストレージ)のRevert実行回数。 |
| LSPRevertCount | BYTE | 1 | +13 | +9 | LSPのRevert実行回数。 |
| LOCount | BYTE | 1 | +14 | +10 | ロッキングオブジェクトの数。 |
| SUMLOCount | BYTE | 1 | +15 | +11 | Single User Modeのロッキングオブジェクト数。 |
| RPLOCount | BYTE | 1 | +16 | +12 | 読み取り保護ロッキングオブジェクト数。 |
| NPLOCount | BYTE | 1 | +17 | +13 | 保護なしロッキングオブジェクト数。 |
| RLLOCount | BYTE | 1 | +18 | +14 | 読み取りロック済みロッキングオブジェクト数。 |
| WLLOCount | BYTE | 1 | +19 | +15 | 書き込みロック済みロッキングオブジェクト数。 |
| RULOCount | BYTE | 1 | +20 | +16 | 読み取りアンロック済みロッキングオブジェクト数。 |
| WULOCount | BYTE | 1 | +21 | +17 | 書き込みアンロック済みロッキングオブジェクト数。 |
| Reserved1 | BYTE | 1 | +22 | +18 | 予約領域。将来拡張用で0とする。 |
| SIDAuthTryCount | DWORD | 4 | +23 | +19 | SID認証の試行回数。 |
| SIDAuthTryLimit | DWORD | 4 | +27 | +23 | SID認証の試行回数上限。 |
| ResetCount | DWORD | 4 | +31 | +27 | プログラムリセットの発生回数。 |
| ResetLockCount | DWORD | 4 | +35 | +31 | リセットロックの発生回数。 |
| Reserved2 | BYTE | 462 | +39 | +35 | 予約領域。将来拡張用で0とする。 |
| LogPageVersionNumber | WORD | 2 | +501 | +497 | このログページの版数。 |
| LogPageGUID | GUID | 16 | +503 | +499 | ログページを識別する16バイトGUID。 |
共用体: _State_e__Union x64 8B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 |
|---|---|---|---|---|
| Anonymous | _Anonymous_e__Struct | 8/4 | +0 | +0 |
| AsUchar | BYTE | 1 | +0 | +0 |
各言語での定義
#include <windows.h>
// NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG (x64 519 / x86 515 バイト)
#pragma pack(push, 1)
typedef struct NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG {
_State_e__Union State;
BYTE Reserved0[3];
BYTE LSPActivationCount;
BYTE TPRevertCount;
BYTE LSPRevertCount;
BYTE LOCount;
BYTE SUMLOCount;
BYTE RPLOCount;
BYTE NPLOCount;
BYTE RLLOCount;
BYTE WLLOCount;
BYTE RULOCount;
BYTE WULOCount;
BYTE Reserved1;
DWORD SIDAuthTryCount;
DWORD SIDAuthTryLimit;
DWORD ResetCount;
DWORD ResetLockCount;
BYTE Reserved2[462];
WORD LogPageVersionNumber;
GUID LogPageGUID;
} NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG
{
public _State_e__Union State;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] Reserved0;
public byte LSPActivationCount;
public byte TPRevertCount;
public byte LSPRevertCount;
public byte LOCount;
public byte SUMLOCount;
public byte RPLOCount;
public byte NPLOCount;
public byte RLLOCount;
public byte WLLOCount;
public byte RULOCount;
public byte WULOCount;
public byte Reserved1;
public uint SIDAuthTryCount;
public uint SIDAuthTryLimit;
public uint ResetCount;
public uint ResetLockCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 462)] public byte[] Reserved2;
public ushort LogPageVersionNumber;
public Guid LogPageGUID;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG
Public State As _State_e__Union
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public Reserved0() As Byte
Public LSPActivationCount As Byte
Public TPRevertCount As Byte
Public LSPRevertCount As Byte
Public LOCount As Byte
Public SUMLOCount As Byte
Public RPLOCount As Byte
Public NPLOCount As Byte
Public RLLOCount As Byte
Public WLLOCount As Byte
Public RULOCount As Byte
Public WULOCount As Byte
Public Reserved1 As Byte
Public SIDAuthTryCount As UInteger
Public SIDAuthTryLimit As UInteger
Public ResetCount As UInteger
Public ResetLockCount As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=462)> Public Reserved2() As Byte
Public LogPageVersionNumber As UShort
Public LogPageGUID As Guid
End Structureimport ctypes
from ctypes import wintypes
class NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG(ctypes.Structure):
_pack_ = 1
_fields_ = [
("State", _State_e__Union),
("Reserved0", ctypes.c_ubyte * 3),
("LSPActivationCount", ctypes.c_ubyte),
("TPRevertCount", ctypes.c_ubyte),
("LSPRevertCount", ctypes.c_ubyte),
("LOCount", ctypes.c_ubyte),
("SUMLOCount", ctypes.c_ubyte),
("RPLOCount", ctypes.c_ubyte),
("NPLOCount", ctypes.c_ubyte),
("RLLOCount", ctypes.c_ubyte),
("WLLOCount", ctypes.c_ubyte),
("RULOCount", ctypes.c_ubyte),
("WULOCount", ctypes.c_ubyte),
("Reserved1", ctypes.c_ubyte),
("SIDAuthTryCount", wintypes.DWORD),
("SIDAuthTryLimit", wintypes.DWORD),
("ResetCount", wintypes.DWORD),
("ResetLockCount", wintypes.DWORD),
("Reserved2", ctypes.c_ubyte * 462),
("LogPageVersionNumber", ctypes.c_ushort),
("LogPageGUID", GUID),
]#[repr(C, packed(1))]
pub struct NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG {
pub State: _State_e__Union,
pub Reserved0: [u8; 3],
pub LSPActivationCount: u8,
pub TPRevertCount: u8,
pub LSPRevertCount: u8,
pub LOCount: u8,
pub SUMLOCount: u8,
pub RPLOCount: u8,
pub NPLOCount: u8,
pub RLLOCount: u8,
pub WLLOCount: u8,
pub RULOCount: u8,
pub WULOCount: u8,
pub Reserved1: u8,
pub SIDAuthTryCount: u32,
pub SIDAuthTryLimit: u32,
pub ResetCount: u32,
pub ResetLockCount: u32,
pub Reserved2: [u8; 462],
pub LogPageVersionNumber: u16,
pub LogPageGUID: GUID,
}import "golang.org/x/sys/windows"
type NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG struct {
State _State_e__Union
Reserved0 [3]byte
LSPActivationCount byte
TPRevertCount byte
LSPRevertCount byte
LOCount byte
SUMLOCount byte
RPLOCount byte
NPLOCount byte
RLLOCount byte
WLLOCount byte
RULOCount byte
WULOCount byte
Reserved1 byte
SIDAuthTryCount uint32
SIDAuthTryLimit uint32
ResetCount uint32
ResetLockCount uint32
Reserved2 [462]byte
LogPageVersionNumber uint16
LogPageGUID windows.GUID
}type
NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG = packed record
State: _State_e__Union;
Reserved0: array[0..2] of Byte;
LSPActivationCount: Byte;
TPRevertCount: Byte;
LSPRevertCount: Byte;
LOCount: Byte;
SUMLOCount: Byte;
RPLOCount: Byte;
NPLOCount: Byte;
RLLOCount: Byte;
WLLOCount: Byte;
RULOCount: Byte;
WULOCount: Byte;
Reserved1: Byte;
SIDAuthTryCount: DWORD;
SIDAuthTryLimit: DWORD;
ResetCount: DWORD;
ResetLockCount: DWORD;
Reserved2: array[0..461] of Byte;
LogPageVersionNumber: Word;
LogPageGUID: TGUID;
end;const NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG = extern struct {
State: _State_e__Union,
Reserved0: [3]u8,
LSPActivationCount: u8,
TPRevertCount: u8,
LSPRevertCount: u8,
LOCount: u8,
SUMLOCount: u8,
RPLOCount: u8,
NPLOCount: u8,
RLLOCount: u8,
WLLOCount: u8,
RULOCount: u8,
WULOCount: u8,
Reserved1: u8,
SIDAuthTryCount: u32,
SIDAuthTryLimit: u32,
ResetCount: u32,
ResetLockCount: u32,
Reserved2: [462]u8,
LogPageVersionNumber: u16,
LogPageGUID: GUID,
};type
NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG {.packed.} = object
State: _State_e__Union
Reserved0: array[3, uint8]
LSPActivationCount: uint8
TPRevertCount: uint8
LSPRevertCount: uint8
LOCount: uint8
SUMLOCount: uint8
RPLOCount: uint8
NPLOCount: uint8
RLLOCount: uint8
WLLOCount: uint8
RULOCount: uint8
WULOCount: uint8
Reserved1: uint8
SIDAuthTryCount: uint32
SIDAuthTryLimit: uint32
ResetCount: uint32
ResetLockCount: uint32
Reserved2: array[462, uint8]
LogPageVersionNumber: uint16
LogPageGUID: GUIDalign(1)
struct NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG
{
_State_e__Union State;
ubyte[3] Reserved0;
ubyte LSPActivationCount;
ubyte TPRevertCount;
ubyte LSPRevertCount;
ubyte LOCount;
ubyte SUMLOCount;
ubyte RPLOCount;
ubyte NPLOCount;
ubyte RLLOCount;
ubyte WLLOCount;
ubyte RULOCount;
ubyte WULOCount;
ubyte Reserved1;
uint SIDAuthTryCount;
uint SIDAuthTryLimit;
uint ResetCount;
uint ResetLockCount;
ubyte[462] Reserved2;
ushort LogPageVersionNumber;
GUID LogPageGUID;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG サイズ: 515 バイト(x86)
dim st, 129 ; 4byte整数×129(構造体サイズ 515 / 4 切り上げ)
; State : _State_e__Union (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; Reserved0 : BYTE (+4, 3byte) varptr(st)+4 を基点に操作(3byte:入れ子/配列)
; LSPActivationCount : BYTE (+7, 1byte) poke st,7,値 / 値 = peek(st,7)
; TPRevertCount : BYTE (+8, 1byte) poke st,8,値 / 値 = peek(st,8)
; LSPRevertCount : BYTE (+9, 1byte) poke st,9,値 / 値 = peek(st,9)
; LOCount : BYTE (+10, 1byte) poke st,10,値 / 値 = peek(st,10)
; SUMLOCount : BYTE (+11, 1byte) poke st,11,値 / 値 = peek(st,11)
; RPLOCount : BYTE (+12, 1byte) poke st,12,値 / 値 = peek(st,12)
; NPLOCount : BYTE (+13, 1byte) poke st,13,値 / 値 = peek(st,13)
; RLLOCount : BYTE (+14, 1byte) poke st,14,値 / 値 = peek(st,14)
; WLLOCount : BYTE (+15, 1byte) poke st,15,値 / 値 = peek(st,15)
; RULOCount : BYTE (+16, 1byte) poke st,16,値 / 値 = peek(st,16)
; WULOCount : BYTE (+17, 1byte) poke st,17,値 / 値 = peek(st,17)
; Reserved1 : BYTE (+18, 1byte) poke st,18,値 / 値 = peek(st,18)
; SIDAuthTryCount : DWORD (+19, 4byte) lpoke st,19,値 / 値 = lpeek(st,19)
; SIDAuthTryLimit : DWORD (+23, 4byte) lpoke st,23,値 / 値 = lpeek(st,23)
; ResetCount : DWORD (+27, 4byte) lpoke st,27,値 / 値 = lpeek(st,27)
; ResetLockCount : DWORD (+31, 4byte) lpoke st,31,値 / 値 = lpeek(st,31)
; Reserved2 : BYTE (+35, 462byte) varptr(st)+35 を基点に操作(462byte:入れ子/配列)
; LogPageVersionNumber : WORD (+497, 2byte) wpoke st,497,値 / 値 = wpeek(st,497)
; LogPageGUID : GUID (+499, 16byte) varptr(st)+499 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG サイズ: 519 バイト(x64)
dim st, 130 ; 4byte整数×130(構造体サイズ 519 / 4 切り上げ)
; State : _State_e__Union (+0, 8byte) varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; Reserved0 : BYTE (+8, 3byte) varptr(st)+8 を基点に操作(3byte:入れ子/配列)
; LSPActivationCount : BYTE (+11, 1byte) poke st,11,値 / 値 = peek(st,11)
; TPRevertCount : BYTE (+12, 1byte) poke st,12,値 / 値 = peek(st,12)
; LSPRevertCount : BYTE (+13, 1byte) poke st,13,値 / 値 = peek(st,13)
; LOCount : BYTE (+14, 1byte) poke st,14,値 / 値 = peek(st,14)
; SUMLOCount : BYTE (+15, 1byte) poke st,15,値 / 値 = peek(st,15)
; RPLOCount : BYTE (+16, 1byte) poke st,16,値 / 値 = peek(st,16)
; NPLOCount : BYTE (+17, 1byte) poke st,17,値 / 値 = peek(st,17)
; RLLOCount : BYTE (+18, 1byte) poke st,18,値 / 値 = peek(st,18)
; WLLOCount : BYTE (+19, 1byte) poke st,19,値 / 値 = peek(st,19)
; RULOCount : BYTE (+20, 1byte) poke st,20,値 / 値 = peek(st,20)
; WULOCount : BYTE (+21, 1byte) poke st,21,値 / 値 = peek(st,21)
; Reserved1 : BYTE (+22, 1byte) poke st,22,値 / 値 = peek(st,22)
; SIDAuthTryCount : DWORD (+23, 4byte) lpoke st,23,値 / 値 = lpeek(st,23)
; SIDAuthTryLimit : DWORD (+27, 4byte) lpoke st,27,値 / 値 = lpeek(st,27)
; ResetCount : DWORD (+31, 4byte) lpoke st,31,値 / 値 = lpeek(st,31)
; ResetLockCount : DWORD (+35, 4byte) lpoke st,35,値 / 値 = lpeek(st,35)
; Reserved2 : BYTE (+39, 462byte) varptr(st)+39 を基点に操作(462byte:入れ子/配列)
; LogPageVersionNumber : WORD (+501, 2byte) wpoke st,501,値 / 値 = wpeek(st,501)
; LogPageGUID : GUID (+503, 16byte) varptr(st)+503 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG, pack=1
#field byte State 8
#field byte Reserved0 3
#field byte LSPActivationCount
#field byte TPRevertCount
#field byte LSPRevertCount
#field byte LOCount
#field byte SUMLOCount
#field byte RPLOCount
#field byte NPLOCount
#field byte RLLOCount
#field byte WLLOCount
#field byte RULOCount
#field byte WULOCount
#field byte Reserved1
#field int SIDAuthTryCount
#field int SIDAuthTryLimit
#field int ResetCount
#field int ResetLockCount
#field byte Reserved2 462
#field short LogPageVersionNumber
#field GUID LogPageGUID
#endstruct
stdim st, NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG ; NSTRUCT 変数を確保
st->LSPActivationCount = 100
mes "LSPActivationCount=" + st->LSPActivationCount
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。