Menentukan Seni Bina Proses: 32-Bit atau 64-Bit
Dalam bidang sistem komputer, membezakan antara 32-bit dan 64- aplikasi bit adalah penting untuk keserasian dan pengoptimuman prestasi. Seseorang mungkin perlu memastikan seni bina proses tertentu, sama ada dengan nama atau ID proses, dalam pelbagai keadaan.
Tipu IntPtr
Teknik yang menarik melibatkan penggunaan saiz jenis data IntPtr, seperti yang ditunjukkan di bawah:
if (IntPtr.Size == 4) { // 32-bit } else if (IntPtr.Size == 8) { // 64-bit } else { // Uncharted territory }
Pendekatan ini menggunakan fakta bahawa IntPtr sepadan dengan penunjuk asli, yang mempunyai saiz 4 bait dalam sistem 32-bit dan 8 bait dalam sistem 64-bit.
Pengesanan Emulator 64-Bit
Untuk mengetahui sama ada proses sedang berjalan dalam emulator 64-bit (WOW64), pendekatan yang lebih rumit diperlukan. Kod C# berikut mencapai ini:
... 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 } ...
Kaedah ini memanfaatkan fungsi Windows API IsWow64Process untuk menentukan sama ada proses berjalan di bawah persekitaran emulator 64-bit. Ia mengambil pemegang proses sebagai input dan mengembalikan benar jika ia berjalan sebagai proses 32-bit dalam WOW64.
Atas ialah kandungan terperinci Proses 32-bit atau 64-bit? Bagaimana untuk Menentukan Seni Bina Proses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!