IoGetDriverProxyWrapperFromEndpoint 宏使用终结点函数指针获取指向终结点函数包装器的指针。 此宏在 IofGetDriverProxyWrapperFromEndpoint 周围提供一个方便的包装器,其中包含自动类型转换。
此宏是检索 Driver Hot-Swap V2 中的终结点包装器的标准方法。 与直接调用基础函数相比,它会自动处理类型转换,并提供更简洁的接口。
Syntax
void IoGetDriverProxyWrapperFromEndpoint(
DriverProxyExtension,
Endpoint,
Wrapper
);
参数
DriverProxyExtension
[in]指向终结点注册到的 DriverProxy 扩展的指针。 此扩展是在之前对 IoCreateDriverProxyExtension 的调用中创建的。
Endpoint
[in]指向 DRIVER_PROXY_ENDPOINT_FUNCTION 终结点函数的指针,用于查找包装器。 这必须是驱动程序 Hot-Swap V2 中的自动终结点枚举过程中标识的函数指针。
Wrapper
[out]指向接收指向 DRIVER_PROXY_ENDPOINT_FUNCTION 包装函数的指针的变量的指针。 如果找到终结点, 包装 器将设置为指向应调用的包装函数,而不是原始终结点。 如果未找到终结点, 包装器 将设置为 NULL。
返回值
None
注解
此宏适用于 Driver Hot-Swap V2,它使用基于编译器的自动终结点枚举,而不是手动终结点注册。 传递给此宏的终结点指针必须与在自动终结点枚举过程中标识的指针完全匹配。
宏自动处理类型转换,使其比基础 IofGetDriverProxyWrapperFromEndpoint 函数更方便使用。 这消除了与指针类型转换相关的潜在编译器警告。
该宏可在任何 IRQL 级别使用,并执行快速查找作。
获取包装器后,驱动程序应调用包装函数而不是原始终结点函数,以启用可热交换功能。 这允许在运行时替换函数实现,而无需卸载驱动程序。
在 Driver Hot-Swap V2 中,通过编译器和链接器分析 .shsept 部分在生成过程中自动发现和注册终结点,无需手动注册终结点。
要求
| Requirement | 价值 |
|---|---|
| 目标平台 | 普遍 |
| Header | wdm.h |
| IRQL | 任何级别 |