Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
Как 32-битной программе узнать, что она…

Как 32-битной программе узнать, что она запущена в 64-битной Windows?

22 Мар 2012

64-разрядные операционные системы семейства Windows могут исполнять 32-разрядные программы с помощью подсистемы WoW64 (Windows on Windows 64), которая эмулирует 32-битное окружение за счет дополнительной прослойки между 32-битным приложением и 64-битным Windows API.

32-битная программа может узнать, запущена ли она в WoW64, с помощью функции IsWow64Process. Дополнительную информацию о процессоре программа может получить через функцию GetNativeSystemInfo.

Стоит помнить, что функция IsWow64Process включена только в 64-битные версии Windows. Узнать, присутствует ли функция IsWow64Process в системе, и получить к ней доступ, можно при помощи функции GetProcAddress и GetModuleHandle. Пример, демонстрирующий корректное использование функции IsWow64Process (скачать проект):

#include "stdafx.h"

bool IsWow64()
{
  BOOL bIsWow64 = FALSE;

  typedef BOOL (APIENTRY *LPFN_ISWOW64PROCESS)
    (HANDLE, PBOOL);

  LPFN_ISWOW64PROCESS fnIsWow64Process;

  HMODULE module = GetModuleHandle(_T("kernel32"));
  const char funcName[] = "IsWow64Process";
  fnIsWow64Process = (LPFN_ISWOW64PROCESS)
    GetProcAddress(module, funcName);

  if(NULL != fnIsWow64Process)
  {
    if (!fnIsWow64Process(GetCurrentProcess(),
                          &bIsWow64))
      throw std::exception("Unknown error");
  }
  return bIsWow64 != FALSE;
}

void main()
{
  if (IsWow64())
    printf("The process is running under WOW64.\n");
  else
    printf("The process is not running under WOW64.\n");

  printf("\nPress Enter to continue...");
  getchar();
}

Библиографический список

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам