Auf Englisch lesen

Teilen ü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 wird.

Syntax

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

Angehörige

ExtendedCreateFlags

Flags für die erweiterte Erstellung. ExtendedCreateFlags kann einer der folgenden Werte entsprechen. Wenn eines dieser Flags angegeben wird, wird NtCreateFile-'Dateiobjekts als geöffnet für Kopierabsicht in der FileObjectExtension-markiert. Filter können diesen gespeicherten Zustand überprüfen, indem IoCheckFileObjectOpenedAsCopySource- oder IoCheckFileObjectOpenedAsCopyDestination-

Flagge 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

Zeigen Sie auf den Puffer für erweiterte Attribute.

EaLength

Die Länge des Puffers, auf den EaBuffer verweist.

DualOplockKeys

Bemerkungen

Im folgenden Beispiel wird gezeigt, wie Sie eine EXTENDED_CREATE_INFORMATION Struktur für NtCreateFile-bereitstellen, die die EaBuffer- ordnungsgemäß umschließen und intern eaLength-.

C++
// 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 Kernelmodus Dateikopie und Erkennen von Kopierdateiszenarien.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 11, Version 22H2
Header- wdm.h (include Wdm.h)

Siehe auch

IoCheckFileObjectOpenedAsCopyDestination-

IoCheckFileObjectOpenedAsCopySource-

NtCopyFileChunk-

NtCreateFile-