структура EXTENDED_CREATE_INFORMATION (wdm.h)
Структура EXTENDED_CREATE_INFORMATION — это поле EaBuffer в NtCreateFile , если флаг FILE_CONTAINS_EXTENDED_CREATE_INFORMATION установлен в параметре CreateOption ntCreateFile.
Синтаксис
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
Flag | Значение |
---|---|
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) | Сигнализирует о том, что файл открывается в качестве исходного файла для копирования файла. |
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) | Сигнализирует о том, что файл открывается в качестве целевого файла для копирования файла. |
Наличие одного из указанных выше флагов недостаточно для обеспечения надежности операций чтения и записи (операций ввода-вывода) в объекте файла, так как любой процесс пользовательского режима может предоставить эти флаги во время создания.
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