Funzione FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)
La routine FltAllocateExtraCreateParameterFromLookasideList 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 minifilter. Questo puntatore identifica in modo univoco il driver minifilter e rimane costante finché il driver minifilter 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
Dimensione, 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 di contesto ECP verrà allocata dal pool di sistema anziché dall'elenco lookaside. In questo caso, se il parametro Flags contiene il valore del flag di bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, il pool di sistema allocato dalla routine verrà addebitato in base alla quota di memoria del processo corrente. Per altre informazioni, vedere il parametro Flags 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 usato 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 una routine di callback di pulizia non è applicabile.
[in, out] LookasideList
Puntatore a un elenco lookaside inizializzato da cui tentare di allocare il pool (per la struttura di contesto ECP). Per inizializzare l'elenco lookaside, utilizzare la routine FltInitExtraCreateParameterLookasideList .
[out] EcpContext
Riceve un puntatore alla struttura del contesto ECP allocata. Se la routine non è riuscita ad allocare un pool sufficiente per la struttura del contesto ECP, EcpContext sarà 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 sarà NULL. |
STATUS_SUCCESS | La struttura del contesto ECP è stata allocata correttamente. In questo caso, un puntatore alla struttura allocata viene restituito dal parametro EcpContext . |
Commenti
Questa routine è disponibile a partire da Windows Vista.
La routine FltAllocateExtraCreateParameterFromLookasideList alloca il pool di memoria per una struttura di contesto ECP dall'elenco lookaside inizializzato o non di paging specificato. Tuttavia, se le dimensioni della struttura di 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 di paging.
Utilizzare la routine FltInitExtraCreateParameterLookasideList per inizializzare un elenco lookaside del pool impaginato 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 dinamicamente. In questo modo, l'ECP di un driver di filtro deve essere propagato correttamente tra i punti di analisi, 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 Uso di Lookaside Elenchi.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | fltkernel.h (include Fltkernel.h) |
Libreria | FltMgr.lib |
IRQL | <= APC_LEVEL |
Vedi anche
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList