ReadStructFromUser 宏安全地从用户模式内存中读取结构。
Syntax
void ReadStructFromUser(
Destination,
Source
);
Parameters
Destination
[out]指向接收从用户模式内存中读取的数据的结构的指针。
Source
[in]指向从中读取结构的用户模式内存位置的指针。
Return value
None
Remarks
此宏提供了从用户模式内存中读取结构的安全方法。 在读取地址之前,它可确保提供的地址是用户模式地址。
该宏验证 源 和 目标 是否指向兼容类型,并自动确定复制作的结构大小。
此宏不强制对齐。
如果内存访问失败(例如源地址不是用户模式地址或不可访问),则会引发结构化异常。
编译器永远不会优化此宏,也不会在调用宏或宏返回之后(除非源代码显式执行这些访问)之前创建对此内存位置的其他访问权限。 内存访问是使用 memory_order_relaxed语义执行的。
此宏适用于所有版本的 Windows,而不仅仅是最新版本。 需要使用最新的 WDK 从 usermode_accessors.h 标头获取宏声明。 还需要最新的 WDK 中的库(umaccess.lib)。 但是,生成的驱动程序将在较旧版本的 Windows 上运行。
Requirements
| Requirement | Value |
|---|---|
| 最低支持的客户端 | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | 小于或等于APC_LEVEL |