Freigeben über


EXTENDED_CREATE_INFORMATION-Struktur (wdm.h)

Die EXTENDED_CREATE_INFORMATION Struktur ist das EaBuffer-Feld in NtCreateFile , wenn das FILE_CONTAINS_EXTENDED_CREATE_INFORMATION-Flag im CreateOption-Parameter von NtCreateFile festgelegt ist.

Syntax

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

Member

ExtendedCreateFlags

Flags für die erweiterte Erstellung. ExtendedCreateFlags kann einer der folgenden Werte sein. Wenn eines dieser Flags angegeben wird, wird das Dateiobjekt von NtCreateFile in seinem FileObjectExtension als für die Kopierabsicht geöffnet markiert. Filter können diesen gespeicherten Zustand überprüfen, indem sie IoCheckFileObjectOpenedAsCopySource oder IoCheckFileObjectOpenedAsCopyDestination aufrufen.

Flag Bedeutung
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) Signalisiert, dass die Datei als Quelldatei für eine Dateikopie geöffnet wird.
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) Signalisiert, dass die Datei als Zieldatei für eine Dateikopie geöffnet wird.

Das Vorhandensein eines der oben genannten Flags reicht nicht aus, um sicherzustellen, dass Lese-/Schreibvorgänge (E/A-Vorgänge) für das Dateiobjekt vertrauenswürdig sind, da jeder Benutzermodusprozess diese Flags zur Erstellungszeit bereitstellen kann.

EaBuffer

Zeiger auf den Puffer für erweiterte Attribute.

EaLength

Länge des Puffers, auf den EaBuffer verweist.

DualOplockKeys

Hinweise

Das folgende Beispiel zeigt, wie Eine EXTENDED_CREATE_INFORMATION-Struktur für NtCreateFile bereitgestellt wird, wobei eaBuffer und EaLength intern ordnungsgemäß umschlossen werden.

// 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));

Weitere Informationen finden Sie unter Kopieren von Kernelmodusdateien und Erkennen von Kopierdateiszenarien.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 11, Version 22H2
Kopfzeile wdm.h (einschließen von Wdm.h)

Weitere Informationen

IoCheckFileObjectOpenedAsCopyDestination

IoCheckFileObjectOpenedAsCopySource

NtCopyFileChunk

NtCreateFile