Freigeben über


FsRtlAllocateExtraCreateParameterFromLookasideList-Funktion (ntifs.h)

Die FsRtlAllocateExtraCreateParameterFromLookasideList-Routine weist einen Arbeitsspeicherpool aus einer bestimmten Lookaside-Liste für eine ECP-Kontextstruktur (Extra Create Parameter) zu und generiert einen Zeiger auf diese Struktur.

Syntax

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

Parameter

[in] EcpType

Zeiger auf eine GUID, die den Typ des ECP angibt, für den eine Kontextstruktur zugewiesen werden soll. Weitere Informationen zu ECPs finden Sie unter Using Extra Create Parameters with an IRP_MJ_CREATE Operation.For more information about ECPs, see Using Extra Create Parameters with an IRP_MJ_CREATE Operation.

[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 LookasideList-Liste ist, auf die der LookasideList-Parameter verweist, ordnet FsRtlAllocateExtraCreateParameterFromLookasideList die ECP-Kontextstruktur aus dem Systempool anstelle der Lookaside-Liste zu. Wenn der Flags-Parameter in diesem Fall den Wert FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitflags enthält, wird der von FsRtlAllocateExtraCreateParameterFromLookasideList zugeordnete Systempool mit dem Speicherkontingent des aktuellen Prozesses belastet. Weitere Informationen zu Bitflagswerten finden Sie im Flags-Parameter von FsRtlAllocateExtraCreateParameter. Im typischeren Fall, wenn FsRtlAllocateExtraCreateParameterFromLookasideList Arbeitsspeicher für die ECP-Kontextstruktur aus der Lookaside-Liste zuweist, ignoriert FsRtlAllocateExtraCreateParameterFromLookasideList das FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitflag.

[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, aus der FsRtlAllocateExtraCreateParameterFromLookasideList versucht, einen Pool zuzuweisen (für die ECP-Kontextstruktur). Verwenden Sie zum Initialisieren der Lookaside-Liste die FsRtlInitExtraCreateParameterLookasideList-Routine .

[out] EcpContext

Zeiger auf eine Position, die einen Zeiger auf die zugeordnete ECP-Kontextstruktur empfängt. Wenn FsRtlAllocateExtraCreateParameterFromLookasideList nicht genügend Pool für die ECP-Kontextstruktur zuweisen konnte, legt FsRtlAllocateExtraCreateParameterFromLookasideListEcpContext auf NULL fest und gibt status Code STATUS_INSUFFICIENT_RESOURCES zurück.

Rückgabewert

Die FsRtlAllocateExtraCreateParameterFromLookasideList-Routine kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES Die FsRtlAllocateExtraCreateParameterFromLookasideList-Routine konnte nicht genügend Arbeitsspeicher für eine ECP-Kontextstruktur zuweisen. In diesem Fall ist der EcpContext-ParameterNULL.
STATUS_SUCCESS Die ECP-Kontextstruktur wurde erfolgreich zugeordnet. In diesem Fall gibt FsRtlAllocateExtraCreateParameterFromLookasideList einen Zeiger auf die zugeordnete Struktur im EcpContext-Parameter zurück.

Hinweise

Verwenden Sie die FsRtlInitExtraCreateParameterLookasideList-Routine , um eine ausgelagerte oder nicht ausgelagerte Pool-Lookaside-Liste zu initialisieren. Verwenden Sie die FsRtlAllocateExtraCreateParameterFromLookasideList-Routine , um eine ECP-Kontextstruktur aus der Lookaside-Liste zuzuweisen, und die FsRtlFreeExtraCreateParameter-Routine , um die Zuordnung der ECP-Kontextstruktur zu beheben.

Verwenden Sie die FsRtlDeleteExtraCreateParameterLookasideList-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 die 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, bei dem 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
Unterstützte Mindestversion (Client) FsRtlAllocateExtraCreateParameterFromLookasideList ist ab Windows Vista verfügbar.
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK