EXTENDED_CREATE_INFORMATION structure (wdm.h)
La structure EXTENDED_CREATE_INFORMATION est le champ EaBuffer dans NtCreateFile lorsque l’indicateur FILE_CONTAINS_EXTENDED_CREATE_INFORMATION est défini dans le paramètre CreateOption de NtCreateFile.
Syntaxe
typedef struct _EXTENDED_CREATE_INFORMATION {
LONGLONG ExtendedCreateFlags;
PVOID EaBuffer;
ULONG EaLength;
PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;
Membres
ExtendedCreateFlags
Indicateurs pour la création étendue. ExtendedCreateFlags peut avoir l’une des valeurs suivantes. Lorsque l’un de ces indicateurs est spécifié, l’objet file de NtCreateFile est marqué comme ouvert pour l’intention de copie dans son FileObjectExtension. Les filtres peuvent case activée pour cet état stocké en appelant IoCheckFileObjectOpenedAsCopySource ou IoCheckFileObjectOpenedAsCopyDestination
Indicateur | Signification |
---|---|
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) | Indique que le fichier est ouvert en tant que fichier source pour une copie de fichier. |
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) | Indique que le fichier est ouvert en tant que fichier de destination pour une copie de fichier. |
La présence de l’un des indicateurs ci-dessus n’est pas suffisante pour garantir que la lecture/écriture (opérations d’E/S) sur l’objet fichier est fiable, car tout processus en mode utilisateur peut fournir ces indicateurs au moment de la création.
EaBuffer
Pointeur vers la mémoire tampon des attributs étendus.
EaLength
Longueur de la mémoire tampon vers laquelle EaBuffer pointe.
DualOplockKeys
Remarques
L’exemple suivant montre comment fournir une structure EXTENDED_CREATE_INFORMATION à NtCreateFile, en encapsulant correctement EaBuffer et EaLength en interne.
// 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));
Pour plus d’informations, consultez Copie de fichiers en mode noyau et détection des scénarios de fichier de copie.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 11, version 22H2 |
En-tête | wdm.h (include Wdm.h) |
Voir aussi
IoCheckFileObjectOpenedAsCopyDestination