Condividi tramite


Funzione FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

Il FsRtlAllocateExtraCreateParameterFromLookasideList 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 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 Using Extra Create Parameters with an IRP_MJ_CREATE Operation.

[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 a cui punta il parametro LookasideList , FsRtlAllocateExtraCreateParameterFromLookasideList alloca la struttura del contesto ECP 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 da FsRtlAllocateExtraCreateParameterFromLookasideList viene addebitato in base alla quota di memoria del processo corrente. Per altre informazioni sui valori dei flag di bit, vedere il parametro flag di FsRtlAllocateExtraCreateParameter. Nel caso più tipico, quando FsRtlAllocateExtraCreateParameterFromLookasideList alloca memoria per la struttura di contesto ECP dall'elenco lookaside, FsRtlAllocateExtraCreateParameterFromLookasideList ignora il flag di bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA.

[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 FsRtlAllocateExtraCreateParameterFromLookasideList tenta di allocare pool (per la struttura di contesto ECP). Per inizializzare l'elenco lookaside, utilizzare la routine FsRtlInitExtraCreateParameterLookasideList.

[out] EcpContext

Puntatore a una posizione che riceve un puntatore alla struttura di contesto ECP allocata. Se FsRtlAllocateExtraCreateParameterFromLookasideList non è riuscito ad 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.

Osservazioni

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

Utilizzare la routine FsRtlDeleteExtraCreateParameterLookasideList 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 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 Using Lookaside Lists.

Fabbisogno

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

Vedere anche

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK