Обзор проблем совместимости для 32-разрядных программ в 64-разрядных версиях Windows Server 2003 и Windows XP

Переводы статьи Переводы статьи
Код статьи: 896456 - Vizualiza?i produsele pentru care se aplic? acest articol.
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий и обязательств относительно корректной работы или надежности этих продуктов.
Развернуть все | Свернуть все

В этой статье

Аннотация

В 64-разрядных версиях Microsoft Windows Server 2003 и Microsoft Windows XP для запуска 32-разрядных программ без изменений используется подсистема Microsoft Windows-32-on-Windows-64 (WOW64). 64-разрядные версии Windows Server 2003 и Windows XP не поддерживают 16-разрядные двоичные коды или 32-разрядные драйверы. Программы, зависящие от 16-разрядных двоичных кодов или 32-разрядных драйверов, не могут выполняться в 64-разрядных версиях Windows Server 2003 или Windows XP до тех пор, пока разработчик программного обеспечения не предоставит обновленную версию программы.

Могут возникать проблемы совместимости или производительности приложений. Тестирование программы в одной из 64-разрядных версий Windows Server 2003 или Windows XP позволяет выявить проблемы совместимости или производительности для данной программы.

В этой статье описаны некоторые проблемы совместимости для 32-разрядных программ в 64-разрядных версиях Windows Server 2003 и Windows XP. В ней сравниваются 32-разрядные и 64-разрядные версии Windows Server 2003, Windows XP или других 64-разрядных операционных систем. В данной статье предполагается, что читатель понимает различие между 32-разрядными и 64-разрядными двоичными кодами.

Хотя проблемы совместимости, описанные в этой статье, относятся только к 64-разрядным версиям Windows Server 2003 и Windows XP, эта статья первоначально написана для пакета обновлений 1 (SP1) Microsoft Windows Server 2003. Специально отмечены все основные функциональные различия между Windows Server 2003 с пакетом обновления 1 (SP1) и более ранними 64-разрядными версиями Windows Server 2003.

ВВЕДЕНИЕ

Версии Microsoft Windows Server 2003 для архитектуры x64 и Microsoft Windows XP Professional x64 Edition оптимизированы для выполнения 64-разрядных приложений. Кроме того, для выполнения 32-разрядных приложений в версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition используется подсистема WOW64.

Дополнительная информация

Выполнение 32-разрядных приложений

Подсистема WOW64 обеспечивает выполнение 32-разрядных приложений в версиях Windows Server 2003 для архитектуры x64 и в Windows XP Professional x64 Edition без изменения кода. Для этого подсистема WOW64 создает 32-разрядную среду в версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition. Дополнительные сведения о подсистеме WOW64 см. в разделе «Running 32-bit Applications» в документации Microsoft Platform SDK по 64-разрядным версиям Windows. Для просмотра этого документа посетите веб-сайт Майкрософт по адресу:
http://msdn.microsoft.com/ru-ru/library/aa384249.aspx

Вопросы производительности приложений

Подсистема WOW64 создает 32-разрядную среду в версиях Windows Server 2003 для архитектуры x64 и в Windows XP Professional x64 Edition. Некоторые 32-разрядные программы могут выполняться в этих операционных системах медленнее, чем в 32-разрядных версиях Windows Server 2003 и Windows XP. Например, 32-разрядная программа может выполняться в Windows XP Professional x64 Edition медленнее, чем в Microsoft Windows XP Professional. При этом некоторые 32-разрядные программы, требующие значительных ресурсов памяти, могут демонстрировать повышение быстродействия в версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition. Это повышение быстродействия связано с тем, что версии Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition поддерживают больший объем физической памяти, чем 32- разрядные версии Windows Server 2003 и Windows XP Professional.

Дополнительные сведения о различиях в управлении памятью между 64-разрядными и 32-разрядными версиями Windows см. в главе «Virtual Address Space» раздела «About Memory Management» документации Microsoft Platform SDK. Для просмотра этого документа посетите веб-сайт Майкрософт по адресу:
http://msdn.microsoft.com/ru-ru/library/aa366912.aspx

Ограничения подсистемы WOW64

Подсистема WOW64 не поддерживает следующие приложения.
  • программы, скомпилированные для 16-разрядных операционных систем;
  • программы режима ядра, скомпилированные для 32-разрядных операционных систем.

16-разрядные программы

