Win32 API 日本語リファレンス
ホームSystem.Ioctl › TXFS_QUERY_RM_INFORMATION

TXFS_QUERY_RM_INFORMATION

構造体
サイズx64: 176 バイト / x86: 176 バイト

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

フィールド

フィールドサイズx64x86説明
BytesRequiredDWORD4+0+0TmLogPath等の可変長データ格納に必要なバイト数。
TailLsnULONGLONG8+8+8ログのテール(最も古い有効)ログシーケンス番号。
CurrentLsnULONGLONG8+16+16現在のログシーケンス番号。
ArchiveTailLsnULONGLONG8+24+24アーカイブのテールログシーケンス番号。
LogContainerSizeULONGLONG8+32+32各ログコンテナのサイズ(バイト)。
HighestVirtualClockLONGLONG8+40+40リソースマネージャの最高仮想クロック値。
LogContainerCountDWORD4+48+48現在のログコンテナ数。
LogContainerCountMaxDWORD4+52+52ログコンテナ数の上限。
LogContainerCountMinDWORD4+56+56ログコンテナ数の下限。
LogGrowthIncrementDWORD4+60+60ログ拡張時の増分(コンテナ数)。
LogAutoShrinkPercentageDWORD4+64+64ログ自動縮小をトリガする空き率のしきい値(%)。
FlagsTXFS_RMF_LAGS4+68+68リソースマネージャの状態を示すフラグ。
LoggingModeWORD2+72+72ロギングモード(簡易/完全)を示す値。
ReservedWORD2+74+74予約領域。0でなければならない。
RmStateDWORD4+76+76リソースマネージャの現在の状態を示す値。
LogCapacityULONGLONG8+80+80ログの総容量(バイト)。
LogFreeULONGLONG8+88+88ログの空き容量(バイト)。
TopsSizeULONGLONG8+96+96TOPS(Txfメタデータ)ストリームの総サイズ(バイト)。
TopsUsedULONGLONG8+104+104TOPSストリームの使用済みサイズ(バイト)。
TransactionCountULONGLONG8+112+112アクティブなトランザクション数。
OnePCCountULONGLONG8+120+1201フェーズコミット(1PC)が行われた回数。
TwoPCCountULONGLONG8+128+1282フェーズコミット(2PC)が行われた回数。
NumberLogFileFullULONGLONG8+136+136ログファイルが満杯になった回数。
OldestTransactionAgeULONGLONG8+144+144最も古いトランザクションの経過時間。
RMNameGUID16+152+152リソースマネージャを識別するGUID。
TmLogPathOffsetDWORD4+168+168構造体先頭からTmLogPath文字列までのオフセット(バイト)。

各言語での定義

#include <windows.h>

// TXFS_QUERY_RM_INFORMATION  (x64 176 / x86 176 バイト)
typedef struct TXFS_QUERY_RM_INFORMATION {
    DWORD BytesRequired;
    ULONGLONG TailLsn;
    ULONGLONG CurrentLsn;
    ULONGLONG ArchiveTailLsn;
    ULONGLONG LogContainerSize;
    LONGLONG HighestVirtualClock;
    DWORD LogContainerCount;
    DWORD LogContainerCountMax;
    DWORD LogContainerCountMin;
    DWORD LogGrowthIncrement;
    DWORD LogAutoShrinkPercentage;
    TXFS_RMF_LAGS Flags;
    WORD LoggingMode;
    WORD Reserved;
    DWORD RmState;
    ULONGLONG LogCapacity;
    ULONGLONG LogFree;
    ULONGLONG TopsSize;
    ULONGLONG TopsUsed;
    ULONGLONG TransactionCount;
    ULONGLONG OnePCCount;
    ULONGLONG TwoPCCount;
    ULONGLONG NumberLogFileFull;
    ULONGLONG OldestTransactionAge;
    GUID RMName;
    DWORD TmLogPathOffset;
} TXFS_QUERY_RM_INFORMATION;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TXFS_QUERY_RM_INFORMATION
{
    public uint BytesRequired;
    public ulong TailLsn;
    public ulong CurrentLsn;
    public ulong ArchiveTailLsn;
    public ulong LogContainerSize;
    public long HighestVirtualClock;
    public uint LogContainerCount;
    public uint LogContainerCountMax;
    public uint LogContainerCountMin;
    public uint LogGrowthIncrement;
    public uint LogAutoShrinkPercentage;
    public uint Flags;
    public ushort LoggingMode;
    public ushort Reserved;
    public uint RmState;
    public ulong LogCapacity;
    public ulong LogFree;
    public ulong TopsSize;
    public ulong TopsUsed;
    public ulong TransactionCount;
    public ulong OnePCCount;
    public ulong TwoPCCount;
    public ulong NumberLogFileFull;
    public ulong OldestTransactionAge;
    public Guid RMName;
    public uint TmLogPathOffset;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure TXFS_QUERY_RM_INFORMATION
    Public BytesRequired As UInteger
    Public TailLsn As ULong
    Public CurrentLsn As ULong
    Public ArchiveTailLsn As ULong
    Public LogContainerSize As ULong
    Public HighestVirtualClock As Long
    Public LogContainerCount As UInteger
    Public LogContainerCountMax As UInteger
    Public LogContainerCountMin As UInteger
    Public LogGrowthIncrement As UInteger
    Public LogAutoShrinkPercentage As UInteger
    Public Flags As UInteger
    Public LoggingMode As UShort
    Public Reserved As UShort
    Public RmState As UInteger
    Public LogCapacity As ULong
    Public LogFree As ULong
    Public TopsSize As ULong
    Public TopsUsed As ULong
    Public TransactionCount As ULong
    Public OnePCCount As ULong
    Public TwoPCCount As ULong
    Public NumberLogFileFull As ULong
    Public OldestTransactionAge As ULong
    Public RMName As Guid
    Public TmLogPathOffset As UInteger
End Structure
import ctypes
from ctypes import wintypes

class TXFS_QUERY_RM_INFORMATION(ctypes.Structure):
    _fields_ = [
        ("BytesRequired", wintypes.DWORD),
        ("TailLsn", ctypes.c_ulonglong),
        ("CurrentLsn", ctypes.c_ulonglong),
        ("ArchiveTailLsn", ctypes.c_ulonglong),
        ("LogContainerSize", ctypes.c_ulonglong),
        ("HighestVirtualClock", ctypes.c_longlong),
        ("LogContainerCount", wintypes.DWORD),
        ("LogContainerCountMax", wintypes.DWORD),
        ("LogContainerCountMin", wintypes.DWORD),
        ("LogGrowthIncrement", wintypes.DWORD),
        ("LogAutoShrinkPercentage", wintypes.DWORD),
        ("Flags", wintypes.DWORD),
        ("LoggingMode", ctypes.c_ushort),
        ("Reserved", ctypes.c_ushort),
        ("RmState", wintypes.DWORD),
        ("LogCapacity", ctypes.c_ulonglong),
        ("LogFree", ctypes.c_ulonglong),
        ("TopsSize", ctypes.c_ulonglong),
        ("TopsUsed", ctypes.c_ulonglong),
        ("TransactionCount", ctypes.c_ulonglong),
        ("OnePCCount", ctypes.c_ulonglong),
        ("TwoPCCount", ctypes.c_ulonglong),
        ("NumberLogFileFull", ctypes.c_ulonglong),
        ("OldestTransactionAge", ctypes.c_ulonglong),
        ("RMName", GUID),
        ("TmLogPathOffset", wintypes.DWORD),
    ]
#[repr(C)]
pub struct TXFS_QUERY_RM_INFORMATION {
    pub BytesRequired: u32,
    pub TailLsn: u64,
    pub CurrentLsn: u64,
    pub ArchiveTailLsn: u64,
    pub LogContainerSize: u64,
    pub HighestVirtualClock: i64,
    pub LogContainerCount: u32,
    pub LogContainerCountMax: u32,
    pub LogContainerCountMin: u32,
    pub LogGrowthIncrement: u32,
    pub LogAutoShrinkPercentage: u32,
    pub Flags: u32,
    pub LoggingMode: u16,
    pub Reserved: u16,
    pub RmState: u32,
    pub LogCapacity: u64,
    pub LogFree: u64,
    pub TopsSize: u64,
    pub TopsUsed: u64,
    pub TransactionCount: u64,
    pub OnePCCount: u64,
    pub TwoPCCount: u64,
    pub NumberLogFileFull: u64,
    pub OldestTransactionAge: u64,
    pub RMName: GUID,
    pub TmLogPathOffset: u32,
}
import "golang.org/x/sys/windows"

type TXFS_QUERY_RM_INFORMATION struct {
	BytesRequired uint32
	TailLsn uint64
	CurrentLsn uint64
	ArchiveTailLsn uint64
	LogContainerSize uint64
	HighestVirtualClock int64
	LogContainerCount uint32
	LogContainerCountMax uint32
	LogContainerCountMin uint32
	LogGrowthIncrement uint32
	LogAutoShrinkPercentage uint32
	Flags uint32
	LoggingMode uint16
	Reserved uint16
	RmState uint32
	LogCapacity uint64
	LogFree uint64
	TopsSize uint64
	TopsUsed uint64
	TransactionCount uint64
	OnePCCount uint64
	TwoPCCount uint64
	NumberLogFileFull uint64
	OldestTransactionAge uint64
	RMName windows.GUID
	TmLogPathOffset uint32
}
type
  TXFS_QUERY_RM_INFORMATION = record
    BytesRequired: DWORD;
    TailLsn: UInt64;
    CurrentLsn: UInt64;
    ArchiveTailLsn: UInt64;
    LogContainerSize: UInt64;
    HighestVirtualClock: Int64;
    LogContainerCount: DWORD;
    LogContainerCountMax: DWORD;
    LogContainerCountMin: DWORD;
    LogGrowthIncrement: DWORD;
    LogAutoShrinkPercentage: DWORD;
    Flags: DWORD;
    LoggingMode: Word;
    Reserved: Word;
    RmState: DWORD;
    LogCapacity: UInt64;
    LogFree: UInt64;
    TopsSize: UInt64;
    TopsUsed: UInt64;
    TransactionCount: UInt64;
    OnePCCount: UInt64;
    TwoPCCount: UInt64;
    NumberLogFileFull: UInt64;
    OldestTransactionAge: UInt64;
    RMName: TGUID;
    TmLogPathOffset: DWORD;
  end;
const TXFS_QUERY_RM_INFORMATION = extern struct {
    BytesRequired: u32,
    TailLsn: u64,
    CurrentLsn: u64,
    ArchiveTailLsn: u64,
    LogContainerSize: u64,
    HighestVirtualClock: i64,
    LogContainerCount: u32,
    LogContainerCountMax: u32,
    LogContainerCountMin: u32,
    LogGrowthIncrement: u32,
    LogAutoShrinkPercentage: u32,
    Flags: u32,
    LoggingMode: u16,
    Reserved: u16,
    RmState: u32,
    LogCapacity: u64,
    LogFree: u64,
    TopsSize: u64,
    TopsUsed: u64,
    TransactionCount: u64,
    OnePCCount: u64,
    TwoPCCount: u64,
    NumberLogFileFull: u64,
    OldestTransactionAge: u64,
    RMName: GUID,
    TmLogPathOffset: u32,
};
type
  TXFS_QUERY_RM_INFORMATION {.bycopy.} = object
    BytesRequired: uint32
    TailLsn: uint64
    CurrentLsn: uint64
    ArchiveTailLsn: uint64
    LogContainerSize: uint64
    HighestVirtualClock: int64
    LogContainerCount: uint32
    LogContainerCountMax: uint32
    LogContainerCountMin: uint32
    LogGrowthIncrement: uint32
    LogAutoShrinkPercentage: uint32
    Flags: uint32
    LoggingMode: uint16
    Reserved: uint16
    RmState: uint32
    LogCapacity: uint64
    LogFree: uint64
    TopsSize: uint64
    TopsUsed: uint64
    TransactionCount: uint64
    OnePCCount: uint64
    TwoPCCount: uint64
    NumberLogFileFull: uint64
    OldestTransactionAge: uint64
    RMName: GUID
    TmLogPathOffset: uint32
struct TXFS_QUERY_RM_INFORMATION
{
    uint BytesRequired;
    ulong TailLsn;
    ulong CurrentLsn;
    ulong ArchiveTailLsn;
    ulong LogContainerSize;
    long HighestVirtualClock;
    uint LogContainerCount;
    uint LogContainerCountMax;
    uint LogContainerCountMin;
    uint LogGrowthIncrement;
    uint LogAutoShrinkPercentage;
    uint Flags;
    ushort LoggingMode;
    ushort Reserved;
    uint RmState;
    ulong LogCapacity;
    ulong LogFree;
    ulong TopsSize;
    ulong TopsUsed;
    ulong TransactionCount;
    ulong OnePCCount;
    ulong TwoPCCount;
    ulong NumberLogFileFull;
    ulong OldestTransactionAge;
    GUID RMName;
    uint TmLogPathOffset;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TXFS_QUERY_RM_INFORMATION サイズ: 176 バイト(x64)
dim st, 44    ; 4byte整数×44(構造体サイズ 176 / 4 切り上げ)
; BytesRequired : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; TailLsn : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; CurrentLsn : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ArchiveTailLsn : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; LogContainerSize : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; HighestVirtualClock : LONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; LogContainerCount : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; LogContainerCountMax : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; LogContainerCountMin : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; LogGrowthIncrement : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; LogAutoShrinkPercentage : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; Flags : TXFS_RMF_LAGS (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; LoggingMode : WORD (+72, 2byte)  wpoke st,72,値  /  値 = wpeek(st,72)
; Reserved : WORD (+74, 2byte)  wpoke st,74,値  /  値 = wpeek(st,74)
; RmState : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; LogCapacity : ULONGLONG (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; LogFree : ULONGLONG (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; TopsSize : ULONGLONG (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; TopsUsed : ULONGLONG (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; TransactionCount : ULONGLONG (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; OnePCCount : ULONGLONG (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; TwoPCCount : ULONGLONG (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; NumberLogFileFull : ULONGLONG (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; OldestTransactionAge : ULONGLONG (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; RMName : GUID (+152, 16byte)  varptr(st)+152 を基点に操作(16byte:入れ子/配列)
; TmLogPathOffset : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; ※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 TXFS_QUERY_RM_INFORMATION
    #field int BytesRequired
    #field int64 TailLsn
    #field int64 CurrentLsn
    #field int64 ArchiveTailLsn
    #field int64 LogContainerSize
    #field int64 HighestVirtualClock
    #field int LogContainerCount
    #field int LogContainerCountMax
    #field int LogContainerCountMin
    #field int LogGrowthIncrement
    #field int LogAutoShrinkPercentage
    #field int Flags
    #field short LoggingMode
    #field short Reserved
    #field int RmState
    #field int64 LogCapacity
    #field int64 LogFree
    #field int64 TopsSize
    #field int64 TopsUsed
    #field int64 TransactionCount
    #field int64 OnePCCount
    #field int64 TwoPCCount
    #field int64 NumberLogFileFull
    #field int64 OldestTransactionAge
    #field GUID RMName
    #field int TmLogPathOffset
#endstruct

stdim st, TXFS_QUERY_RM_INFORMATION        ; NSTRUCT 変数を確保
st->BytesRequired = 100
mes "BytesRequired=" + st->BytesRequired