1

我们编写了一个 COM 进程内服务器(dll)(比如 x.dll),它动态链接到使用 win32 API 的库(比如 y.dll)。当从 windows8 桌面应用程序和 Metro 应用程序启动时,我们观察到相同 win32 API 的不同行为。

当从桌面应用程序加载 COM in-proc Server dll(x.dll) 时,库 (y.dll) 中的所有 win32 API 都工作正常。但是当从 MetroApps 启动 x.dll 时,y 中的所有 win32 API。 dll失败。

这是 Windows8 win32 API 的默认行为吗?如果有人可以为我提供任何与在 dll 中使用 win32 API 相关的文档,这些文档可以从桌面和 MetroApps 启动,那将是很好的。

谢谢你

4

1 回答 1

1

只有一部分 Windows API 可用于 Windows 应用商店应用。每个 API 函数的 MSDN 文档指定是否可以从桌面应用程序或 Windows 应用商店应用程序调用该函数。例如,以下内容出现在文档的底部GetProcAddress

支持的最低客户端 Windows XP [桌面应用程序 | Windows 应用商店应用]

可以从桌面应用程序和 Windows 应用商店应用程序调用此函数。如果某个函数没有说明它在 Windows 应用商店应用程序中受支持,则它可能不会从 Windows 应用商店应用程序中调用。例如,LoadLibrary没有说它可以从 Windows 应用商店应用程序调用,所以它不能被调用。(请注意,虽然有一些方法可以调用不受支持的函数,但这样做必然会产生未定义的行为。)

另请注意,Windows 应用商店应用程序以低权限运行,并且对系统的访问受到限制。

于 2012-12-05T06:38:53.430 回答