Freigeben über


FltAllocateExtraCreateParameterFromLookasideList-Funktion (fltkernel.h)

Die FltAllocateExtraCreateParameterFromLookasideList Routine weist speicherpool aus einer bestimmten Lookaside-Liste für eine zusätzliche Create-Parameter-Kontextstruktur (ECP) zu und generiert einen Zeiger auf diese Struktur.

Syntax

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
);

Parameter

[in] Filter

Undurchsichtiger Filterzeiger auf den Minifiltertreiber. Dieser Zeiger identifiziert den Minifiltertreiber eindeutig und bleibt konstant, solange der Minifiltertreiber geladen wird.

[in] EcpType

Zeigen Sie auf eine GUID, die den Typ der ECP-Kontextstruktur angibt. Weitere Informationen finden Sie unter Verwenden von GUIDs in Treibern.

[in] SizeOfContext

Die Größe der ECP-Kontextstruktur in Bytes.

[in] Flags

Definiert Poolzuordnungsoptionen. Wenn der Wert des SizeOfContext--Parameters größer als die Größe der angegebenen Lookaside-Liste ist, wird die ECP-Kontextstruktur anstelle der Lookaside-Liste aus dem Systempool zugewiesen. Wenn der parameter Flags in diesem Fall den FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitflaggwert enthält, wird der vom Routine zugewiesene Systempool mit dem Speicherkontingent des aktuellen Prozesses belastet. Weitere Informationen finden Sie im Flags Parameter von FltAllocateExtraCreateParameter. Im typischeren Fall, wenn speicher für die ECP-Kontextstruktur aus der Lookaside-Liste zugewiesen wird, wird das FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bit-Flag nicht von der Routine verwendet.

[in, optional] CleanupCallback

Optionaler Zeiger auf eine minifilterdefinierte Bereinigungsrückrufroutine vom Typ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Die Bereinigungsrückrufroutine wird aufgerufen, wenn die ECP-Kontextstruktur gelöscht wird. Legen Sie diesen Parameter auf NULL- fest, wenn keine Bereinigungsrückrufroutine anwendbar ist.

[in, out] LookasideList

Zeigen Sie auf eine initialisierte Lookaside-Liste, aus der versucht werden soll, einen Pool zuzuordnen (für die ECP-Kontextstruktur). Verwenden Sie zum Initialisieren der Lookaside-Liste die FltInitExtraCreateParameterLookasideList Routine.

[out] EcpContext

Empfängt einen Zeiger auf die zugeordnete ECP-Kontextstruktur. Wenn die Routine nicht genügend Pool für die ECP-Kontextstruktur zuordnen konnte, wird EcpContext-NULL-, und die Routine gibt statuscode STATUS_INSUFFICIENT_RESOURCES zurück.

Rückgabewert

Die FltAllocateExtraCreateParameterFromLookasideList Routine kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES Die FltAllocateExtraCreateParameterFromLookasideList Routine konnte nicht genügend Arbeitsspeicher für eine ECP-Kontextstruktur zuordnen. In diesem Fall wird EcpContext-NULL-.
STATUS_SUCCESS Die ECP-Kontextstruktur wurde erfolgreich zugeordnet. In diesem Fall wird ein Zeiger auf die zugeordnete Struktur vom EcpContext Parameter zurückgegeben.

Bemerkungen

Diese Routine ist ab Windows Vista verfügbar.

Die FltAllocateExtraCreateParameterFromLookasideList Routine weist speicherpools für eine ECP-Kontextstruktur aus der angegebenen initialisierten paged- oder nicht seitenseitigen Lookaside-Liste zu. Wenn die Größe der ECP-Kontextstruktur (wie durch den SizeOfContext Parameter definiert) jedoch größer als die Lookaside-Liste ist, weist die Routine analog Speicher aus dem ausgelagerten oder nicht ausgelagerten Systempool zu.

Verwenden Sie die FltInitExtraCreateParameterLookasideList Routine, um eine seitenseitige oder nicht ausgelagerte Pool-Lookaside-Liste zu initialisieren. Verwenden Sie die FltAllocateExtraCreateParameterFromLookasideList Routine, um eine ECP-Kontextstruktur aus der Lookaside-Liste zuzuweisen, und die FltFreeExtraCreateParameter Routine, um die ECP-Kontextstruktur zuzuordnen.

Verwenden Sie die FltDeleteExtraCreateParameterLookasideList Routine, um eine Lookaside-Liste freizulassen.

Treiber müssen alle ECP-Kontextstrukturen und Lookaside-Listen freigeben, die sie vor dem Entladen erstellen. Wenn jedoch ein Dateisystem- oder Dateisystemfiltertreiber ein ECP an eine vorhandene oder neu erstellte ECP_LIST anfügt, während eine IRP_MJ_CREATE-Anforderung verarbeitet wird, wird dieses ECP automatisch bereinigt, wenn das IRP abgeschlossen ist. Daher muss ein Filtertreiber keine ECPs bereinigen, die dynamisch hinzugefügt werden. Dadurch kann der ECP eines Filtertreibers über die Analysepunkte hinweg ordnungsgemäß verteilt werden – ein Prozess, der mehrere IRP_MJ_CREATE Anforderungen generieren kann.

Weitere Informationen zur Verwendung von Lookaside-Listen mit Treibern finden Sie unter Using Lookaside Lists.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
IRQL- <= APC_LEVEL

Siehe auch

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx-

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK