Compartir a través de


estructura EXTENDED_CREATE_INFORMATION (wdm.h)

La estructura de EXTENDED_CREATE_INFORMATION es el campo EaBuffer de NtCreateFile cuando la marca de FILE_CONTAINS_EXTENDED_CREATE_INFORMATION se establece en el parámetro CreateOption de NtCreateFile.

Sintaxis

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

Miembros

ExtendedCreateFlags

Marcas para la creación extendida. ExtendedCreateFlags puede ser uno de los siguientes valores. Cuando se especifica cualquiera de estas marcas, el objeto de archivo NtCreateFile se marca como abierto para la intención de copia en su FileObjectExtension. Los filtros pueden comprobar este estado almacenado llamando a IoCheckFileObjectOpenedAsCopySource o IoCheckFileObjectOpenedAsCopyDestination

Marca Significado
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) Indica que el archivo se está abriendo como archivo de origen para una copia de archivo.
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) Indica que el archivo se está abriendo como archivo de destino para una copia de archivo.

La presencia de una de las marcas anteriores no es suficiente para asegurarse de que las operaciones de lectura y escritura (operaciones de E/S) en el objeto de archivo sean de confianza, ya que cualquier proceso en modo de usuario puede proporcionar estas marcas en tiempo de creación.

EaBuffer

Puntero al búfer de atributos extendidos.

EaLength

Longitud del búfer al que Apunta EaBuffer .

DualOplockKeys

Comentarios

En el ejemplo siguiente se muestra cómo proporcionar una estructura de EXTENDED_CREATE_INFORMATION a NtCreateFile, encapsulando correctamente EaBuffer y 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 obtener más información, consulte Copia de archivos en modo kernel y detección de escenarios de archivos de copia.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 11, versión 22H2
Encabezado wdm.h (incluya Wdm.h)

Consulte también

IoCheckFileObjectOpenedAsCopyDestination

IoCheckFileObjectOpenedAsCopySource

NtCopyFileChunk

NtCreateFile