Partager via


structure IO_DRIVER_CREATE_CONTEXT (ntddk.h)

La structure IO_DRIVER_CREATE_CONTEXT est utilisée pour transmettre des paramètres supplémentaires aux routines IoCreateFileEx et FltCreateFileEx2. Cette structure est facultative.

La routine IoCreateFileEx est utilisée par les pilotes de filtre hérités et la routine FltCreateFileEx2 est utilisée par les pilotes minifilter.

Syntaxe

typedef struct _IO_DRIVER_CREATE_CONTEXT {
  CSHORT               Size;
  struct _ECP_LIST     *ExtraCreateParameter;
  PVOID                DeviceObjectHint;
  PTXN_PARAMETER_BLOCK TxnParameters;
  PESILO               SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;

Membres

Size

Membre en lecture seule initialisé par la routine IoInitializeDriverCreateContext.

ExtraCreateParameter

Pointeur vers une structure ECP_LIST, qui contient une liste d’entrées de paramètre de création supplémentaire (ECP). Pour plus d’informations, consultez la section remarques suivantes.

DeviceObjectHint

Si IO_DRIVER_CREATE_CONTEXT est utilisé pour passer des paramètres de création supplémentaires à la routine FltCreateFileEx2, ce membre doit être NULL.

Si IO_DRIVER_CREATE_CONTEXT est utilisé pour transmettre des paramètres de création supplémentaires à la routine IoCreateFileEx, ce membre est un pointeur vers l’objet d’appareil vers lequel la demande de création sera envoyée. L’objet d’appareil doit être un filtre hérité ou un objet de périphérique de système de fichiers dans la pile de pilotes du système de fichiers pour le volume sur lequel réside le fichier ou le répertoire. Dans le cas IoCreateFileEx, ce paramètre est facultatif et peut être NULL. Si ce paramètre est null, la requête est envoyée à l’objet de l’appareil en haut de la pile de pilotes.

TxnParameters

Pointeur vers une transaction à associer à l’opération de création. L’opération de création fait partie de la transaction si la valeur de ce membre est un pointeur valide vers la transaction. Si la valeur de ce membre est NULL, l’opération de création ne fait pas partie d’une transaction.

SiloContext

Conteneur sur lequel réside le fichier. Ce membre a été introduit dans Windows 10 version 1607.

Remarques

La structure IO_DRIVER_CREATE_CONTEXT peut être allouée à partir d’un pool paginé ou non paginé. La routine IoInitializeDriverCreateContext doit initialiser la structure IO_DRIVER_CREATE_CONTEXT avant de pouvoir utiliser la structure.

Les membres de la structure IO_DRIVER_CREATE_CONTEXT (à l’exception du membre Size ) sont des paramètres supplémentaires aux routines IoCreateFileEx et FltCreateFileEx2. Par rapport à l’interface de la routine IoCreateFileEx et FltCreateFileEx2, les informations suivantes peuvent être utiles :

  • Une structure ECP_LIST contient une liste d’entrées de paramètre de création supplémentaire (ECP). Chaque entrée ECP (structure de contexte ECP) dans la liste ECP (structure ECP_LIST) est un paramètre de création supplémentaire pour IoCreateFileEx et FltCreateFileEx2.

    Pour spécifier un ecP dans le cadre d’une opération de création, initialisez le membre ExtraCreateParameter de la structure IO_DRIVER_CREATE_CONTEXT avec la routine correcte :

    • Pour les pilotes de filtre hérités, la routine FsRtlAllocateExtraCreateParameterList doit être utilisée pour allouer le pool de mémoire pour la structure ECP_LIST. Le système d’exploitation ne libère pas automatiquement les structures ECP_LIST. Au lieu de cela, une fois la structure ECP_LIST allouée, elle doit finalement être libérée à l’aide de la routine FsRtlFreeExtraCreateParameterList.

    • Pour les pilotes minifilter, la routine FltAllocateExtraCreateParameterList doit être utilisée pour allouer le pool de mémoire pour la structure ECP_LIST. Le système d’exploitation ne libère pas automatiquement les structures ECP_LIST. Au lieu de cela, une fois la structure ECP_LIST allouée, elle doit finalement être libérée à l’aide de la routine FltFreeExtraCreateParameterList.

    Si les PPE sont utilisées, elles doivent être créées, manipulées et libérées à l’aide des routines appropriées. Par exemple, les pilotes minifilter utilisent la routine FltInsertExtraCreateParameter pour insérer une entrée ECP dans une liste ECP. La suivante consultez également section répertorie la plupart de ces routines requises.

    Lors du retour d’un appel à IoCreateFileEx ou FltCreateFileEx2, la liste ECP n’est pas modifiée et peut être passée à des supplémentaires ioCreateFileEx ou fltCreateFileEx2 appels pour les nouvelles opérations de création.

  • Pour créer ou ouvrir un fichier dans le contexte d’une transaction, définissez la TxnParameters membre de la structure IO_DRIVER_CREATE_CONTEXT sur la valeur retournée par la routine IoGetTransactionParameterBlock.

Exigences

Exigence Valeur
d’en-tête ntddk.h (include Ntddk.h, Ntifs.h, Fltkernel.h)

Voir aussi

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

ioCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext