MmProtectDriverSection-Funktion (wdm.h)
Der schreibgeschützte MmProtectDriverSection schützt einen Abschnitt eines geladenen Treibers mithilfe der Dienste, die vom virtual Secure Mode (VSM) bereitgestellt werden.
Syntax
NTSTATUS MmProtectDriverSection(
[in] PVOID AddressWithinSection,
[in] SIZE_T Size,
[in] ULONG Flags
);
Parameter
[in] AddressWithinSection
Ein Zeiger auf einen gültigen Datenabschnitt, der zu einem Treiberimage gehört. Der Datenabschnitt sollte nicht bereits ausführbar sein. Andernfalls schlägt die API mit STATUS_INVALID_PAGE_PROTECTION fehl.
[in] Size
Dieser Parameter ist derzeit für die zukünftige Verwendung reserviert und sollte auf 0 festgelegt werden.
[in] Flags
Geben Sie die Flags an, die den Vorgang steuern: MM_PROTECT_DRIVER_SECTION_ALLOW_UNLOAD – Wird verwendet, um anzugeben, dass der Treiber nach dem Schutz des Abschnitts weiterhin entladen werden kann.
Rückgabewert
MmProtectDriverSection gibt einen NTSTATUS-Wert zurück, der das Ergebnis des Vorgangs angibt:
Rückgabewert | BESCHREIBUNG |
---|---|
|
Der Vorgang wurde erfolgreich abgeschlossen, und der Treiberabschnitt wurde erfolgreich geschützt. |
|
Der virtuelle sichere Modus (Virtual Secure Mode, VSM) ist derzeit deaktiviert, sodass die Funktion den Treiberabschnitt nicht schützen kann. |
|
Es wurde eine ungültige Flag-Bitmaske (oder eine Nicht-Null-Größe) angegeben. |
|
Der Abschnitt des Treibers, der durch eine darin enthaltene Adresse angegeben wird, wird durch einen ungültigen Schutz zugeordnet (ausführbare Abschnitte werden nicht unterstützt). |
|
Der angegebene Abschnitt gehört zu einem Treiber, der von dieser API nicht unterstützt wird (siehe Hinweise). |
|
Der angegebene Abschnitt kann verworfen werden oder enthält Lücken, die nicht durch physischen Arbeitsspeicher unterstützt werden. Dies geschieht in der Regel, wenn eine Abschnittsausrichtung größer als eine Seitengröße ist. |
|
Der angegebene Abschnitt wurde bereits geschützt. |
Hinweise
Die Routine schützt den physischen Arbeitsspeicher, der den Abschnitt des Treibers unterstützt, mithilfe der SLAT-Tabelle (Adressübersetzung der zweiten Ebene), die vom VSM verwaltet wird. Der geschützte Arbeitsspeicher wird für das gesamte Betriebssystem schreibgeschützt.
Beachten Sie, dass es nach dem Schutz des Abschnitts keine Möglichkeit gibt, den Schutz zu entfernen. Dies ist beabsichtigt: Die einzige Ausnahme dieser Regel ist, wenn der Aufrufer das flag MM_PROTECT_DRIVER_SECTION_ALLOW_UNLOAD angibt. In diesem Fall wird der geschützte Abschnitt freigegeben und freigegeben, wenn der Zieltreiber entladen wird.
Treiber, die großen Seiten und Sitzungstreibern zugeordnet sind, werden von der MmProtectDriverSection-API nicht unterstützt. Darüber hinaus können Aufrufer dieser API nicht anfordern, einen verwerfbaren Abschnitt oder einen Abschnitt zu schützen, der die IAT (Import Address Table) enthält.
Wenn der Aufrufer eine Adresse angibt, die nicht zu einem geladenen Treiberimage gehört, wird das System mit der MEMORY_MANAGEMENT-Fehlerüberprüfung abgestürzt (Typ 0x1100).
Aufrufer der MmProtectDriverSection-API sollten unter IRQL <= APC_LEVEL ausgeführt werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows Insider 19548. |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |