ホーム › System.Ioctl › USN_JOURNAL_DATA_V1
USN_JOURNAL_DATA_V1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| UsnJournalID | ULONGLONG | 8 | +0 | +0 | 現在のジャーナル識別子です。ジャーナルには作成時に新しい識別子が割り当てられ、その存続期間中に新しい識別子が刻印されることがあります。NTFS ファイル システムは、この識別子を整合性チェックに使用します。 |
| FirstUsn | LONGLONG | 8 | +8 | +8 | ジャーナルから読み取ることができる最初のレコードの番号です。 |
| NextUsn | LONGLONG | 8 | +16 | +16 | ジャーナルに次に書き込まれるレコードの番号です。 |
| LowestValidUsn | LONGLONG | 8 | +24 | +24 | このジャーナル インスタンスに対して、ジャーナルに最初に書き込まれたレコードです。ボリューム上のファイルまたはディレクトリを列挙すると、この値より小さい USN が返されることがあります (つまり、FirstUsn メンバーの値が LowestValidUsn メンバーの値より小さくなる場合があります)。その場合、最後の USN が書き込まれた後に、ジャーナルに新しい識別子が刻印されています。この場合、LowestValidUsn はジャーナルの不連続を示している可能性があり、ボリューム上の一部またはすべてのファイルやディレクトリに対して、変更ジャーナルに記録されていない変更が発生している可能性があります。 |
| MaxUsn | LONGLONG | 8 | +32 | +32 | 変更ジャーナルがサポートする最大の USN です。NextUsn の値がこの値に近づいた場合、管理者は変更ジャーナルを削除する必要があります。 |
| MaximumSize | ULONGLONG | 8 | +40 | +40 | 変更ジャーナルの目標最大サイズ (バイト単位) です。変更ジャーナルはこの値より大きくなることがありますが、その場合は次の NTFS ファイル システムのチェックポイントでこの値未満に切り詰められます。 |
| AllocationDelta | ULONGLONG | 8 | +48 | +48 | メモリが割り当てまたは解放されるたびに、変更ジャーナルの末尾に追加され、先頭から削除されるディスク メモリのバイト数です。つまり、割り当てと解放はこのサイズを単位として行われます。クラスター サイズの整数倍が、このメンバーの妥当な値です。 |
| MinSupportedMajorVersion | WORD | 2 | +56 | +56 | システムがサポートするUSNレコードの最小メジャーバージョン。 |
| MaxSupportedMajorVersion | WORD | 2 | +58 | +58 | システムがサポートするUSNレコードの最大メジャーバージョン。 |
公式ドキュメント
更新シーケンス番号 (USN) 変更ジャーナル、そのレコード、および容量を表します。 この構造体は FSCTL_QUERY_USN_JOURNAL 制御コードの出力バッファーです。Windows 8 および Windows Server 2012 より前では、この構造体は USN_JOURNAL_DATA という名前でした。より古い SDK やコンパイラーでコンパイルする場合は、その名前を使用してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// USN_JOURNAL_DATA_V1 (x64 64 / x86 64 バイト)
typedef struct USN_JOURNAL_DATA_V1 {
ULONGLONG UsnJournalID;
LONGLONG FirstUsn;
LONGLONG NextUsn;
LONGLONG LowestValidUsn;
LONGLONG MaxUsn;
ULONGLONG MaximumSize;
ULONGLONG AllocationDelta;
WORD MinSupportedMajorVersion;
WORD MaxSupportedMajorVersion;
} USN_JOURNAL_DATA_V1;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct USN_JOURNAL_DATA_V1
{
public ulong UsnJournalID;
public long FirstUsn;
public long NextUsn;
public long LowestValidUsn;
public long MaxUsn;
public ulong MaximumSize;
public ulong AllocationDelta;
public ushort MinSupportedMajorVersion;
public ushort MaxSupportedMajorVersion;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure USN_JOURNAL_DATA_V1
Public UsnJournalID As ULong
Public FirstUsn As Long
Public NextUsn As Long
Public LowestValidUsn As Long
Public MaxUsn As Long
Public MaximumSize As ULong
Public AllocationDelta As ULong
Public MinSupportedMajorVersion As UShort
Public MaxSupportedMajorVersion As UShort
End Structureimport ctypes
from ctypes import wintypes
class USN_JOURNAL_DATA_V1(ctypes.Structure):
_fields_ = [
("UsnJournalID", ctypes.c_ulonglong),
("FirstUsn", ctypes.c_longlong),
("NextUsn", ctypes.c_longlong),
("LowestValidUsn", ctypes.c_longlong),
("MaxUsn", ctypes.c_longlong),
("MaximumSize", ctypes.c_ulonglong),
("AllocationDelta", ctypes.c_ulonglong),
("MinSupportedMajorVersion", ctypes.c_ushort),
("MaxSupportedMajorVersion", ctypes.c_ushort),
]#[repr(C)]
pub struct USN_JOURNAL_DATA_V1 {
pub UsnJournalID: u64,
pub FirstUsn: i64,
pub NextUsn: i64,
pub LowestValidUsn: i64,
pub MaxUsn: i64,
pub MaximumSize: u64,
pub AllocationDelta: u64,
pub MinSupportedMajorVersion: u16,
pub MaxSupportedMajorVersion: u16,
}import "golang.org/x/sys/windows"
type USN_JOURNAL_DATA_V1 struct {
UsnJournalID uint64
FirstUsn int64
NextUsn int64
LowestValidUsn int64
MaxUsn int64
MaximumSize uint64
AllocationDelta uint64
MinSupportedMajorVersion uint16
MaxSupportedMajorVersion uint16
}type
USN_JOURNAL_DATA_V1 = record
UsnJournalID: UInt64;
FirstUsn: Int64;
NextUsn: Int64;
LowestValidUsn: Int64;
MaxUsn: Int64;
MaximumSize: UInt64;
AllocationDelta: UInt64;
MinSupportedMajorVersion: Word;
MaxSupportedMajorVersion: Word;
end;const USN_JOURNAL_DATA_V1 = extern struct {
UsnJournalID: u64,
FirstUsn: i64,
NextUsn: i64,
LowestValidUsn: i64,
MaxUsn: i64,
MaximumSize: u64,
AllocationDelta: u64,
MinSupportedMajorVersion: u16,
MaxSupportedMajorVersion: u16,
};type
USN_JOURNAL_DATA_V1 {.bycopy.} = object
UsnJournalID: uint64
FirstUsn: int64
NextUsn: int64
LowestValidUsn: int64
MaxUsn: int64
MaximumSize: uint64
AllocationDelta: uint64
MinSupportedMajorVersion: uint16
MaxSupportedMajorVersion: uint16struct USN_JOURNAL_DATA_V1
{
ulong UsnJournalID;
long FirstUsn;
long NextUsn;
long LowestValidUsn;
long MaxUsn;
ulong MaximumSize;
ulong AllocationDelta;
ushort MinSupportedMajorVersion;
ushort MaxSupportedMajorVersion;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; USN_JOURNAL_DATA_V1 サイズ: 64 バイト(x64)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; UsnJournalID : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; FirstUsn : LONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; NextUsn : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; LowestValidUsn : LONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; MaxUsn : LONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; MaximumSize : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; AllocationDelta : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; MinSupportedMajorVersion : WORD (+56, 2byte) wpoke st,56,値 / 値 = wpeek(st,56)
; MaxSupportedMajorVersion : WORD (+58, 2byte) wpoke st,58,値 / 値 = wpeek(st,58)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global USN_JOURNAL_DATA_V1
#field int64 UsnJournalID
#field int64 FirstUsn
#field int64 NextUsn
#field int64 LowestValidUsn
#field int64 MaxUsn
#field int64 MaximumSize
#field int64 AllocationDelta
#field short MinSupportedMajorVersion
#field short MaxSupportedMajorVersion
#endstruct
stdim st, USN_JOURNAL_DATA_V1 ; NSTRUCT 変数を確保
st->UsnJournalID = 100
mes "UsnJournalID=" + st->UsnJournalID