Funzione FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

La routine FsRtlAllocateExtraCreateParameterFromLookasideList alloca il pool di memoria da un determinato elenco lookaside per una struttura di contesto ECP (Extra Create Parameter) e genera un puntatore a tale struttura.

Sintassi

NTSTATUS FsRtlAllocateExtraCreateParameterFromLookasideList(
  [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] EcpType

Puntatore a un GUID che indica il tipo di ECP per cui deve essere allocata una struttura di contesto. Per altre informazioni sugli ECP, vedere Uso di parametri di creazione aggiuntivi con un'operazione di IRP_MJ_CREATE.

[in] SizeOfContext

Dimensioni, in byte, della struttura di 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 a cui punta il parametro LookasideList , FsRtlAllocateExtraCreateParameterFromLookasideList alloca la struttura del contesto ECP dal pool di sistema anziché l'elenco lookaside. In questo caso, se il parametro Flags contiene il valore del flag di FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA bit, il pool di sistema allocato da FsRtlAllocateExtraCreateParameterFromLookasideList viene addebitato rispetto alla quota di memoria del processo corrente. Per altre informazioni sui valori del flag di bit, vedere il parametro Flags di FsRtlAllocateExtraCreateParameter. Nel caso più tipico, quando FsRtlAllocateExtraCreateParameterFromLookasideList alloca la memoria per la struttura di contesto ECP dall'elenco lookaside, FsRtlAllocateExtraCreateParameterFromLookasideList ignora il flag di FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA bit.

[in, optional] CleanupCallback

Puntatore facoltativo a una routine di callback di pulizia definita dal 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 FsRtlAllocateExtraCreateParameterFromLookasideList tenta di allocare pool (per la struttura di contesto ECP). Per inizializzare l'elenco lookaside, usare la routine FsRtlInitExtraCreateParameterLookasideList .

[out] EcpContext

Puntatore a una posizione che riceve un puntatore alla struttura di contesto ECP allocata. Se FsRtlAllocateExtraCreateParameterFromLookasideList non è riuscito a allocare un pool sufficiente per la struttura di contesto ECP, FsRtlAllocateExtraCreateParameterFromLookasideList imposta EcpContext su NULL e restituisce il codice di stato STATUS_INSUFFICIENT_RESOURCES.

Valore restituito

La routine FsRtlAllocateExtraCreateParameterFromLookasideList può restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INSUFFICIENT_RESOURCES La routine FsRtlAllocateExtraCreateParameterFromLookasideList non è stata in grado di allocare memoria sufficiente per una struttura di contesto ECP. In questo caso, il parametro EcpContext è NULL.
STATUS_SUCCESS La struttura del contesto ECP è stata allocata correttamente. In questo caso , FsRtlAllocateExtraCreateParameterFromLookasideList restituisce un puntatore alla struttura allocata nel parametro EcpContext .

Commenti

Usare la routine FsRtlInitExtraCreateParameterLookasideList per inizializzare un elenco lookaside del pool impaginato o non a pagina. Usare la routine FsRtlAllocateExtraCreateParameterFromLookasideList per allocare una struttura di contesto ECP dall'elenco lookaside e la routine FsRtlFreeExtraCreateParameter per deallocare la struttura del contesto ECP.

Usare la routine FsRtlDeleteExtraCreateParameterLookasideList per liberare un elenco lookaside.

I driver devono liberare tutte le strutture di contesto ECP e gli elenchi lookaside creati prima di scaricare. Tuttavia, se un driver di filtro file system o 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. Ciò consente a un driver di filtro di propagarsi correttamente tra i punti di ripetizione dell'analisi, 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
Client minimo supportato FsRtlAllocateExtraCreateParameterFromLookasideList è disponibile a partire da Windows Vista.
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK