Fonction MmSecureVirtualMemoryEx (ntddk.h)

Cette routine sonde la plage d’adresses demandée et protège la plage d’adresses spécifiée contre que sa protection soit rendue plus restrictive et qu’elle soit supprimée.

Syntaxe

HANDLE MmSecureVirtualMemoryEx(
  PVOID  Address,
  SIZE_T Size,
  ULONG  ProbeMode,
  ULONG  Flags
);

Paramètres

Address

Pointeur vers l’adresse de base pour sonder et sécuriser.

Size

Spécifie la taille, en octets, de la plage à sécuriser.

ProbeMode

Spécifie la protection de page la plus restrictive autorisée. Utilisez PAGE_READWRITE pour spécifier que la plage d’adresses doit rester lisible et accessible en écriture, ou utilisez PAGE_READONLY pour spécifier que la plage d’adresses doit uniquement rester lisible.

ProbeMode Signification
PAGE_READWRITE La protection ne peut pas être remplacée par PAGE_NOACCESS ou PAGE_READONLY. Toutes les autres modifications de protection sont autorisées.
PAGE_READONLY La protection ne peut pas être remplacée par PAGE_NOACCESS. Toutes les autres modifications de protection sont autorisées.

Flags

Spécifie un ou plusieurs des indicateurs suivants :

Indicateur Description
MM_SECURE_EXCLUSIVE La sécurisation réussit uniquement s’il n’y a pas d’autres sécurités déjà épinglées sur le VAD en question.
MM_SECURE_NO_CHANGE Une fois appliquée, aucune modification de protection n’est autorisée pour la région d’adresse virtuelle fournie. La région peut toujours être supprimée si le processus est en cours de fermeture.
MM_SECURE_USER_MODE_ONLY La protection spécifiée par cette sécurisation ne sera appliquée qu’aux appels suivants à partir du mode utilisateur qui tentent de modifier la protection (les appelants en mode noyau contourneront cette sécurisation).
MM_SECURE_NO_INHERIT Si le processus est cloné, contrairement au processus parent, le VAD du processus enfant n’est pas sécurisé.

Valeur retournée

Retourne une valeur ressemblant à un handle à utiliser uniquement pour sécuriser la plage.

Si la plage n’a pas pu être verrouillée en raison de problèmes de protection, de mémoire non validée ou de paramètres non valides, cette routine retourne null.

Remarques

Utilisez MmSecureVirtualMemoryEx au lieu de MmSecureVirtualMemory si vous devez spécifier MM_SECURE_NO_CHANGE afin qu’aucune modification de la protection ne soit autorisée sur la vue fournie.

La valeur de retour de cette fonction ne peut être utilisée qu’avec MmUnsecureVirtualMemory. Le pilote appelle cette routine pour rétablir l’état normal de la plage.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1809
En-tête ntddk.h
IRQL APC_LEVEL

Voir aussi