Версии Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition не поддерживают 16-разрядные программы и 16-разрядные компоненты программ. Эмуляция программного обеспечения, которая требуется для выполнения 16-разрядных программ в версии Windows Server 2003 для архитектуры x64 или Windows XP Professional x64 Edition, значительно понижает быстродействие этих программ.

Для установки и настройки 32-разрядных программ часто используется 16-разрядная программа установки. Кроме того, для корректной работы некоторых 32-разрядных программ требуются 16-разрядные компоненты. Хотя 32-разрядные программы, требующие 16-разрядных компонентов, могут правильно выполняться после установки, для установки 32-разрядных программ нельзя использовать 16-разрядную программу установки. Программы, для которых требуются 16-разрядные компоненты, не могут выполняться в версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition.

При выполнении 32-разрядной программой, требующей использования 16-разрядных компонентов, попытки запустить 16-разрядный файл или компонент эта 32-разрядная программа заносит в журнал событий системы сообщение об ошибке. Затем операционная система предоставляет этой 32-разрядной программе возможность обработать ошибку.

Чтобы определить, требуется ли данной программе 16-разрядный компонент, выполните установку этой программы и попробуйте ее запустить. Если программа создает сообщение об ошибке, обратитесь к разработчику этой программы за обновленной версией, совместимой с версиями Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition.

32-разрядные драйверы

Версии Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition не поддерживают 32-разрядные драйверы. Все драйверы устройств и программ должны быть скомпилированы специально для версий Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition.

При попытке установки 32-разрядной программой 32-разрядного драйвера на компьютере под управлением Windows Server 2003 SP1 для архитектуры x64 или Windows XP Professional x64 Edition произойдет сбой. При этом ОС Windows Server 2003 SP1 для архитектуры x64 или Microsoft Windows XP Professional x64 Edition выдает сообщение об ошибке 32-разрядной программы.

При попытке 32-разрядной программы зарегистрировать 32-разрядный драйвер для автоматического запуска на компьютере под управлением Windows Server 2003 для архитектуры x64 или Windows XP Professional x64 Edition программа начальной загрузки определит, что 32-разрядный драйвер не поддерживается. Версия Windows Server 2003 для архитектуры x64 или Windows XP Professional x64 Edition не загружает 32-разрядный драйвер, однако загружает другие зарегистрированные драйверы.

Чтобы определить, требуется ли данной программе 32-разрядный драйвер, выполните установку этой программы и попробуйте ее запустить. Если программа создает сообщение об ошибке, обратитесь к разработчику этой программы за обновленной версией, совместимой с версиями Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition.

Дополнительные вопросы

Перенаправление для файлов и реестра

Подсистема WOW64 изолирует 32-разрядные двоичные коды от 64-разрядных двоичных кодов путем перенаправления обращений к некоторым файловым системам и реестру. Подсистема WOW64 изолирует двоичные коды для предотвращения случайного доступа 32-разрядного двоичного кода к 64-разрядным двоичным данным. Например, 32-разрядный двоичный код, который запускает файл DLL из каталога %systemroot%\System32, может случайно обратиться к 64-разрядному файлу DLL, который несовместим с 32-разрядным двоичным кодом. Во избежание этого подсистема WOW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление позволяет предотвратить ошибки совместимости, поскольку при этом требуется файл DLL, созданный специально для работы с 32-разрядными приложениями.

Дополнительные сведения о перенаправлении файловой системы и реестра см. в разделе «Running 32-bit Applications» документации Microsoft Platform SDK по 64-разрядным версиям Windows. Для просмотра этого документа посетите веб-сайт Майкрософт по адресу:
http://msdn.microsoft.com/ru-ru/library/aa384249.aspx
Подсистема WOW64 перенаправляет обращения к 32-разрядному коду без необходимости изменений в 32-разрядном двоичном коде. Однако при выполнении некоторых задач вы можете наглядно видеть это перенаправление. Например, если ввести сценарий командной строки в 64-разрядной командной строке, эта командная строка не сможет вызвать 32-разрядные приложения из папки Program Files. Подсистема WOW64 перенаправит и установит 32-разрядные приложения в папку Program Files (x86). Для обращения к нужной папке необходимо изменить сценарий командной строки. Можно также ввести сценарий командной строки в 32-разрядной командной строке. 32-разрядная командная строка автоматически перенаправляет обращения к файловой системе в нужный 32-разрядный каталог.

