Win32 API 日本語リファレンス
ホームStorage.Nvme › NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG

NVME_OCP_DEVICE_TCG_CONFIGURATION_LOG

構造体
サイズx64: 519 バイト / x86: 515 バイトパッキング1

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
State_State_e__Union8/4+0+0TCGセキュリティ機能の現在状態を示す共用体。
Reserved0BYTE3+8+4予約領域。将来拡張用で0とする。
LSPActivationCountBYTE1+11+7LSP(Locking Security Provider)のアクティベーション回数。
TPRevertCountBYTE1+12+8TPer(信頼ストレージ)のRevert実行回数。
LSPRevertCountBYTE1+13+9LSPのRevert実行回数。
LOCountBYTE1+14+10ロッキングオブジェクトの数。
SUMLOCountBYTE1+15+11Single User Modeのロッキングオブジェクト数。
RPLOCountBYTE1+16+12読み取り保護ロッキングオブジェクト数。
NPLOCountBYTE1+17+13保護なしロッキングオブジェクト数。
RLLOCountBYTE1+18+14読み取りロック済みロッキングオブジェクト数。
WLLOCountBYTE1+19+15書き込みロック済みロッキングオブジェクト数。
RULOCountBYTE1+20+16読み取りアンロック済みロッキングオブジェクト数。
WULOCountBYTE1+21+17書き込みアンロック済みロッキングオブジェクト数。
Reserved1BYTE1+22+18予約領域。将来拡張用で0とする。
SIDAuthTryCountDWORD4+23+19SID認証の試行回数。
SIDAuthTryLimitDWORD4+27+23SID認証の試行回数上限。
ResetCountDWORD4+31+27プログラムリセットの発生回数。
ResetLockCountDWORD4+35+31リセットロックの発生回数。
Reserved2BYTE462+39+35予約領域。将来拡張用で0とする。
LogPageVersionNumberWORD2+501+497このログページの版数。
LogPageGUIDGUID16+503+499ログページを識別する16バイトGUID。

共用体: _State_e__Union x64 8B / x86 4B

フィールドサイズx64x86
Anonymous_Anonymous_e__Struct8/4+0+0
AsUcharBYTE1+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 Structure
import 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: GUID
align(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 非対応)。必要に応じ手動でアクセス。