Win32 API 日本語リファレンス
ホームSystem.Ioctl › MFT_ENUM_DATA_V1

MFT_ENUM_DATA_V1

構造体
サイズx64: 32 バイト / x86: 32 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
StartFileReferenceNumberULONGLONG8+0+0

列挙を開始する、現在のボリューム上のファイルにおける序数位置です。

列挙時の最初の FSCTL_ENUM_USN_DATA の呼び出しでは、 StartFileReferenceNumber メンバーを (DWORDLONG)0 に設定しなければなりません。 FSCTL_ENUM_USN_DATA を呼び出すたびに、 次回の呼び出しの開始位置が出力バッファーの先頭エントリとして取得されます。以降の呼び出しでは、 StartFileReferenceNumber にこの値を設定しなければなりません。詳細については、 FSCTL_ENUM_USN_DATA を参照してください。

LowUsnLONGLONG8+8+8返されるレコードを絞り込むために使用する USN 値の範囲の下限です。最後の変更ジャーナル USN が LowUsn メンバーと HighUsn メンバーの値の間にある (または等しい) レコードのみが返されます。
HighUsnLONGLONG8+16+16返されるファイルを絞り込むために使用する USN 値の範囲の上限です。
MinMajorVersionWORD2+24+24USN 変更ジャーナルでサポートされる最小のメジャー バージョンを示します。
MaxMajorVersionWORD2+26+26

USN 変更ジャーナルでサポートされる最大のメジャー バージョンを示します。

意味
2
FSCTL_ENUM_USN_DATA 制御コードから返されるデータには、USN_RECORD_V2 構造体が含まれます。
3
FSCTL_ENUM_USN_DATA 制御コードから返されるデータには、USN_RECORD_V2 または USN_RECORD_V3 構造体が含まれます。

公式ドキュメント

ReFS ボリュームの更新シーケンス番号 (USN) 変更ジャーナル レコードを列挙する際の境界と開始位置を定義する情報を格納します。 この構造体は、FSCTL_ENUM_USN_DATA 制御コードの入力バッファーとして使用されます。

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

各言語での定義

#include <windows.h>

// MFT_ENUM_DATA_V1  (x64 32 / x86 32 バイト)
typedef struct MFT_ENUM_DATA_V1 {
    ULONGLONG StartFileReferenceNumber;
    LONGLONG LowUsn;
    LONGLONG HighUsn;
    WORD MinMajorVersion;
    WORD MaxMajorVersion;
} MFT_ENUM_DATA_V1;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MFT_ENUM_DATA_V1
{
    public ulong StartFileReferenceNumber;
    public long LowUsn;
    public long HighUsn;
    public ushort MinMajorVersion;
    public ushort MaxMajorVersion;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MFT_ENUM_DATA_V1
    Public StartFileReferenceNumber As ULong
    Public LowUsn As Long
    Public HighUsn As Long
    Public MinMajorVersion As UShort
    Public MaxMajorVersion As UShort
End Structure
import ctypes
from ctypes import wintypes

class MFT_ENUM_DATA_V1(ctypes.Structure):
    _fields_ = [
        ("StartFileReferenceNumber", ctypes.c_ulonglong),
        ("LowUsn", ctypes.c_longlong),
        ("HighUsn", ctypes.c_longlong),
        ("MinMajorVersion", ctypes.c_ushort),
        ("MaxMajorVersion", ctypes.c_ushort),
    ]
#[repr(C)]
pub struct MFT_ENUM_DATA_V1 {
    pub StartFileReferenceNumber: u64,
    pub LowUsn: i64,
    pub HighUsn: i64,
    pub MinMajorVersion: u16,
    pub MaxMajorVersion: u16,
}
import "golang.org/x/sys/windows"

type MFT_ENUM_DATA_V1 struct {
	StartFileReferenceNumber uint64
	LowUsn int64
	HighUsn int64
	MinMajorVersion uint16
	MaxMajorVersion uint16
}
type
  MFT_ENUM_DATA_V1 = record
    StartFileReferenceNumber: UInt64;
    LowUsn: Int64;
    HighUsn: Int64;
    MinMajorVersion: Word;
    MaxMajorVersion: Word;
  end;
const MFT_ENUM_DATA_V1 = extern struct {
    StartFileReferenceNumber: u64,
    LowUsn: i64,
    HighUsn: i64,
    MinMajorVersion: u16,
    MaxMajorVersion: u16,
};
type
  MFT_ENUM_DATA_V1 {.bycopy.} = object
    StartFileReferenceNumber: uint64
    LowUsn: int64
    HighUsn: int64
    MinMajorVersion: uint16
    MaxMajorVersion: uint16
struct MFT_ENUM_DATA_V1
{
    ulong StartFileReferenceNumber;
    long LowUsn;
    long HighUsn;
    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 レイアウト)
; MFT_ENUM_DATA_V1 サイズ: 32 バイト(x64)
dim st, 8    ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; StartFileReferenceNumber : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; LowUsn : LONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; HighUsn : LONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; MinMajorVersion : WORD (+24, 2byte)  wpoke st,24,値  /  値 = wpeek(st,24)
; MaxMajorVersion : WORD (+26, 2byte)  wpoke st,26,値  /  値 = wpeek(st,26)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MFT_ENUM_DATA_V1
    #field int64 StartFileReferenceNumber
    #field int64 LowUsn
    #field int64 HighUsn
    #field short MinMajorVersion
    #field short MaxMajorVersion
#endstruct

stdim st, MFT_ENUM_DATA_V1        ; NSTRUCT 変数を確保
st->StartFileReferenceNumber = 100
mes "StartFileReferenceNumber=" + st->StartFileReferenceNumber