在 Universal App (Windows) 中检测 CPU 是否为 64 位
Detecting if CPU is 64bit in Universal App (Windows)
我有一个使用 PlayReady DRM 保护视频的通用应用程序。 PlayReady 的问题在于它仅在应用程序构建体系结构与 CPU 体系结构匹配时才有效(例如:ARM 在 ARM 上构建,x64 在 64 位 CPU 上,x86 在 32 位上 CPU)。这是设计使然(出于某种原因)。
所以问题是,如果用户有 64 位 CPU 并运行 32 位 OS。在这种情况下,他从商店获取了 x86 构建(因为 32 位 OS),但 PlayReady 将无法工作,因为 64 位 CPI 与 X86 构建不匹配。在这种情况下,我想显示一条消息(而不是播放视频失败)。
我可以轻松检测到 x86 构建(通过添加条件符号),但如何检测 CPU 是否为 64 位?完整的 .NET 中没有 System.Environment.Is64BitOperatingSystem
。
您可以 P/Invoke Win32 GetNativeSystemInfo in Windows Store apps (more info on the P/Invoke signature here);它 returns 一个包含处理器架构的结构。
我找不到任何关于 it returns in an x86 Windows on x64 machine scenario 的信息,而且我手头没有这样的机器来测试它,但值得一试。
我有一个使用 PlayReady DRM 保护视频的通用应用程序。 PlayReady 的问题在于它仅在应用程序构建体系结构与 CPU 体系结构匹配时才有效(例如:ARM 在 ARM 上构建,x64 在 64 位 CPU 上,x86 在 32 位上 CPU)。这是设计使然(出于某种原因)。
所以问题是,如果用户有 64 位 CPU 并运行 32 位 OS。在这种情况下,他从商店获取了 x86 构建(因为 32 位 OS),但 PlayReady 将无法工作,因为 64 位 CPI 与 X86 构建不匹配。在这种情况下,我想显示一条消息(而不是播放视频失败)。
我可以轻松检测到 x86 构建(通过添加条件符号),但如何检测 CPU 是否为 64 位?完整的 .NET 中没有 System.Environment.Is64BitOperatingSystem
。
您可以 P/Invoke Win32 GetNativeSystemInfo in Windows Store apps (more info on the P/Invoke signature here);它 returns 一个包含处理器架构的结构。
我找不到任何关于 it returns in an x86 Windows on x64 machine scenario 的信息,而且我手头没有这样的机器来测试它,但值得一试。