wdm.h) (EXTENDED_CREATE_INFORMATION 结构

NtCreateFileCreateOption 参数中设置FILE_CONTAINS_EXTENDED_CREATE_INFORMATION标志时,EXTENDED_CREATE_INFORMATION结构是 NtCreateFile 中的 EaBuffer 字段。

语法

typedef struct _EXTENDED_CREATE_INFORMATION {
  LONGLONG ExtendedCreateFlags;
  PVOID    EaBuffer;
  ULONG    EaLength;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;

成员

ExtendedCreateFlags

扩展创建的标志。 ExtendedCreateFlags 可以是以下值之一。 指定其中任一标志时, NtCreateFile 的文件对象将标记为已打开其 FileObjectExtension 中的复制意向。 筛选器可以通过调用 IoCheckFileObjectOpenedAsCopySourceIoCheckFileObjectOpenedAsCopyDestination 来检查此存储状态

标志 含义
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) 指示正在将文件作为文件副本的源文件打开。
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) 指示文件正在作为文件副本的目标文件打开。

存在上述标志之一不足以确保对文件对象) 的读/写 (I/O 操作是可信的,因为任何用户模式进程都可以在创建时提供这些标志。

EaBuffer

指向扩展属性缓冲区的指针。

EaLength

EaBuffer 指向的缓冲区的长度。

注解

以下示例演示如何向 NtCreateFile 提供EXTENDED_CREATE_INFORMATION结构,并在内部正确包装 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
标头 wdm.h (包括 Wdm.h)

另请参阅

IoCheckFileObjectOpenedAsCopyDestination

IoCheckFileObjectOpenedAsCopySource

NtCopyFileChunk

NtCreateFile