Freigeben über


FsRtlAllocateExtraCreateParameterFromLookasideList-Funktion (ntifs.h)

Die FsRtlAllocateExtraCreateParameterFromLookasideList 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 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 Verwenden von zusätzlichen Parametern zum Erstellen von Parametern mit einem IRP_MJ_CREATE Operation.

[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 Lookaside-Liste ist, auf die der LookasideList Parameter verweist, FsRtlAllocateExtraCreateParameterFromLookasideList die ECP-Kontextstruktur aus dem Systempool anstelle der Lookaside-Liste zuordnet. Wenn der parameter Flags in diesem Fall den FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bitkennzeichnungswert enthält, wird der von FsRtlAllocateExtraCreateParameterFromLookasideList zugeordnete Systempool mit dem Speicherkontingent des aktuellen Prozesses belastet. Weitere Informationen zu Bitkennzeichnungswerten finden Sie im Flags Parameter von FsRtlAllocateExtraCreateParameter. Wenn FsRtlAllocateExtraCreateParameterFromLookasideList Speicher für die ECP-Kontextstruktur aus der Lookaside-Liste zuordnet, FsRtlAllocateExtraCreateParameterFromLookasideList ignoriert das FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA Bit-Flag.

[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

Zeiger auf eine initialisierte Lookaside-Liste, aus der FsRtlAllocateExtraCreateParameterFromLookasideList Versuche, 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 zuordnen konnte, FsRtlAllocateExtraCreateParameterFromLookasideList legt EcpContext auf NULL fest und gibt Statuscode 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 zuordnen. In diesem Fall ist der EcpContext Parameter NULL.
STATUS_SUCCESS Die ECP-Kontextstruktur wurde erfolgreich zugeordnet. In diesem Fall gibt FsRtlAllocateExtraCreateParameterFromLookasideList einen Zeiger auf die zugeordnete Struktur im EcpContext--Parameter zurück.

Bemerkungen

Verwenden Sie die FsRtlInitExtraCreateParameterLookasideList Routine, um eine seitenseitige oder nicht seitenseitige 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 ECP-Kontextstruktur zuzuordnen.

Verwenden Sie die FsRtlDeleteExtraCreateParameterLookasideList 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. Auf diese Weise kann der ECP eines Filtertreibers über die erneuten 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
mindestens unterstützte Client- FsRtlAllocateExtraCreateParameterFromLookasideList ist ab Windows Vista verfügbar.
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK