我正在修复 32 位应用程序的 Windows Vista 64 位的错误,当我尝试使用函数 Wow64DisableWow64FsRedirection(...) 时,编译器会显示“未声明的标识符...”。
我包含了 Windows.h 头文件并将 _WIN32_WINNT 设置为 0x0501。
有任何想法吗?
谢谢。
编辑:我们正在使用 MS Visual Studio 2003
您的平台 SDK 文件可能太旧而无法使用该功能。该功能最早出现在 XP 64 位平台 SDK 中。您可以在这里获取最新的 SDK:http: //www.microsoft.com/downloads/details.aspx? FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&displaylang=en
尽管它说它是“适用于 Windows Server® 2008 的 Windows SDK”,但它只是最新的 SDK,它将包含您需要的所有向后兼容的文件。
安装后,根据您的编译器,您可能必须将包含目录指向它。
你能在头文件中看到这个 API 吗?可能是您使用的 Visual Studio 没有更新头文件,在这种情况下,您需要为 Kernel32.dll 执行 LoadLibrary,然后为所需函数执行 GetProcAddress。
如果您的应用程序需要在 Windows XP 32 位或 Windows 2000 上运行,您应该按照 Canopus 的建议使用LoadLibrary()
and GetProcAddress()
,因为直到 Windows XP 64 位Wow64DisableWow64FsRedirection()
和Wow64RevertWow64FsRedirection()
Server 2003 SP1(根据文档)才添加。