EXTENDED_CREATE_INFORMATION结构 (wdm.h)
EXTENDED_CREATE_INFORMATION 结构是在 NtCreateFile 的 CreateOption 参数中设置 FILE_CONTAINS_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 |
标头 | wdm.h (包括 Wdm.h) |
另请参阅
IoCheckFileObjectOpenedAsCopyDestination