次の方法で共有


EXTENDED_CREATE_INFORMATION 構造体 (wdm.h)

ntCreateFileCreateOption パラメーターで 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 に提供し、 EaBufferEaLength を内部的に適切にラップする方法を示しています。

// 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

IoCheckFileObjectOpenedAsCopySource

NtCopyFileChunk

NtCreateFile