EXTENDED_CREATE_INFORMATION 構造体 (wdm.h)
ntCreateFile の CreateOption パラメーターで FILE_CONTAINS_EXTENDED_CREATE_INFORMATION フラグが設定されている場合、EXTENDED_CREATE_INFORMATION構造体は NtCreateFile の EaBuffer フィールドです。
構文
typedef struct _EXTENDED_CREATE_INFORMATION {
LONGLONG ExtendedCreateFlags;
PVOID EaBuffer;
ULONG EaLength;
PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;
メンバー
ExtendedCreateFlags
拡張作成のフラグ。 ExtendedCreateFlags には、次のいずれかの値を指定できます。 これらのフラグのいずれかを指定すると、 NtCreateFile のファイル オブジェクトは FileObjectExtension でコピー インテント用に開かれているとマークされます。 フィルターは、IoCheckFileObjectOpenedAsCopySource または IoCheckFileObjectOpenedAsCopyDestination を呼び出すことによって、この格納された状態に対してチェックできます。
フラグ | 説明 |
---|---|
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) | ファイルがファイル コピーのソース ファイルとして開かれていることを通知します。 |
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) | ファイルがファイル コピーのコピー先ファイルとして開かれていることを通知します。 |
上記のフラグのいずれかが存在するだけでは、ファイル オブジェクトに対する読み取り/書き込み (I/O 操作) が信頼できることを確認するのに十分ではありません。これは、ユーザー モードプロセスが作成時にこれらのフラグを提供できるためです。
EaBuffer
拡張属性バッファーへのポインター。
EaLength
EaBuffer が指すバッファーの長さ。
DualOplockKeys
注釈
次の例は、EXTENDED_CREATE_INFORMATION 構造体をNtCreateFile に提供し、 EaBuffer と EaLength を内部的に適切にラップする方法を示しています。
// Input parameters to NtCreateFile. Obtaining these
// values is not shown in this sample.
HANDLE SourceFile;
ACCESS_MASK DesiredAccess;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatus;
ULONG FileAttributes;
ULONG ShareAccess;
ULONG CreateDisposition;
ULONG CreateOptions;
PVOID EaBuffer = NULL;
ULONG EaLength = 0;
EXTENDED_CREATE_INFORMATION ExtendedCreateInfo;
// Populate the extended create info. The
// ExtendedCreateFlags field could also be
// EX_CREATE_FLAG_FILE_DESTINATION_OPEN_FOR_COPY.
ExtendedCreateInfo.EaBuffer = EaBuffer;
ExtendedCreateInfo.EaLength = EaLength;
ExtendedCreateInfo.ExtendedCreateFlags = EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY;
// Set the create option flag to indicate the
// EaBuffer actually contains extended create info.
CreateOptions |= FILE_CONTAINS_EXTENDED_CREATE_INFORMATION;
// Open the file
Status = NtCreateFile(&SourceFile,
DesiredAccess,
&ObjectAttributes,
&IoStatus,
NULL,
FileAttributes,
SharseAccess,
CreateDisposition,
CreateOptions,
&ExtendedCreateInfo,
sizeof(EXTENDED_CREATE_INFORMATION));
詳細については、「 カーネル モードのファイル コピーとコピー ファイルの検出のシナリオ」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 11 バージョン 22H2 |
Header | wdm.h (Wdm.h を含む) |
こちらもご覧ください
IoCheckFileObjectOpenedAsCopyDestination