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