Condividi tramite


struttura IO_DRIVER_CREATE_CONTEXT (ntddk.h)

La struttura IO_DRIVER_CREATE_CONTEXT viene usata per passare parametri aggiuntivi alle routine IoCreateFileEx e FltCreateFileEx2. Questa struttura è facoltativa.

La routine IoCreateFileEx viene utilizzata dai driver di filtro legacy e la routine FltCreateFileEx2 viene usata dai driver minifilter.

Sintassi

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;

Membri

Size

Membro di sola lettura inizializzato dalla routine IoInitializeDriverCreateContext.

ExtraCreateParameter

Puntatore a una struttura ECP_LIST, che contiene un elenco di voci di parametri di creazione aggiuntive (ECP). Per informazioni importanti, vedere la sezione osservazioni seguente.

DeviceObjectHint

Se IO_DRIVER_CREATE_CONTEXT viene usato per passare parametri di creazione aggiuntivi alla routine fltCreateFileEx2, questo membro deve essere NULL.

Se IO_DRIVER_CREATE_CONTEXT viene usato per passare parametri di creazione aggiuntivi alla routine IoCreateFileEx, questo membro è un puntatore all'oggetto dispositivo a cui verrà inviata la richiesta di creazione. L'oggetto dispositivo deve essere un oggetto dispositivo di filtro o file system legacy nello stack di driver del file system per il volume in cui risiede il file o la directory. Nel caso IoCreateFileEx, questo parametro è facoltativo e può essere NULL. Se questo parametro è NULL, la richiesta verrà inviata all'oggetto dispositivo nella parte superiore dello stack di driver.

TxnParameters

Puntatore a una transazione da associare all'operazione di creazione. L'operazione di creazione farà parte della transazione se il valore di questo membro è un puntatore valido alla transazione. Se il valore di questo membro è NULL, l'operazione di creazione non farà parte di una transazione.

SiloContext

Contenitore in cui risiede il file. Questo membro è stato introdotto in Windows 10 versione 1607.

Osservazioni

La struttura IO_DRIVER_CREATE_CONTEXT può essere allocata da un pool di pagine o non di paging. La routine IoInitializeDriverCreateContext deve inizializzare la struttura IO_DRIVER_CREATE_CONTEXT prima di poter usare la struttura.

I membri della struttura IO_DRIVER_CREATE_CONTEXT (escluso il membro Size ) come parametri aggiuntivi per le routine IoCreateFileEx e FltCreateFileEx2. In relazione all'interfaccia di IoCreateFileEx e FltCreateFileEx2, possono essere utili le informazioni seguenti:

  • Una struttura ECP_LIST contiene un elenco di voci aggiuntive di parametri di creazione (ECP). Ogni voce ECP (struttura di contesto ECP) nell'elenco ECP (struttura ECP_LIST) funge da parametro di creazione aggiuntivo per IoCreateFileEx e FltCreateFileEx2.

    Per specificare un ECP come parte di un'operazione di creazione, inizializzare il ExtraCreateParameter membro della struttura IO_DRIVER_CREATE_CONTEXT con la routine corretta:

    • Per i driver di filtro legacy, è necessario utilizzare la routine FsRtlAllocateExtraCreateParameterList per allocare il pool di memoria per la struttura ECP_LIST. Il sistema operativo non libera automaticamente ECP_LIST strutture. Al contrario, una volta allocata la struttura ECP_LIST, deve essere liberata usando la routine FsRtlFreeExtraCreateParameterList.

    • Per i driver minifiltri, è necessario utilizzare la routine FltAllocateExtraCreateParameterList per allocare il pool di memoria per la struttura ECP_LIST. Il sistema operativo non libera automaticamente ECP_LIST strutture. Al contrario, una volta allocata la struttura ECP_LIST, deve essere liberata usando la routine FltFreeExtraCreateParameterList.

    Se vengono usati gli ECP, devono essere creati, modificati e liberati usando le routine appropriate. Ad esempio, i driver minifiltro usano la routine FltInsertExtraCreateParameter per inserire una voce ECP in un elenco ECP. Nella sezione vedere anche sezione seguente sono elencate molte di queste routine obbligatorie.

    Al ritorno da una chiamata a IoCreateFileEx o FltCreateFileEx2, l'elenco ECP è invariato e può essere passato a ulteriori IoCreateFileEx o FltCreateFileEx2 chiamate per nuove operazioni di creazione.

  • Per creare o aprire un file nel contesto di una transazione, impostare il TxnParameters membro della struttura IO_DRIVER_CREATE_CONTEXT sul valore restituito dalla routine IoGetTransactionParameterBlock.

Fabbisogno

Requisito Valore
intestazione ntddk.h (include Ntddk.h, Ntifs.h, Fltkernel.h)

Vedere anche

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext