estrutura EXTENDED_CREATE_INFORMATION (wdm.h)
A estrutura EXTENDED_CREATE_INFORMATION é o campo EaBuffer em NtCreateFile quando o sinalizador FILE_CONTAINS_EXTENDED_CREATE_INFORMATION é definido no parâmetro CreateOption de NtCreateFile.
Sintaxe
typedef struct _EXTENDED_CREATE_INFORMATION {
LONGLONG ExtendedCreateFlags;
PVOID EaBuffer;
ULONG EaLength;
PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;
Membros
ExtendedCreateFlags
Sinalizadores para a criação estendida. ExtendedCreateFlags pode ser um dos valores a seguir. Quando um desses sinalizadores é especificado, o objeto de arquivo de NtCreateFile é marcado como aberto para a intenção de cópia em seu FileObjectExtension. Os filtros podem marcar para esse estado armazenado chamando IoCheckFileObjectOpenedAsCopySource ou IoCheckFileObjectOpenedAsCopyDestination
Sinalizador | Significado |
---|---|
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) | Sinaliza que o arquivo está sendo aberto como o arquivo de origem para uma cópia de arquivo. |
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) | Sinaliza que o arquivo está sendo aberto como o arquivo de destino para uma cópia de arquivo. |
A presença de um dos sinalizadores acima não é suficiente para garantir que as leituras/gravações (operações de E/S) no objeto de arquivo sejam confiáveis, pois qualquer processo de modo de usuário pode fornecer esses sinalizadores no momento da criação.
EaBuffer
Ponteiro para o buffer de atributos estendidos.
EaLength
Comprimento do buffer para o qual o EaBuffer aponta.
DualOplockKeys
Comentários
O exemplo a seguir mostra como fornecer uma estrutura EXTENDED_CREATE_INFORMATION para NtCreateFile, encapsulando corretamente o EaBuffer e o EaLength internamente.
// 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));
Para obter mais informações, consulte Cópia de arquivo no modo kernel e detecção de cenários de arquivo de cópia.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 11, versão 22H2 |
Cabeçalho | wdm.h (include Wdm.h) |
Confira também
IoCheckFileObjectOpenedAsCopyDestination