EXTENDED_CREATE_INFORMATION struttura (wdm.h)
La struttura EXTENDED_CREATE_INFORMATION è il campo EaBuffer in NtCreateFile quando il flag di FILE_CONTAINS_EXTENDED_CREATE_INFORMATION è impostato nel parametro CreateOption di NtCreateFile.
Sintassi
typedef struct _EXTENDED_CREATE_INFORMATION {
LONGLONG ExtendedCreateFlags;
PVOID EaBuffer;
ULONG EaLength;
PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;
Members
ExtendedCreateFlags
Flag per la creazione estesa. ExtendedCreateFlags può essere uno dei valori seguenti. Quando viene specificato uno di questi flag, l'oggetto file NtCreateFile viene contrassegnato come aperto per la finalità di copia nel fileObjectExtension. I filtri possono controllare lo stato archiviato chiamando IoCheckFileObjectOpenedAsCopySource o IoCheckFileObjectOpenedAsCopyDestination
Contrassegno | Significato |
---|---|
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001 ) | Segnala che il file viene aperto come file di origine per una copia di file. |
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002 ) | Segnala che il file viene aperto come file di destinazione per una copia di file. |
La presenza di uno dei flag precedenti non è sufficiente per garantire che le operazioni di lettura/scrittura (operazioni di I/O) sull'oggetto file siano attendibili, poiché qualsiasi processo in modalità utente può fornire questi flag in fase di creazione.
EaBuffer
Puntatore al buffer degli attributi estesi.
EaLength
Lunghezza del buffer a cui punta EaBuffer .
DualOplockKeys
Commenti
Nell'esempio seguente viene illustrato come fornire una struttura EXTENDED_CREATE_INFORMATION a NtCreateFile, eseguendo il wrapping corretto di EaBuffer e 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));
Per altre informazioni, vedere Copia file in modalità kernel e rilevamento di scenari di file di copia.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 11, versione 22H2 |
Intestazione | wdm.h (include Wdm.h) |
Vedi anche
IoCheckFileObjectOpenedAsCopyDestination