2015-04-21 1 views
6

У меня есть универсальное приложение, в котором используются защищенные видео с помощью PlayReady DRM. Проблема с PlayReady заключается в том, что она работает только в том случае, если архитектура сборки приложений соответствует архитектуре ЦП (например: ARM build на ARM, x64 на 64-битном процессоре, x86 на 32-битном процессоре). Это по дизайну (по какой-то причине).Обнаружение, если процессор 64 бит в универсальном приложении (Windows)

Таким образом, проблема заключается в том, что пользователь имеет 64-битный процессор и имеет 32-битную ОС. В этом случае он получает сборку x86 из магазина (из-за 32-разрядной ОС), но PlayReady не будет работать из-за несоответствия сборки 64-битного CPI и X86. В этом случае я хочу отобразить сообщение (вместо того, чтобы просто не воспроизвести видео).

Я могу легко обнаружить сборку x86 (добавив условный символ), но как определить, является ли процессор 64-битным? Нет ничего похожего на System.Environment.Is64BitOperatingSystem со всего .NET.

+0

http://stackoverflow.com/questions/767613/identifying-the-cpu-architecture-type-using-c-sharp см. Ответ об использовании P/Invoke для получения архитектуры процессора –

+0

Я сомневаюсь, что это реальный проблема, на вашей машине это происходит не так. Кто загружает приложение из магазина, автоматически получает соответствующую версию. –

+0

@ HansPassant nope. Представьте, что у вас есть планшет с 64-битным Atom и Windows 8.1 32bit. Магазин предоставит вам X86, и PlayReady не сработает для вас. –

ответ

2

Вы можете использовать P/Invoke для Win32's GetNativeSystemInfo в приложениях для Windows Store (дополнительная информация о сигнатуре P/Invoke here); он возвращает структуру, которая включает в себя архитектуру процессора.
Я не могу найти никакой информации о том, что он возвращает в x86 Windows на сценарии с процессором x64, и у меня нет такой машины под рукой, чтобы ее протестировать, но стоит попробовать.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – dotctor

+0

@dotctor: Я отредактировал сообщение, чтобы сделать ответ более явным. –

Смежные вопросы