Maison >développement back-end >C++ >Processus 32 bits ou 64 bits ? Comment déterminer une architecture de processus ?

Processus 32 bits ou 64 bits ? Comment déterminer une architecture de processus ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 20:39:41140parcourir

32-bit or 64-bit Process? How to Determine a Process Architecture?

Détermination de l'architecture des processus : 32 bits ou 64 bits

Dans le domaine des systèmes informatiques, faire la différence entre 32 bits et 64 bits Les applications bit sont cruciales pour la compatibilité et l’optimisation des performances. Il peut être nécessaire de connaître l'architecture d'un processus spécifique, que ce soit par son nom ou son ID de processus, dans diverses circonstances.

IntPtr Trick

Une technique intrigante consiste à utiliser la taille du type de données IntPtr, comme démontré ci-dessous :

if (IntPtr.Size == 4)
{
    // 32-bit
}
else if (IntPtr.Size == 8)
{
    // 64-bit
}
else
{
    // Uncharted territory
}

Cette approche utilise le fait que IntPtr correspond aux données natives pointeurs, qui ont une taille de 4 octets dans les systèmes 32 bits et de 8 octets dans les systèmes 64 bits.

Détection d'émulateur 64 bits

Pour discerner si un Si le processus est en cours d'exécution dans l'émulateur 64 bits (WOW64), une approche légèrement plus complexe est nécessaire. Le code C# suivant y parvient :

...

private static bool IsWin64Emulator(this Process process)
{
    if ((Environment.OSVersion.Version.Major > 5)
        || ((Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor >= 1)))
    {
        bool retVal;

        return NativeMethods.IsWow64Process(process.Handle, out retVal) && retVal;
    }

    return false; // not on 64-bit Windows Emulator
}

...

Cette méthode exploite la fonction API Windows IsWow64Process pour déterminer si un processus s'exécute dans l'environnement d'émulateur 64 bits. Il prend le descripteur de processus en entrée et renvoie vrai s'il s'exécute en tant que processus 32 bits dans WOW64.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn