Freigeben über


FltAllocateExtraCreateParameterFromLookasideList-Funktion (fltkernel.h)

Die FltAllocateExtraCreateParameterFromLookasideList-Routine weist einen Arbeitsspeicherpool aus einer bestimmten Lookaside-Liste für eine zusätzliche ECP-Kontextstruktur (Create Parameter) 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

Zeiger 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 Optionen für die Poolzuordnung. Wenn der Wert des SizeOfContext-Parameters größer als die Größe (in Bytes) der angegebenen Lookaside-Liste ist, wird die ECP-Kontextstruktur aus dem Systempool anstelle der Lookaside-Liste zugeordnet. Wenn der Flags-Parameter in diesem Fall den Wert FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitflags enthält, wird der von der Routine zugewiesene Systempool mit dem Speicherkontingent des aktuellen Prozesses belastet. Weitere Informationen finden Sie im Flags-Parameter von FltAllocateExtraCreateParameter . Im typischeren Fall, wenn Arbeitsspeicher für die ECP-Kontextstruktur aus der Lookaside-Liste zugewiesen wird, wird das FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitflag von der Routine nicht verwendet.

[in, optional] CleanupCallback

Optionaler Zeiger auf eine Minifilter-definierte Bereinigungsrückrufroutine vom Typ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Die Cleanup-Rü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

Zeiger auf eine initialisierte Suchliste, in der versucht werden soll, den Pool von (für die ECP-Kontextstruktur) zuzuweisen. 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 zuweisen konnte, ist EcpContextNULL, und die Routine gibt status Code 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 zuweisen. In diesem Fall ist EcpContextNULL.
STATUS_SUCCESS Die ECP-Kontextstruktur wurde erfolgreich zugeordnet. In diesem Fall wird vom EcpContext-Parameter ein Zeiger auf die zugeordnete Struktur zurückgegeben.

Hinweise

Diese Routine ist ab Windows Vista verfügbar.

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

Verwenden Sie die FltInitExtraCreateParameterLookasideList-Routine , um eine ausgelagerte 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 Zuordnung der ECP-Kontextstruktur zu beheben.

Verwenden Sie die FltDeleteExtraCreateParameterLookasideList-Routine , um eine Suchliste frei zu geben.

Treiber müssen alle ECP-Kontextstrukturen und Suchlisten freigeben, die sie vor dem Entladen erstellen. Wenn jedoch ein Dateisystem- oder Dateisystemfiltertreiber während der Verarbeitung einer IRP_MJ_CREATE Anforderung einen ECP an eine vorhandene oder neu erstellte ECP_LIST anfügt, wird dieser ECP automatisch bereinigt, wenn der IRP abgeschlossen ist. Daher muss ein Filtertreiber keine ecPs sauber, die dynamisch hinzugefügt werden. Dadurch kann das ECP eines Filtertreibers ordnungsgemäß über die Analysepunkte verteilt werden – ein Prozess, für den mehrere IRP_MJ_CREATE Anforderungen generiert werden müssen.

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

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
IRQL <= APC_LEVEL

Weitere Informationen

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK