Freigeben über


ReadStructFromUser-Makro (usermode_accessors.h)

Das ReadStructFromUser-Makro liest eine Struktur sicher aus dem Arbeitsspeicher des Benutzermodus.

Syntax

void ReadStructFromUser(
  Destination,
  Source
);

Parameters

Destination

[out] Ein Zeiger auf die Struktur, die die Vom Benutzermodus gelesenen Daten empfängt.

Source

[in] Ein Zeiger auf den Speicherort des Benutzermodusspeicherorts, aus dem die Struktur gelesen werden soll.

Return value

None

Remarks

Dieses Makro bietet eine sichere Möglichkeit, eine Struktur aus dem Arbeitsspeicher des Benutzermodus zu lesen. Sie stellt sicher, dass es sich bei der angegebenen Adresse um eine Benutzermodusadresse handelt, bevor sie gelesen wird.

Das Makro überprüft den Quell- und Zielpunkt auf kompatible Typen und bestimmt automatisch die Strukturgröße für den Kopiervorgang.

Dieses Makro erzwingt keine Ausrichtung.

Es löst eine strukturierte Ausnahme aus, wenn der Speicherzugriff fehlschlägt, z. B. wenn die Quelladresse keine Benutzermodusadresse ist oder nicht darauf zugegriffen werden kann.

Dieses Makro wird niemals vom Compiler optimiert, oder der Compiler erstellt zusätzlichen Zugriff auf diesen Speicherspeicherort, bevor das Makro aufgerufen wird oder nachdem das Makro zurückgegeben wird (es sei denn, der Quellcode führt diese Zugriffe explizit aus). Der Speicherzugriff wird mit memory_order_relaxed Semantik ausgeführt.

Dieses Makro funktioniert auf allen Versionen von Windows, nicht nur auf dem neuesten. Sie müssen die neueste WDK verwenden, um die Makrodeklaration aus dem Header usermode_accessors.h abzurufen. Außerdem benötigen Sie die Bibliothek (umaccess.lib) aus dem neuesten WDK. Der resultierende Treiber wird jedoch in älteren Versionen von Windows einwandfrei ausgeführt.

Requirements

Requirement Value
Mindestens unterstützter Client See Remarks
Header usermode_accessors.h
Library umaccess.lib
IRQL Kleiner oder gleich APC_LEVEL

See also

ReadStructFromMode

ReadStructFromUserHelper

WriteStructToUser