Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die MmProtectDriverSection schreibgeschützt schützt einen Abschnitt eines geladenen Treibers mithilfe der vom virtuellen sicheren Modus (Virtual Secure Mode, VSM) bereitgestellten Dienste.
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 zurzeit 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 noch 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 Kennzeichnungsbitmaske (oder eine Nicht-Null-Größe) angegeben. |
|
Der durch eine darin enthaltene Adresse angegebene Treiberabschnitt 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 ist verworfen oder enthält Lücken, die von keinem physischen Speicher 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. |
Bemerkungen
Die Routine schützt den physischen Speicher, der den Abschnitt des Treibers unter Verwendung der SLAT-Tabelle (Adressübersetzung auf zweiter Ebene) unterstützt, die vom VSM verwaltet wird. Der geschützte Speicher wird schreibgeschützt für das gesamte Betriebssystem erstellt.
Beachten Sie, dass nach dem Schutz des Abschnitts keine Möglichkeit zum Entfernen des Schutzes besteht. Dies ist beabsichtigt: Die einzige Ausnahme dieser Regel ist, wenn der Aufrufer das MM_PROTECT_DRIVER_SECTION_ALLOW_UNLOAD Flag angibt. Wenn der Zieltreiber entladen wird, wird in diesem Fall der geschützte Abschnitt freigegeben und freigegeben.
Treiber, die mit 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 verworfenen Abschnitt oder einen Abschnitt zu schützen, der das 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 Fehlerprüfung abgestürzt (Typ 0x1100).
Aufrufer der MmProtectDriverSection-API sollten unter IRQL-<= APC_LEVEL ausgeführt werden.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Verfügbar ab Windows Insider 19548. |
| Zielplattform- | Universal |
| Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL- | NtosKrnl.exe |
| IRQL- | <= APC_LEVEL |