ホーム › System.Ioctl › READ_USN_JOURNAL_DATA_V1
READ_USN_JOURNAL_DATA_V1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| StartUsn | LONGLONG | 8 | +0 | +0 | 読み取りを開始するUSN。 |
| ReasonMask | DWORD | 4 | +8 | +8 | 対象とする変更理由を絞り込むビットマスク。 |
| ReturnOnlyOnClose | DWORD | 4 | +12 | +12 | ファイルクローズ時のみレコードを返すかを示す値。 |
| Timeout | ULONGLONG | 8 | +16 | +16 | 新規レコードを待機するタイムアウト時間。秒単位。 |
| BytesToWaitFor | ULONGLONG | 8 | +24 | +24 | 待機を打ち切る前に蓄積を待つバイト数。 |
| UsnJournalID | ULONGLONG | 8 | +32 | +32 | 対象USNジャーナルの識別子。 |
| MinMajorVersion | WORD | 2 | +40 | +40 | 受け入れ可能なUSNレコードの最小メジャーバージョン。 |
| MaxMajorVersion | WORD | 2 | +42 | +42 | 受け入れ可能なUSNレコードの最大メジャーバージョン。 |
各言語での定義
#include <windows.h>
// READ_USN_JOURNAL_DATA_V1 (x64 48 / x86 48 バイト)
typedef struct READ_USN_JOURNAL_DATA_V1 {
LONGLONG StartUsn;
DWORD ReasonMask;
DWORD ReturnOnlyOnClose;
ULONGLONG Timeout;
ULONGLONG BytesToWaitFor;
ULONGLONG UsnJournalID;
WORD MinMajorVersion;
WORD MaxMajorVersion;
} READ_USN_JOURNAL_DATA_V1;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct READ_USN_JOURNAL_DATA_V1
{
public long StartUsn;
public uint ReasonMask;
public uint ReturnOnlyOnClose;
public ulong Timeout;
public ulong BytesToWaitFor;
public ulong UsnJournalID;
public ushort MinMajorVersion;
public ushort MaxMajorVersion;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure READ_USN_JOURNAL_DATA_V1
Public StartUsn As Long
Public ReasonMask As UInteger
Public ReturnOnlyOnClose As UInteger
Public Timeout As ULong
Public BytesToWaitFor As ULong
Public UsnJournalID As ULong
Public MinMajorVersion As UShort
Public MaxMajorVersion As UShort
End Structureimport ctypes
from ctypes import wintypes
class READ_USN_JOURNAL_DATA_V1(ctypes.Structure):
_fields_ = [
("StartUsn", ctypes.c_longlong),
("ReasonMask", wintypes.DWORD),
("ReturnOnlyOnClose", wintypes.DWORD),
("Timeout", ctypes.c_ulonglong),
("BytesToWaitFor", ctypes.c_ulonglong),
("UsnJournalID", ctypes.c_ulonglong),
("MinMajorVersion", ctypes.c_ushort),
("MaxMajorVersion", ctypes.c_ushort),
]#[repr(C)]
pub struct READ_USN_JOURNAL_DATA_V1 {
pub StartUsn: i64,
pub ReasonMask: u32,
pub ReturnOnlyOnClose: u32,
pub Timeout: u64,
pub BytesToWaitFor: u64,
pub UsnJournalID: u64,
pub MinMajorVersion: u16,
pub MaxMajorVersion: u16,
}import "golang.org/x/sys/windows"
type READ_USN_JOURNAL_DATA_V1 struct {
StartUsn int64
ReasonMask uint32
ReturnOnlyOnClose uint32
Timeout uint64
BytesToWaitFor uint64
UsnJournalID uint64
MinMajorVersion uint16
MaxMajorVersion uint16
}type
READ_USN_JOURNAL_DATA_V1 = record
StartUsn: Int64;
ReasonMask: DWORD;
ReturnOnlyOnClose: DWORD;
Timeout: UInt64;
BytesToWaitFor: UInt64;
UsnJournalID: UInt64;
MinMajorVersion: Word;
MaxMajorVersion: Word;
end;const READ_USN_JOURNAL_DATA_V1 = extern struct {
StartUsn: i64,
ReasonMask: u32,
ReturnOnlyOnClose: u32,
Timeout: u64,
BytesToWaitFor: u64,
UsnJournalID: u64,
MinMajorVersion: u16,
MaxMajorVersion: u16,
};type
READ_USN_JOURNAL_DATA_V1 {.bycopy.} = object
StartUsn: int64
ReasonMask: uint32
ReturnOnlyOnClose: uint32
Timeout: uint64
BytesToWaitFor: uint64
UsnJournalID: uint64
MinMajorVersion: uint16
MaxMajorVersion: uint16struct READ_USN_JOURNAL_DATA_V1
{
long StartUsn;
uint ReasonMask;
uint ReturnOnlyOnClose;
ulong Timeout;
ulong BytesToWaitFor;
ulong UsnJournalID;
ushort MinMajorVersion;
ushort MaxMajorVersion;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; READ_USN_JOURNAL_DATA_V1 サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; StartUsn : LONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; ReasonMask : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ReturnOnlyOnClose : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; Timeout : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; BytesToWaitFor : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; UsnJournalID : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; MinMajorVersion : WORD (+40, 2byte) wpoke st,40,値 / 値 = wpeek(st,40)
; MaxMajorVersion : WORD (+42, 2byte) wpoke st,42,値 / 値 = wpeek(st,42)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global READ_USN_JOURNAL_DATA_V1
#field int64 StartUsn
#field int ReasonMask
#field int ReturnOnlyOnClose
#field int64 Timeout
#field int64 BytesToWaitFor
#field int64 UsnJournalID
#field short MinMajorVersion
#field short MaxMajorVersion
#endstruct
stdim st, READ_USN_JOURNAL_DATA_V1 ; NSTRUCT 変数を確保
st->StartUsn = 100
mes "StartUsn=" + st->StartUsn