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