Maison >développement back-end >C++ >Comment puis-je détecter avec précision la version de Windows 10 d'un point de vue multiplateforme ?
Détection multiplateforme de la version de Windows 10
La tâche de détection précise de Windows 10 d'un point de vue multiplateforme peut être difficile en raison de incohérences dans les rapports de version entre les différentes versions de Windows. Bien que la fonction IsWindows10OrGreater() soit facilement disponible, son absence dans les versions antérieures de Windows crée un obstacle.
Récupération de la véritable version du système d'exploitation
Une solution efficace consiste à contourner les cales de compatibilité et accéder directement aux informations de version du système d'exploitation sous-jacentes. Ceci peut être réalisé à l'aide de la fonction RtlGetVersion du Kit de développement de pilotes Windows (DDK).
Lien dynamique d'exécution
Pour éviter la dépendance au DDK, la liaison dynamique d'exécution peut être utilisé comme démontré ci-dessous :
<code class="C++">typedef LONG NTSTATUS, *PNTSTATUS; #define STATUS_SUCCESS (0x00000000) typedef NTSTATUS (WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW); RTL_OSVERSIONINFOW GetRealOSVersion() { HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll"); if (hMod) { RtlGetVersionPtr fxPtr = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion"); if (fxPtr != nullptr) { RTL_OSVERSIONINFOW rovi = { 0 }; rovi.dwOSVersionInfoSize = sizeof(rovi); if ( STATUS_SUCCESS == fxPtr(&rovi) ) { return rovi; } } } RTL_OSVERSIONINFOW rovi = { 0 }; return rovi; }</code>
En appelant cette fonction, la véritable version du système d'exploitation peut être récupérée, quels que soient les cales de compatibilité ou les paramètres du manifeste.
Approche alternative
Envisagez d'aborder le problème du point de vue de l'identification des fonctionnalités prises en charge plutôt que de vous fier uniquement aux versions du système d'exploitation. Cette approche offre une plus grande flexibilité et adaptabilité aux futures mises à jour et améliorations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!