Для запуска 32-разрядной командной строки выполните следующие действия:
  • Щелкните кнопку Пуск, затем щелкните пункт Выполнить, введите команду %windir%\SysWoW64\cmd.exe и нажмите кнопку ОК.

Проверка версии

Некоторые 32-разрядные приложения проверяют сведения о версии операционной системы. Многие 32-разрядные программы, выполняющие эту проверку, не распознают версии Windows Server 2003 для архитектуры x64 или Windows XP Professional x64 Edition в качестве совместимых операционных систем. В этом случае 32-разрядное приложение выдаст ошибку проверки версии и будет закрыто. Если это произойдет, обратитесь к разработчику 32-разрядной программы за обновленной версией, совместимой с версиями Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition.

Microsoft .NET Framework

Программа, которая скомпилирована с использованием Microsoft .NET Framework, будет выполняться как 32-разрядная программа в подсистеме WOW64 при выполнении следующих условий:
  • Эта программа имеет установленный бит ILONLY в сведениях заголовка.
  • Эта программа была скомпилирована с помощью Microsoft .NET Framework 1.1.
Если данная программа не имеет установленного бита ILONLY в сведениях заголовка или если она была скомпилирована с помощью Microsoft .NET Framework version 2.0, эта программа будет запущена как «родная» 64-разрядная программа.

OpenGL

Версии Windows Server 2003 (для x64-процессоров) и Windows XP Professional x64 Edition не включают графический драйвер OpenGL. Обратитесь к изготовителю устройства за драйвером, совместимым с версиями Windows Server 2003 (для x64-процессоров) и Windows XP Professional x64 Edition.

Консоль управления (MMC)

В версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition для запуска различных оснасток используется 64-разрядная версия консоли управления. Однако иногда для запуска оснасток в подсистеме WOW64 может потребоваться 32-разрядная версия MMC. Дополнительные сведения о работе MMC в версиях Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition см. в главе «Running 32-bit and 64-bit Snap-ins in 64-bit Windows» раздела «Using MMC 2.0» документации Microsoft Platform SDK. Для просмотра этого документа посетите веб-сайт Майкрософт по адресу:
http://msdn.microsoft.com/ru-ru/library/aa815172.aspx

Процессоры Itanium

В следующих разделах кратко описаны проблемы и ограничения, касающиеся работы 32-разрядных приложений в версиях Microsoft Windows Server 2003 и Microsoft Windows XP на базе процессоров Itanium.

Пакет программ IA-32 EL (Intel Architecture 32-bit Execution Layer)

В версиях Microsoft Windows Server 2003 с пакетом обновлений 1 (SP1) и Microsoft Windows XP на базе процессоров Itanium для поддержки 32-разрядных приложений используется пакет программ IA-32 EL. В предыдущих версиях Microsoft Windows Server 2003 и Windows XP на базе процессоров Itanium эти приложения поддерживались подсистемой WOW64. Подсистема WOW64 использует специальное оборудование в ЦП для выполнения инструкций x86 для 32-разрядных программ. Однако IA-32 EL преобразует инструкции x86 для 32-разрядных программ в совместимые инструкции для версий Windows Server 2003 и Windows XP на базе процессоров Itanium. IA-32 EL преобразует инструкции x86 для 32-разрядных программ в «родной» 64-разрядный режим, а затем позволяет подсистеме WOW64 выполнять 32-разрядные программы на ЦП Itanium.

Выполнение 32-разрядных программ на ЦП Itanium может приводить к повышению их производительности. Увеличение производительности может наблюдаться даже несмотря на некоторые непроизводительные затраты при преобразовании IA-32 EL 32-инструкций в 64-разрядные инструкции. IA-32 EL также предоставляет множество возможностей для повышения производительности 32-разрядных приложений. Например, IA-32 EL может кэшировать уже преобразованные инструкции. Это приведет к повышению производительности выполняемых 32-разрядных программ.



Управление памятью

В версиях Microsoft Windows Server 2003 и Windows XP на базе процессоров Itanium не поддерживаются следующие функции диспетчера памяти для 32-разрядных приложений:
  • Scatter/gather Input/Output (IO)
    Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    160606 Повышение производительности SQL Server в Windows NT
  • AWE (Address Windowing Extensions)
  • Уведомления об изменениях страницы памяти
32-разрядные программы, которым необходимы эти функции, не могут выполняться в Windows Server 2003 и Windows XP на базе процессоров Itanium. Необходимо запустить 64-разрядную версию этой программы.

