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
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList