Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматриваются рекомендации по совместимости и ограничения для 32-разрядных программ, работающих в 64-разрядных версиях Windows.
Исходный номер базы знаний: 896456
Итоги
64-разрядные версии Windows используют подсистему Microsoft Windows-32-on-Windows-64 (WOW64) для запуска 32-разрядных программ без изменений. 64-разрядные версии Windows не поддерживают 16-разрядные двоичные файлы или 32-разрядные драйверы. Программы, зависящие от 16-разрядных двоичных файлов или 32-разрядных драйверов, не могут выполняться в 64-разрядных версиях Windows, если производитель программы не предоставляет обновление для программы.
Могут возникнуть вопросы, влияющие на совместимость или производительность программы. Вы можете определить, будет ли программа иметь проблемы совместимости или производительности, проверив программу в одной из 64-разрядных версий Windows.
В этой статье описываются некоторые аспекты совместимости для запуска 32-разрядных программ в 64-разрядных версиях Windows. В этой статье не сравниваются 32-разрядные и 64-разрядные версии Windows или разные 64-разрядные операционные системы. В этой статье предполагается, что вы понимаете разницу между 32-разрядными двоичными файлами и 64-разрядными двоичными файлами.
Введение
Версии microsoft Windows на основе x64 оптимизированы для запуска собственных 64-разрядных программ. Кроме того, версии windows на основе x64 используют подсистему WOW64 для запуска 32-разрядных программ.
Выполнение 32-разрядных программ
Подсистема WOW64 позволяет 32-разрядным программам работать без изменений в версиях Windows на основе x64. Подсистема WOW64 делает это путем создания 32-разрядной среды в версиях Windows на основе x64. Дополнительные сведения о подсистеме WOW64 см. в разделе "Запуск 32-разрядных приложений" в разделе "64-разрядная версия Windows" документации по пакету SDK для платформы Майкрософт. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32-разрядных приложений.
Рекомендации по производительности программы
Подсистема WOW64 создает 32-разрядную среду в версиях Windows на основе x64. Некоторые 32-разрядные программы могут работать медленнее в этих операционных системах, чем в 32-разрядных версиях Windows. Кроме того, некоторые 32-разрядные программы, требующие большого количества воспоминаний, могут повысить производительность в версиях Windows на основе x64. Это увеличение производительности происходит, так как версии Windows на основе x64 поддерживают большую физическую память, чем 32-разрядные версии Windows.
Дополнительные сведения о различиях в управлении памятью между 64-разрядными и 32-разрядными версиями Windows см. в разделе "Виртуальное адресное пространство" в разделе "Управление памятью" документации по пакету SDK платформы Майкрософт. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: виртуальное адресное пространство
Ограничения подсистемы WOW64
Подсистема WOW64 не поддерживает следующие программы:
- Программы, скомпилированные для 16-разрядных операционных систем
- Программы в режиме ядра, скомпилированные для 32-разрядных операционных систем
16-разрядные программы
Версии windows на основе x64 не поддерживают 16-разрядные программы или 16-разрядные компоненты программы. Эмуляция программного обеспечения, необходимая для запуска 16-разрядных программ в версии Windows на основе x64, значительно снизит производительность этих программ.
16-разрядный установщик часто используется для установки и настройки 32-разрядной программы. Кроме того, для правильной работы некоторых 32-разрядных программ требуется 16-разрядные компоненты. Хотя 32-разрядные программы, требующие 16-разрядных компонентов, могут работать правильно после их установки, вы не можете использовать 16-разрядный установщик для установки 32-разрядной программы. Программы, требующие 16-разрядных компонентов, не могут работать в версиях Windows на основе x64.
Если 32-разрядная программа, требующая 16-разрядных компонентов, пытается запустить 16-разрядный файл или компонент, 32-разрядная программа будет записывать сообщение об ошибке в журнале системы. После этого операционная система позволит 32-разрядной программе обработать ошибку.
Чтобы определить, требуется ли программе 16-разрядный компонент, установите и запустите программу. Если программа создает сообщение об ошибке, обратитесь к изготовителю программы для обновления, совместимого с версиями Windows на основе x64.
32-разрядные драйверы
Версии windows на основе x64 не поддерживают 32-разрядные драйверы. Все драйверы оборудования и драйверы программ должны быть скомпилированы специально для версии Windows на основе x64.
Если 32-разрядная программа пытается установить 32-разрядный драйвер на компьютере под управлением версии Windows на основе x64, установка драйвера завершается ошибкой. При таком поведении версия Windows на основе x64 сообщает об ошибке 32-разрядной программе.
Если 32-разрядная программа пытается зарегистрировать 32-разрядный драйвер для автоматического запуска на компьютере под управлением версии Windows на основе x64, загрузчик на компьютере распознает, что 32-разрядный драйвер не поддерживается. Версия Windows на основе x64 не запускает 32-разрядный драйвер, но запускает другие зарегистрированные драйверы.
Чтобы определить, требуется ли программе 32-разрядный драйвер, установите и запустите программу. Если программа создает сообщение об ошибке, обратитесь к изготовителю программы для обновления, совместимого с версиями Windows на основе x64.
Дополнительные рекомендации
Перенаправление реестра и файлов
Подсистема WOW64 изолирует 32-разрядные двоичные файлы от 64-разрядных двоичных файлов, перенаправляя вызовы реестра и некоторые вызовы файловой системы. Подсистема WOW64 изолирует двоичные файлы, чтобы предотвратить 32-разрядный двоичный файл случайного доступа к данным из 64-разрядного двоичного файла. Например, 32-разрядный двоичный файл, который запускает файл .dll из папки %systemroot%\System32, может случайно попытаться получить доступ к 64-разрядному файлу .dll, который не совместим с 32-разрядным двоичным файлом. Чтобы предотвратить это, подсистема WOW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление предотвращает ошибки совместимости, так как для работы с 32-разрядными программами требуется файл .dll.
Дополнительные сведения о перенаправлении файловой системы и реестра см. в разделе "Запуск 32-разрядных приложений" в разделе "64-разрядная версия Windows" документации по пакету SDK для платформы Майкрософт. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32-разрядных приложений
Подсистема WOW64 перенаправляет 32-разрядные двоичные вызовы без внесения изменений в 32-разрядные двоичные файлы. Однако при выполнении некоторых задач может отображаться свидетельство этого перенаправления. Например, если ввести сценарий командной строки в 64-разрядной командной строке, командная строка может не иметь доступа к 32-разрядным программам в папке Program Files. Подсистема WOW64 перенаправляет и устанавливает 32-разрядные программы в папке Program Files (x86). Чтобы получить доступ к правильной папке, необходимо изменить сценарий командной строки. Кроме того, необходимо ввести скрипт командной строки в 32-разрядной командной строке. 32-разрядная командная строка автоматически перенаправляет вызовы файловой системы в правильный 32-разрядный каталог.
Чтобы запустить 32-разрядную командную строку, выполните следующие действия.
- Нажмите кнопку "Пуск", введите %windir%\SysWoW64\cmd.exe и нажмите кнопку "ОК".
Проверка версии
Некоторые 32-разрядные программы проверяют сведения о версии операционной системы. Многие 32-разрядные программы, выполняющие эту проверку, не распознают версии windows на основе x64 как совместимые операционные системы. При возникновении этого поведения 32-разрядная программа создаст ошибку проверки версии, а затем закройте. Если такое поведение происходит, обратитесь к производителю 32-разрядной программы для обновления, совместимого с версиями Windows на основе x64.
Microsoft платформа .NET Framework
Программа, скомпилированная с помощью Microsoft платформа .NET Framework, будет работать как 32-разрядная программа в подсистеме WOW64, если выполняются следующие условия:
- Программа имеет бит ILONLY в сведениях заголовка.
- Программа была скомпилирована с помощью Microsoft платформа .NET Framework 1.1. Если программа не имеет бита ILONLY в сведениях заголовка или если программа была скомпилирована с помощью Microsoft платформа .NET Framework версии 2.0, программа будет работать в качестве собственной 64-разрядной программы.
OpenGL
Версии Windows на основе x64 не включают графический драйвер OpenGL. Обратитесь к изготовителю устройства для драйвера, совместимого с версиями Windows на основе x64.
Консоль управления (MMC)
Версии Windows на основе x64 используют 64-разрядную версию консоли управления Майкрософт (MMC) для запуска различных оснастки. Однако иногда может потребоваться 32-разрядная версия MMC для запуска оснастки в подсистеме WOW64. Дополнительные сведения о поведении MMC в 64-разрядных версиях Windows см. в разделе "Запуск 32-разрядных и 64-разрядных оснастки в 64-разрядной версии Windows" статьи "Использование MMC 2.0" документации по пакету SDK для платформы Майкрософт. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32-разрядных и 64-разрядных оснастки в 64-разрядной версии Windows
Рекомендации по x64
Версии windows на основе x64 поддерживают 32-разрядные инструкции и 64-разрядные инструкции. Подсистема WOW64 может запускать 32-разрядные программы в собственном 64-разрядном режиме, переключив собственный режим процессора. Отдельные аппаратные или программные уровни не требуются. При запуске 32-разрядной программы в версиях Windows на основе x64 может не возникнуть снижение производительности.
Дополнительные сведения о производительности процессора на основе x64, обратитесь к производителю процессора или посетите веб-сайт производителя. Содержащиеся в документе сведения и рассмотренные решения отражают позицию корпорации Майкрософт в отношении обсуждаемых вопросов на момент публикации. Для получения данного решения необходимо обратиться в корпорацию Майкрософт или к сторонним поставщикам. Ни один из независимых поставщиков и ни одно из решений сторонних разработчиков, описываемых в данной статье, не являются предпочтительными с точки зрения корпорации Майкрософт. Кроме независимых поставщиков и решений сторонних разработчиков, упомянутых в данной статье, могут существовать и другие поставщики и решения. В условиях меняющейся рыночной конъюнктуры эти сведения не следует рассматривать в качестве какого бы то ни было обязательства со стороны корпорации Майкрософт. Корпорация Майкрософт не подтверждает и не гарантирует точности сведений и решений, предоставленных корпорацией Майкрософт или упомянутыми сторонними разработчиками.
Корпорация Майкрософт не предоставляет никаких гарантий и отказывается от явных, подразумеваемых или предусмотренных законодательством гарантий, заверений и условий, К ним относятся, но не ограничиваются представлениями, гарантиями или условиями названия, несовершения, удовлетворительного состояния, торговой возможности и пригодности для определенной цели, в отношении любой службы, решения, продукта или любых других материалов или информации. Корпорация Майкрософт не несет ответственности за решения сторонних разработчиков, упомянутые в данной статье.
Ссылки
Дополнительные сведения о процессоре AMD64 см. на следующем веб-сайте Advanced Micro Devices: ВЕБ-сайт AMD
Контактные данные сторонних организаций предоставлены в этой статье с целью помочь пользователям получить необходимую техническую поддержку. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не дает гарантий относительно правильности приведенных контактных данных сторонних производителей.
Дополнительные сведения о разработке программ для версий Windows Server 2003 и Windows XP на основе Itanium см. на следующем веб-сайте Майкрософт: Введение в разработку приложений для 64-разрядной версии Windows на основе Itanium
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких явных, подразумеваемых и прочих гарантий относительно производительности или надежности этих продуктов.