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
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint