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

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK