2015-04-21 8 views
6

Ich habe eine universelle App, die PlayReady DRM-geschützte Videos verwendet. Das Problem mit PlayReady besteht darin, dass es nur funktioniert, wenn die Build-Architektur der Anwendung der CPU-Architektur entspricht (z. B. ARM-Build auf ARM, x64 auf 64-Bit-CPU, x86 auf 32-Bit-CPU). Dies ist Absicht (aus irgendeinem Grund).Erkennen, ob die CPU in Universal App (Windows) 64 Bit ist

Das Problem ist also, wenn ein Benutzer eine 64-Bit-CPU hat und ein 32-Bit-Betriebssystem ausführt. In diesem Fall erhält er den x86-Build aus dem Speicher (wegen des 32-Bit-Betriebssystems), aber PlayReady wird nicht funktionieren, da 64-Bit-CPI-zu-X86-Build nicht übereinstimmen. In diesem Fall möchte ich eine Nachricht anzeigen (anstatt das Video einfach nicht abzuspielen).

Ich kann leicht erkennen x86 Build (durch Hinzufügen eines bedingten Symbols), aber wie erkenne ich, ob die CPU 64bit ist? Es gibt nichts wie System.Environment.Is64BitOperatingSystem von der vollständigen .NET.

+0

http://stackoverflow.com/questions/767613/identifying-the-cpu-architecture-type-using-c-sharp siehe die Antwort über die Verwendung von P/Invoke, um die Prozessorarchitektur zu erhalten –

+0

Ich bezweifle, dass dies eine echte ist Problem, es geht nur falsch auf Ihrer Maschine. Wer die App aus dem Store herunterlädt, erhält automatisch die entsprechende Version. –

+0

@HansPassant Nein. Stellen Sie sich vor, Sie haben ein Tablet mit 64bit Atom und Windows 8.1 32bit. Das Geschäft wird Ihnen einen X86 bauen und PlayReady wird nicht für Sie arbeiten. –

Antwort

2

Sie dürfen die Win32 GetNativeSystemInfo in Windows Store-Apps aufrufen (weitere Informationen zur P/Invoke-Signatur here); Es gibt eine Struktur zurück, die die Prozessorarchitektur enthält.
Ich kann keine Informationen darüber finden, was es in einem x86 Windows auf x64-Rechner Szenario zurückgibt, und ich habe keine solche Maschine zur Hand, um es zu testen, aber es ist einen Versuch wert.

+0

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – dotctor

+0

@dotctor: Ich habe den Beitrag bearbeitet, um die Antwort deutlicher zu machen. –