Если программа создает сообщение об ошибке, следует обратиться к разработчику этой программы за обновленной версией, совместимой с версиями Windows Server 2003 для платформы x64 и Windows XP Professional x64 Edition.

Поддержка графики

В следующей таблице показаны графические решения, поддерживающие 32-разрядные двоичные коды, выполняемые в версиях Windows Server 2003 и Windows XP на базе процессоров Itanium.
Свернуть эту таблицуРазвернуть эту таблицу
Графические решенияПрограммное ускорениеАппаратное ускорение
DDrawДаНет
D3D3НетНет
D3D5НетНет
D3D6НетНет
D3D7НетНет
D3D8НетНет
D3D9НетНет
OpenGLДаДа
В примерах, где не поддерживается аппаратное графическое ускорение, двоичные коды, которым требуется аппаратное графическое ускорение, не будут выполняться как 32-разрядные двоичные коды в версиях Windows Server 2003 и Windows XP на базе процессоров Itanium. Кроме того, при отсутствии аппаратного ускорения для 32-разрядных двоичных кодов с экстенсивным использованием графики будут отмечаться потери в производительности.

Если 32-разрядному приложению требуется аппаратное ускорение DirectX, обратитесь к разработчику этой программы за обновленной версией, совместимой с версиями Windows Server 2003 и Windows XP на базе процессоров Itanium.

Архитектура x64

Версии Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition поддерживают 32-разрядные и 64-разрядные инструкции. Подсистема WOW64 может выполнять 32-разрядные приложения в 64-разрядном режиме с помощью переключения собственного режима процессора. Специальные отдельные программные или аппаратные уровни не требуются. Снижения быстродействия при выполнении 32-разрядных приложений в ОС Windows Server 2003 для архитектуры x64 и Windows XP Professional x64 Edition может не происходить.

Для получения дополнительных сведений о производительности x64-процессора обратитесь к производителю данного процессора или посетите веб-узел производителя.Содержащиеся в документе сведения и рассмотренные решения отражают позицию корпорации Майкрософт в отношении обсуждаемых вопросов на момент публикации. Для получения данного решения необходимо обратиться в корпорацию Майкрософт или к сторонним поставщикам. Ни один из независимых поставщиков и ни одно из решений сторонних разработчиков, описываемых в данной статье, не являются предпочтительными с точки зрения корпорации Майкрософт. Кроме независимых поставщиков и решений сторонних разработчиков, упомянутых в данной статье, могут существовать и другие поставщики и решения. В условиях меняющейся рыночной конъюнктуры эти сведения не следует рассматривать в качестве какого бы то ни было обязательства со стороны корпорации Майкрософт. Корпорация Майкрософт не подтверждает и не гарантирует точности сведений и решений, предоставленных корпорацией Майкрософт или упомянутыми сторонними разработчиками.

Корпорация Майкрософт не предоставляет никаких гарантий и отказывается от явных, подразумеваемых или предусмотренных законодательством гарантий, заверений и условий, включая (но не ограничиваясь только ими) отказ от обязательств, условий или гарантий прав собственности, ненарушение прав интеллектуальной собственности, пригодности для продажи и применимости для определенной цели, гарантии качества в связи с использованием продукта, решения, услуг или других материалов или данных. Корпорация Майкрософт не несет ответственности за решения сторонних разработчиков, упомянутые в данной статье.

Ссылки

Дополнительные сведения о процессоре AMD64 см. на веб-узле Advanced Micro Devices по следующему адресу:
http://www.amd.com/ru/Pages/AMDHomePage.aspx
Контактные данные независимых производителей предоставлены в этой статье с целью помочь пользователям получить необходимую техническую поддержку. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не дает гарантий относительно верности приведенных контактных данных сторонних производителей.

Дополнительные сведения о разработке приложений для систем Windows Server 2003 и Windows XP для архитектуры Itanium см. на веб-сайте корпорации Майкрософт по следующему адресу:
http://msdn.microsoft.com/ru-ru/library/ms952405.aspx


Дополнительные сведения о других вопросах разработки приложений для 64-разрядных версий Windows Server 2003 и Windows XP см. на веб-сайте корпорации Майкрософт по следующему адресу:
http://msdn.microsoft.com/ru-ru/default.aspx
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Свойства

Код статьи: 896456 - Последний отзыв: 29 июня 2012 г. - Revision: 1.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows XP Professional x64 Edition
Ключевые слова: 
kbinfo kbtshoot kbusage kbperformance kbhardware kbinterop KB896456

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com