ホーム › System.Ioctl › TXFS_QUERY_RM_INFORMATION
TXFS_QUERY_RM_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BytesRequired | DWORD | 4 | +0 | +0 | FSCTL_TXFS_QUERY_RM_INFORMATION が ERROR_BUFFER_TOO_SMALL を返した場合、このメンバーは要求された情報を返すために必要な最小バイト数を指定します。この値には NULL 終端文字が含まれます。 | ||||||||||||||||||
| TailLsn | ULONGLONG | 8 | +8 | +8 | RM が現在使用している最も古いログシーケンス番号 (LSN) です。 | ||||||||||||||||||
| CurrentLsn | ULONGLONG | 8 | +16 | +16 | RM がそのログ内で直近に使用した LSN です。 | ||||||||||||||||||
| ArchiveTailLsn | ULONGLONG | 8 | +24 | +24 | ログのアーカイブテールの LSN です。 | ||||||||||||||||||
| LogContainerSize | ULONGLONG | 8 | +32 | +32 | ログコンテナーの実際のサイズ (バイト単位)。 | ||||||||||||||||||
| HighestVirtualClock | LONGLONG | 8 | +40 | +40 | ログレコードに関連付けられた最も新しいタイムスタンプです。 | ||||||||||||||||||
| LogContainerCount | DWORD | 4 | +48 | +48 | ログコンテナーの数です。 | ||||||||||||||||||
| LogContainerCountMax | DWORD | 4 | +52 | +52 | ログコンテナーの最大数です。 | ||||||||||||||||||
| LogContainerCountMin | DWORD | 4 | +56 | +56 | ログで許可されるコンテナーの最小数です。 | ||||||||||||||||||
| LogGrowthIncrement | DWORD | 4 | +60 | +60 | ログが拡張される量です。コンテナー数またはログサイズに対する割合のいずれかであり、使用される拡張の種類は Flags メンバーに設定されたフラグによって指定されます。 | ||||||||||||||||||
| LogAutoShrinkPercentage | DWORD | 4 | +64 | +64 | 自動縮小ポリシーが有効な場合、このメンバーはログ内で許容される空き領域の最大量を指定します。このメンバーが 0 の場合、自動縮小ポリシーは有効ではありません。 | ||||||||||||||||||
| Flags | TXFS_RMF_LAGS | 4 | +68 | +68 | このメンバーには次の値のうち 1 つ以上を指定できます。
| ||||||||||||||||||
| LoggingMode | WORD | 2 | +72 | +72 | 現在のログ記録モードです。
| ||||||||||||||||||
| Reserved | WORD | 2 | +74 | +74 | 予約済みです。 | ||||||||||||||||||
| RmState | DWORD | 4 | +76 | +76 | RM の状態です。有効な値は次のとおりです。
| ||||||||||||||||||
| LogCapacity | ULONGLONG | 8 | +80 | +80 | ログの総容量 (バイト単位)。 | ||||||||||||||||||
| LogFree | ULONGLONG | 8 | +88 | +88 | ログ内の空きバイト数です。 | ||||||||||||||||||
| TopsSize | ULONGLONG | 8 | +96 | +96 | $Tops ファイルのサイズ (バイト単位)。 | ||||||||||||||||||
| TopsUsed | ULONGLONG | 8 | +104 | +104 | $Tops ファイルのうち使用中の量 (バイト単位)。 | ||||||||||||||||||
| TransactionCount | ULONGLONG | 8 | +112 | +112 | クエリが発行された時点でのアクティブなトランザクションの数です。 | ||||||||||||||||||
| OnePCCount | ULONGLONG | 8 | +120 | +120 | この RM で発生した単一フェーズコミット操作の回数です。 | ||||||||||||||||||
| TwoPCCount | ULONGLONG | 8 | +128 | +128 | この RM で発生した 2 フェーズコミット操作の回数です。 | ||||||||||||||||||
| NumberLogFileFull | ULONGLONG | 8 | +136 | +136 | この RM のログが満杯になった回数です。 | ||||||||||||||||||
| OldestTransactionAge | ULONGLONG | 8 | +144 | +144 | 最も古いアクティブなトランザクションの経過時間 (ミリ秒単位)。 | ||||||||||||||||||
| RMName | GUID | 16 | +152 | +152 | この RM の名前を示す GUID です。 | ||||||||||||||||||
| TmLogPathOffset | DWORD | 4 | +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)
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 Structureimport 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: uint32struct 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