ホーム › System.Ioctl › READ_USN_JOURNAL_DATA_V0
READ_USN_JOURNAL_DATA_V0
構造体サイズ=各フィールドのバイト数(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ジャーナルの識別子。 |
各言語での定義
#include <windows.h>
// READ_USN_JOURNAL_DATA_V0 (x64 40 / x86 40 バイト)
typedef struct READ_USN_JOURNAL_DATA_V0 {
LONGLONG StartUsn;
DWORD ReasonMask;
DWORD ReturnOnlyOnClose;
ULONGLONG Timeout;
ULONGLONG BytesToWaitFor;
ULONGLONG UsnJournalID;
} READ_USN_JOURNAL_DATA_V0;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct READ_USN_JOURNAL_DATA_V0
{
public long StartUsn;
public uint ReasonMask;
public uint ReturnOnlyOnClose;
public ulong Timeout;
public ulong BytesToWaitFor;
public ulong UsnJournalID;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure READ_USN_JOURNAL_DATA_V0
Public StartUsn As Long
Public ReasonMask As UInteger
Public ReturnOnlyOnClose As UInteger
Public Timeout As ULong
Public BytesToWaitFor As ULong
Public UsnJournalID As ULong
End Structureimport ctypes
from ctypes import wintypes
class READ_USN_JOURNAL_DATA_V0(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),
]#[repr(C)]
pub struct READ_USN_JOURNAL_DATA_V0 {
pub StartUsn: i64,
pub ReasonMask: u32,
pub ReturnOnlyOnClose: u32,
pub Timeout: u64,
pub BytesToWaitFor: u64,
pub UsnJournalID: u64,
}import "golang.org/x/sys/windows"
type READ_USN_JOURNAL_DATA_V0 struct {
StartUsn int64
ReasonMask uint32
ReturnOnlyOnClose uint32
Timeout uint64
BytesToWaitFor uint64
UsnJournalID uint64
}type
READ_USN_JOURNAL_DATA_V0 = record
StartUsn: Int64;
ReasonMask: DWORD;
ReturnOnlyOnClose: DWORD;
Timeout: UInt64;
BytesToWaitFor: UInt64;
UsnJournalID: UInt64;
end;const READ_USN_JOURNAL_DATA_V0 = extern struct {
StartUsn: i64,
ReasonMask: u32,
ReturnOnlyOnClose: u32,
Timeout: u64,
BytesToWaitFor: u64,
UsnJournalID: u64,
};type
READ_USN_JOURNAL_DATA_V0 {.bycopy.} = object
StartUsn: int64
ReasonMask: uint32
ReturnOnlyOnClose: uint32
Timeout: uint64
BytesToWaitFor: uint64
UsnJournalID: uint64struct READ_USN_JOURNAL_DATA_V0
{
long StartUsn;
uint ReasonMask;
uint ReturnOnlyOnClose;
ulong Timeout;
ulong BytesToWaitFor;
ulong UsnJournalID;
}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_V0 サイズ: 40 バイト(x64)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 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,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global READ_USN_JOURNAL_DATA_V0
#field int64 StartUsn
#field int ReasonMask
#field int ReturnOnlyOnClose
#field int64 Timeout
#field int64 BytesToWaitFor
#field int64 UsnJournalID
#endstruct
stdim st, READ_USN_JOURNAL_DATA_V0 ; NSTRUCT 変数を確保
st->StartUsn = 100
mes "StartUsn=" + st->StartUsn