我正在为WinXP(使用 TDI 技术)和win7(使用 WFP 技术)编写 Windows 网络过滤器驱动程序,我希望该驱动程序与 WinXP 和 Win7 兼容。
因为WFP只能从 vista 和更高版本获得,所以我必须动态获取WFP例程(例如:FwpmEngineOpen0,FwpsCalloutRegister0)地址,否则驱动程序无法在 WinXP 下加载。
但是当我使用MmGetSystemRoutineAddress尝试获取FwpmEngineOpen0例程地址时,Win7 下例程总是返回 0。
MSDN 说:“ MmGetSystemRoutineAddress ... 驱动程序可以使用此例程来确定某个例程是否在特定版本的 Windows 上可用。它只能用于内核或 HAL 导出的例程,不能用于任何驱动程序定义的例程。 "
那么,是不是MmGetSystemRoutineAddress不能获取WFP例程地址?
如果我想动态获取WFP例程地址,我该如何解决这个问题?
感谢您提供的任何帮助!