Funzione FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)
Il FltAllocateExtraCreateParameterFromLookasideList routine alloca il pool di memoria da un determinato elenco lookaside per una struttura di contesto di creazione aggiuntiva (ECP) e genera un puntatore a tale struttura.
Sintassi
NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
[in] PFLT_FILTER Filter,
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in, out] PVOID LookasideList,
[out] PVOID *EcpContext
);
Parametri
[in] Filter
Puntatore di filtro opaco al driver minifiltro. Questo puntatore identifica in modo univoco il driver minifiltro e rimane costante finché il driver minifiltro viene caricato.
[in] EcpType
Puntatore a un GUID che indica il tipo della struttura del contesto ECP. Per altre informazioni, vedere Uso dei GUID nei driver.
[in] SizeOfContext
Dimensioni, in byte, della struttura del contesto ECP.
[in] Flags
Definisce le opzioni di allocazione del pool. Se il valore del parametro SizeOfContext è maggiore delle dimensioni, in byte, dell'elenco lookaside specificato, la struttura del contesto ECP verrà allocata dal pool di sistema anziché dall'elenco lookaside. In questo caso, se il parametro flag contiene il valore del flag di bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, il pool di sistema allocato dalla routine verrà addebitato sulla quota di memoria del processo corrente. Per altre informazioni, vedere il parametro flag di FltAllocateExtraCreateParameter. Nel caso più tipico in cui la memoria per la struttura del contesto ECP viene allocata dall'elenco lookaside, il flag di bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA non viene utilizzato dalla routine.
[in, optional] CleanupCallback
Puntatore facoltativo a una routine di callback di pulizia definita da minifilter di tipo PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. La routine di callback di pulizia viene chiamata quando viene eliminata la struttura del contesto ECP. Impostare questo parametro su NULL se non è applicabile una routine di callback di pulizia.
[in, out] LookasideList
Puntatore a un elenco lookaside inizializzato da cui tentare di allocare il pool (per la struttura del contesto ECP). Per inizializzare l'elenco lookaside, utilizzare la routine FltInitExtraCreateParameterLookasideList.
[out] EcpContext
Riceve un puntatore alla struttura di contesto ECP allocata. Se la routine non è riuscita ad allocare un pool sufficiente per la struttura del contesto ECP, EcpContext verrà NULL e la routine restituirà il codice di stato STATUS_INSUFFICIENT_RESOURCES.
Valore restituito
La routine FltAllocateExtraCreateParameterFromLookasideList può restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_INSUFFICIENT_RESOURCES | La routine FltAllocateExtraCreateParameterFromLookasideList non è stata in grado di allocare memoria sufficiente per una struttura di contesto ECP. In questo caso, EcpContext verrà NULL. |
STATUS_SUCCESS | La struttura del contesto ECP è stata allocata correttamente. In questo caso, un puntatore alla struttura allocata viene restituito dal parametro EcpContext. |
Osservazioni
Questa routine è disponibile a partire da Windows Vista.
Il FltAllocateExtraCreateParameterFromLookasideList routine alloca il pool di memoria per una struttura di contesto ECP dall'elenco di lookaside inizializzato o non di paging specificato. Tuttavia, se le dimensioni della struttura del contesto ECP (come definito dal parametro SizeOfContext) sono maggiori dell'elenco lookaside, la routine alloca in modo analogo la memoria dal pool di sistema di paging o non a paging.
Utilizzare la routine FltInitExtraCreateParameterLookasideList per inizializzare un elenco di ricerca del pool di paging o non di paging. Utilizzare la routine FltAllocateExtraCreateParameterFromLookasideList per allocare una struttura di contesto ECP dall'elenco lookaside e la routine FltFreeExtraCreateParameter per deallocare la struttura del contesto ECP.
Utilizzare la routine FltDeleteExtraCreateParameterLookasideList per liberare un elenco lookaside.
I driver devono liberare tutte le strutture di contesto ECP e gli elenchi lookaside creati prima dello scaricamento. Tuttavia, se un file system o un driver di filtro del file system collega un ECP a un ECP_LIST esistente o appena creato durante l'elaborazione di una richiesta di IRP_MJ_CREATE, questo ECP viene automaticamente pulito al termine dell'IRP. Di conseguenza, un driver di filtro non deve pulire gli ECP aggiunti in modo dinamico. In questo modo, l'ECP di un driver di filtro può essere propagato correttamente tra i punti di controllo, ovvero un processo che può richiedere la generazione di più richieste di IRP_MJ_CREATE.
Per altre informazioni sull'uso di elenchi lookaside con driver, vedere Using Lookaside Lists.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | fltkernel.h (include Fltkernel.h) |
libreria | FltMgr.lib |
IRQL | <= APC_LEVEL |
Vedere anche
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList