Freigeben über


MmUnlockPagableImageSection-Funktion (wdm.h)

Die MmUnlockPagableImageSection Routine gibt einen Abschnitt mit Treibercode- oder Treiberdaten frei, der zuvor mit MmLockPagableCodeSection, MmLockPagableDataSection oder MmLockPagableSectionByHandlegesperrt wurde, sodass der Abschnitt erneut ausgelagert werden kann.

Syntax

void MmUnlockPagableImageSection(
  [in] PVOID ImageSectionHandle
);

Parameter

[in] ImageSectionHandle

Gibt das handle an, das von einem Aufruf von MmLockPagableCodeSection oder MmLockPagableDataSectionzurückgegeben wird.

Rückgabewert

Nichts

Bemerkungen

Der Handle für den seitenfähigen Abschnitt eines Treibers darf nicht freigegeben werden, wenn der Treiber über herausragende IRPs in seiner Gerätewarteschlange oder internen Warteschlange(n) verfügt. Ein Aufruf von MmUnlockPagableImageSection stellt die Seitenierbarkeit dieses gesamten Abschnitts wieder her, wenn keine weiteren Verweise auf das Handle für diesen Abschnitt vorhanden sind.

Der Speicher-Manager verwaltet die Referenzanzahl für den Handle für einen Abschnitt. Ein ausgelagerter Abschnitt ist nur verfügbar, wenn die Bezugsanzahl null ist. Jede Sperranforderung erhöht die Anzahl; Jede Entsperranforderung erhöht die Anzahl. Ein Treiber muss einen Abschnitt so oft entsperren, wie er einen Abschnitt sperrt, damit der Abschnitt ausgelagert werden kann.

Ein Handle ist immer gültig, unabhängig davon, was die Anzahl ist. Wenn die Anzahl eines Handles null ist und ein Aufruf an MmLockPagableSectionByHandle-erfolgt, wird die Anzahl auf eins festgelegt, und wenn der Abschnitt ausgelagert wurde, wird er ausgelagert.

In den meisten Fällen wird MmUnlockPagableImageSection aufgerufen, bevor die Unload Routine eines Treibers aufgerufen wird. Das heißt, ein Treiber mit einem seitenfähigen Abschnitt hat wahrscheinlich seine DispatchClose und/oder DispatchShutdown Routineaufruf MmUnlockPagableImageSection, bevor die Unload Routine aufgerufen wird. Beachten Sie jedoch, dass sie in unloadbaren Treibern ausgeführt werden müssen, um alle ausgelagerten Abschnitte freizugeben, bevor der Treiber selbst aus dem System entladen wird.

Weitere Informationen zum Auslagerungscode und zu Daten finden Sie unter Making Drivers Pageable.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <=APC_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm)

Siehe auch

MmLockPagableCodeSection

MmLockPagableDataSection-

MmLockPagableSectionByHandle-

MmPageEntireDriver-

MmResetDriverPaging