Partager via


IO_DRIVER_CREATE_CONTEXT structure (ntddk.h)

La structure IO_DRIVER_CREATE_CONTEXT est utilisée pour passer 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 obtenir des informations importantes, consultez la section Notes suivante.

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 passer des paramètres de création supplémentaires à la routine IoCreateFileEx , ce membre est un pointeur vers l’objet d’appareil auquel 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 de 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 a la valeur NULL, la demande est envoyée à l’objet de périphérique en haut de la pile de pilotes.

TxnParameters

Pointeur vers une transaction que vous souhaitez 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 que la structure puisse être utilisée.

Les membres de la structure IO_DRIVER_CREATE_CONTEXT (à l’exception du membre Size ) fonctionnent en tant que paramètres supplémentaires pour les 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 (ECP) supplémentaires. Chaque entrée ECP (structure de contexte ECP) dans la liste ECP (ECP_LIST structure) fonctionne comme un paramètre create 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 à la structure ECP_LIST. Le système d’exploitation ne libère pas automatiquement ECP_LIST structures. 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 ECP_LIST structures. 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 des fournisseurs d’environnement sont utilisés, ils doivent être créés, manipulés et libérés à 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 section Voir aussi ci-dessous répertorie un grand nombre de ces routines obligatoires.

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

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

Configuration requise

Condition requise Valeur
En-tête ntddk.h (inclure 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