структура EXTENDED_CREATE_INFORMATION (wdm.h)
Структура EXTENDED_CREATE_INFORMATION — это поле EaBuffer в NtCreateFile, если флаг FILE_CONTAINS_EXTENDED_CREATE_INFORMATION задан в параметре CreateOp tion 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
Флаг | Значение |
---|---|
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 (include Wdm.h) |
См. также
IoCheckFileObjectOpenedAsCopyDestination