The ReadLonglongFromMode function safely reads a LONGLONG value from memory based on the specified processor mode.
Syntax
LONGLONG ReadLonglongFromMode(
const LONGLONG *Source,
KPROCESSOR_MODE Mode
);
Parameters
Source
[in]指向从中读取 LONGLONG 值的内存位置的指针。
Mode
[in]确定内存访问的执行方式的处理器模式。 Mode can be one of the following values.
| Value | Meaning |
|---|---|
| KernelMode | Source points to kernel-mode memory. The function performs a read from the specified address with memory_order_relaxed semantics. 有关更多详细信息,请参阅“备注”。 |
| UserMode | Source points to user-mode memory. The function raises an exception if Source doesn't point to user-mode memory; otherwise it performs a read from the specified address with memory_order_relaxed semantics. 有关更多详细信息,请参阅“备注”。 |
Return value
ReadLonglongFromMode returns the LONGLONG value read from the specified memory address.
Remarks
此函数提供了从内存中读取 LONGLONG 值的安全方法,并在访问用户模式内存时进行额外的安全检查。 它确保提供的地址有效且基于指定的处理器模式可访问。
此函数不强制对齐。
如果内存访问失败(例如源地址无效或对于指定的处理器模式无法访问),则会引发结构化异常。
编译器永远不会优化此函数,也不会在调用函数或函数返回后(除非源代码显式执行这些访问)之前创建对此内存位置的其他访问权限。 The memory access is performed with memory_order_relaxed semantics.
此函数适用于所有版本的 Windows,而不仅仅是最新版本。 You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. 但是,生成的驱动程序将在较旧版本的 Windows 上运行。
Requirements
| Requirement | Value |
|---|---|
| 最低支持的客户端 | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | 小于或等于APC_LEVEL |