【发布时间】:2015-04-12 09:45:15
【问题描述】:
我正在尝试使用一种本机 API 方法 (GetNativeSystemInfo),该方法标记为支持 Windows 8.1 上的手机和桌面应用商店应用。在文档中,它被列为存在于 kernel32.dll 中。伟大的!所以我第一次尝试 P/Invoke 看起来像这样:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = false, PreserveSig = true)]
private static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSysInfo);
不幸的是,这无法在实际设备上运行 - 未找到 kernel32!碰巧的是,有 kernelBase.dll,因此我的第二次尝试:
[DllImport("kernelBase.dll", CharSet = CharSet.Unicode, ExactSpelling = false, PreserveSig = true)]
private static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSysInfo);
虽然这在我的手机上运行良好,但会导致应用无法通过认证;方法名称和“kernelBase.dll”似乎没有被列入白名单。
这是对 WACK 的疏忽,还是导致此 API 在应用商店应用中无法使用的错误?我的目标是获取有关正在运行的处理器的信息(体系结构、类型等),而且我不想为了这么简单的事情而使用 C++。如果此 API 在实践中不可用,是否有其他方法可以获取此信息?
【问题讨论】:
标签: c# windows-runtime windows-store-apps windows-phone-8.1 pinvoke