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
[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
[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 |
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