IO_DRIVER_CREATE_CONTEXT struttura (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 usata 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;

Members

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 aggiuntivi (ECP). Per informazioni importanti, vedere la sezione Osservazioni seguenti.

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 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 che si vuole 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.

Commenti

La struttura IO_DRIVER_CREATE_CONTEXT può essere allocata da un pool di pagine o non a pagine. 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 . Rispetto all'interfaccia della routine IoCreateFileEx e FltCreateFileEx2 , le informazioni seguenti possono essere utili:

  • Una struttura ECP_LIST contiene un elenco di voci di parametri di creazione aggiuntivi (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 membro ExtraCreateParameter della struttura IO_DRIVER_CREATE_CONTEXT con la routine corretta:

    • Per i driver di filtro legacy, la routine FsRtlAllocateExtraCreateParameterList deve essere usata 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 minifilter, la routine FltAllocateExtraCreateParameterList deve essere usata 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 gli ECP vengono usati, devono essere creati, manipolati e liberati usando le routine appropriate. Ad esempio, i driver minifilter usano la routine FltInsertExtraCreateParameter per inserire una voce ECP in un elenco ECP. Nella sezione Vedere anche molte di queste routine necessarie.

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

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

Requisiti

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

Vedi anche

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

FsRtlAllocateExtraCreateParameterList

FsRtlFreeExtraCreateParameterList

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetTransactionParameterBlock

IoInitializeDriverCreateContext