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+0FSCTL_TXFS_QUERY_RM_INFORMATIONERROR_BUFFER_TOO_SMALL を返した場合、このメンバーは要求された情報を返すために必要な最小バイト数を指定します。この値には NULL 終端文字が含まれます。
TailLsnULONGLONG8+8+8RM が現在使用している最も古いログシーケンス番号 (LSN) です。
CurrentLsnULONGLONG8+16+16RM がそのログ内で直近に使用した LSN です。
ArchiveTailLsnULONGLONG8+24+24ログのアーカイブテールの LSN です。
LogContainerSizeULONGLONG8+32+32ログコンテナーの実際のサイズ (バイト単位)。
HighestVirtualClockLONGLONG8+40+40ログレコードに関連付けられた最も新しいタイムスタンプです。
LogContainerCountDWORD4+48+48ログコンテナーの数です。
LogContainerCountMaxDWORD4+52+52ログコンテナーの最大数です。
LogContainerCountMinDWORD4+56+56ログで許可されるコンテナーの最小数です。
LogGrowthIncrementDWORD4+60+60ログが拡張される量です。コンテナー数またはログサイズに対する割合のいずれかであり、使用される拡張の種類は Flags メンバーに設定されたフラグによって指定されます。
LogAutoShrinkPercentageDWORD4+64+64自動縮小ポリシーが有効な場合、このメンバーはログ内で許容される空き領域の最大量を指定します。このメンバーが 0 の場合、自動縮小ポリシーは有効ではありません。
FlagsTXFS_RMF_LAGS4+68+68

このメンバーには次の値のうち 1 つ以上を指定できます。

意味
TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN
0x00000008
このフラグが設定されている場合、RM のログは可能な限り縮小できます。このフラグは TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX と相互排他的です。
TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS
0x00000010
LogGrowthIncrement の値の種類を示します。このフラグが設定されている場合、LogGrowthIncrement はコンテナー数です。このフラグは TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT と相互排他的です。
TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT
0x00000020
LogGrowthIncrement の値の種類を示します。このフラグが設定されている場合、LogGrowthIncrement は割合 (パーセント) です。このフラグは TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS と相互排他的です。
TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX
0x00000080
RM のログが上限なく拡張できることを示します。このフラグは TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN と相互排他的です。
TXFS_RM_FLAG_RESET_RM_AT_NEXT_START
0x00004000
RM のリセットフラグの現在の状態を示します。これが設定されている場合、RM は次回の起動時に自身をリセットします。このフラグは既定の RM でのみ有効であり、セカンダリ RM では無効です。このフラグは TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START と相互排他的です。
TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START
0x00008000
RM のリセットフラグの現在の状態を示します。これが設定されている場合、RM は次回の起動時に自身をリセットしません。このフラグは既定の RM でのみ有効であり、セカンダリ RM では無効です。このフラグは TXFS_RM_FLAG_RESET_RM_AT_NEXT_START と相互排他的です。
TXFS_RM_FLAG_PREFER_CONSISTENCY
0x00010000
RM がシステムの可用性よりもトランザクションの整合性を優先することを示します。このフラグは TXFS_RM_FLAG_PREFER_AVAILABILITY と相互排他的であり、システムボリューム上の既定の RM ではサポートされません。
TXFS_RM_FLAG_PREFER_AVAILABILITY
0x00020000
RM がトランザクションの整合性よりもシステムの可用性を優先することを示します。このフラグは TXFS_RM_FLAG_PREFER_CONSISTENCY と相互排他的であり、システムボリューム上の既定の RM では強制的に設定されます。
LoggingModeWORD2+72+72

現在のログ記録モードです。

意味
TXFS_LOGGING_MODE_SIMPLE
1
簡易ログ記録が使用されます。
TXFS_LOGGING_MODE_FULL
2
完全ログ記録が使用されます。
ReservedWORD2+74+74予約済みです。
RmStateDWORD4+76+76

RM の状態です。有効な値は次のとおりです。

意味
TXFS_RM_STATE_NOT_STARTED
0
RM はまだ開始されていません。
TXFS_RM_STATE_STARTING
1
RM は開始処理中です。
TXFS_RM_STATE_ACTIVE
2
RM はアクティブであり、トランザクションを受け付ける準備ができています。
TXFS_RM_STATE_SHUTTING_DOWN
3
RM はシャットダウン処理中です。
LogCapacityULONGLONG8+80+80ログの総容量 (バイト単位)。
LogFreeULONGLONG8+88+88ログ内の空きバイト数です。
TopsSizeULONGLONG8+96+96$Tops ファイルのサイズ (バイト単位)。
TopsUsedULONGLONG8+104+104$Tops ファイルのうち使用中の量 (バイト単位)。
TransactionCountULONGLONG8+112+112クエリが発行された時点でのアクティブなトランザクションの数です。
OnePCCountULONGLONG8+120+120この RM で発生した単一フェーズコミット操作の回数です。
TwoPCCountULONGLONG8+128+128この RM で発生した 2 フェーズコミット操作の回数です。
NumberLogFileFullULONGLONG8+136+136この RM のログが満杯になった回数です。
OldestTransactionAgeULONGLONG8+144+144最も古いアクティブなトランザクションの経過時間 (ミリ秒単位)。
RMNameGUID16+152+152この RM の名前を示す GUID です。
TmLogPathOffsetDWORD4+168+168この構造体の先頭から、TM のログへのパスを格納する NULL 終端の Unicode 文字列までのオフセットです。

公式ドキュメント

[Microsoft は、アプリケーションのニーズを満たすために代替手段を利用することを強く推奨します。TxF が開発された対象の多くのシナリオは、より単純で容易に利用できる手法によって実現できます。さらに、TxF は将来のバージョンの Microsoft Windows では利用できなくなる可能性があります。詳細および TxF の代替手段については、Alternatives to using Transactional NTFS を参照してください。]

リソースマネージャー (RM) に関する情報を格納します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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