- 64-разрядные приложения 64-bit Applications
- Запуск 32- и 64-разрядных приложений в Windows Running 32-bit vs. 64-bit Applications on Windows
- Общие сведения о 64-разрядном программировании General 64-Bit Programming Information
- Поддержка создания 64-разрядных приложений компилятором Compiler Support for Creating 64-Bit Applications
- Обзор вопросов совместимости 32-битных программ в 64-битных версиях Windows
- Аннотация
- Введение
- Запуск 32-битных программ
- Вопросы производительности программы
- Ограничения подсистемы WOW64
- 16-битные программы
- 32-битные драйверы
- Дополнительные рекомендации
- Реестр и перенаправление файлов
- Проверка версии
- Microsoft .NET Framework
- OpenGL
- Консоль управления (MMC)
- x64 Considerations
- Ссылки
64-разрядные приложения 64-bit Applications
При компиляции приложения можно указать, должно ли оно запускаться в 64-разрядной операционной системе Windows в качестве собственного приложения или в эмуляторе WOW64 (в 32- или 64-разрядной ОС Windows). When you compile an application, you can specify that it should run on a Windows 64-bit operating system either as a native application or under WOW64 (Windows 32-bit on Windows 64-bit). WOW64 — это среда совместимости, которая позволяет выполнять 32-разрядное приложение в 64-разрядной системе. WOW64 is a compatibility environment that enables a 32-bit application to run on a 64-bit system. Эмулятор WOW64 входит в состав всех 64-разрядных версий операционной системы Windows. WOW64 is included in all 64-bit versions of the Windows operating system.
Запуск 32- и 64-разрядных приложений в Windows Running 32-bit vs. 64-bit Applications on Windows
Все приложения, построенные на платформе .NET Framework версий 1.0 и 1.1, обрабатываются в 64-разрядной операционной системе как 32-разрядные приложения и всегда запускаются в эмуляторе WOW64 и в 32-разрядной среде CLR. All applications that are built on the .NET Framework 1.0 or 1.1 are treated as 32-bit applications on a 64-bit operating system and are always executed under WOW64 and the 32-bit common language runtime (CLR). 32-разрядные приложения, созданные на платформе .NET Framework 4 или более поздних версий, также выполняются в эмуляторе WOW64 в 64-разрядных системах. 32-bit applications that are built on the .NET Framework 4 or later versions also run under WOW64 on 64-bit systems.
Visual Studio устанавливает на компьютер с архитектурой x86 32-разрядную версию среды CLR, а на компьютер с 64-разрядной ОС Windows — 32-разрядную и соответствующую 64-разрядную версию среды CLR. Visual Studio installs the 32-bit version of the CLR on an x86 computer, and both the 32-bit version and the appropriate 64-bit version of the CLR on a 64-bit Windows computer. (Так как среда Visual Studio является 32-разрядным приложением, то при установке в 64-разрядной системе она выполняется в эмуляторе WOW64.) (Because Visual Studio is a 32-bit application, when it is installed on a 64-bit system, it runs under WOW64.)
Из-за особенностей эмуляции x86 и подсистемы WOW64 для процессоров семейства Itanium выполнение приложений ограничено одним процессором. Because of the design of x86 emulation and the WOW64 subsystem for the Itanium processor family, applications are restricted to execution on one processor. Эти факторы снижают производительность и масштабируемость 32-разрядных приложений .NET Framework, выполняемых в системах на базе Itanium. These factors reduce the performance and scalability of 32-bit .NET Framework applications that run on Itanium-based systems. Для повышения производительности и масштабируемости рекомендуем использовать версию .NET Framework 4 со встроенной поддержкой 64-разрядных систем на базе Itanium. We recommend that you use the .NET Framework 4, which includes native 64-bit support for Itanium-based systems, for increased performance and scalability.
При запуске 64-разрядного управляемого приложения в 64-разрядной операционной системе Windows по умолчанию можно создавать объекты размером не более 2 гигабайт (ГБ). By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). Однако в .NET Framework 4.5 это ограничение можно повысить. However, in the .NET Framework 4.5, you can increase this limit. Дополнительные сведения см. в описании элемента . For more information, see the element.
Многие сборки выполняются в 32- и 64-разрядной среде CLR одинаково. Many assemblies run identically on both the 32-bit CLR and the 64-bit CLR. Однако в зависимости от версии среды CLR работа некоторых программ может отличаться по одной из следующих причин: However, some programs may behave differently, depending on the CLR, if they contain one or more of the following:
структуры, содержащие члены, размер которых меняется в зависимости от платформы (например, любой тип указателя); Structures that contain members that change size depending on the platform (for example, any pointer type).
Арифметика указателя, содержащая постоянные размеры. Pointer arithmetic that includes constant sizes.
Неверный вызов платформ или объявления СОМ, использующие дескрипторы Int32 вместо IntPtr . Incorrect platform invoke or COM declarations that use Int32 for handles instead of IntPtr .
приведение IntPtr к Int32 . Code that casts IntPtr to Int32 .
Дополнительные сведения о переносе 32-разрядного приложения в 64-разрядную среду CLR см. на странице Миграция 32-разрядного управляемого кода в 64-разрядную систему. For more information about how to port a 32-bit application to run on the 64-bit CLR, see Migrating 32-bit Managed Code to 64-bit.
Общие сведения о 64-разрядном программировании General 64-Bit Programming Information
Общие сведения о 64-разрядном программировании см. в перечисленных ниже материалах. For general information about 64-bit programming, see the following documents:
В документации по Windows SDK см. статью Programming Guide for 64-bit Windows (Руководство по программированию для 64-разрядных версий Windows). In the Windows SDK documentation, see Programming Guide for 64-bit Windows.
Сведения о поддержке создания 64-разрядных приложений в Visual Studio см. в разделе Поддержка 64-разрядной среды разработки Visual Studio. For information about Visual Studio support for creating 64-bit applications, see Visual Studio IDE 64-Bit Support.
Поддержка создания 64-разрядных приложений компилятором Compiler Support for Creating 64-Bit Applications
Приложение, построенное с помощью .NET Framework на 32- или 64-разрядном компьютере, на 64-разрядном компьютере по умолчанию выполняется как собственное приложение (не в эмуляторе WOW64). By default, when you use the .NET Framework to build an application on either a 32-bit or a 64-bit computer, the application will run on a 64-bit computer as a native application (that is, not under WOW64). В таблице ниже перечислены материалы, в которых описывается использование компиляторов Visual Studio для создания 64-разрядных приложений, выполняемых как собственные, в эмуляторе WOW64 или обоими способами. The following table lists documents that explain how to use Visual Studio compilers to create 64-bit applications that will run as native, under WOW64, or both.
Обзор вопросов совместимости 32-битных программ в 64-битных версиях Windows
В этой статье рассматриваются вопросы совместимости и ограничения для 32-битных программ, работающих в 64-битных версиях Windows.
Исходная версия продукта: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 896456
Аннотация
64-bit versions of Windows use the Microsoft Windows-32-on-Windows-64 (WOW64) subsystem to run 32-bit programs without modifications. 64-bit versions of Windows don’t provide support for 16-bit binaries or 32-bit drivers. Программы, зависят от 16-битных или 32-битных драйверов, не могут работать в 64-битных версиях Windows, если изготовитель программы не предоставляет обновление для программы.
Могут возникнуть вопросы, влияющие на совместимость и производительность программы. Вы можете определить, будет ли программа иметь проблемы совместимости или производительности, тестировать программу в одной из 64-битных версий Windows.
В этой статье описываются некоторые вопросы совместимости при запуске 32-битных программ в 64-битных версиях Windows. В этой статье не сравнивают 32- и 64-битные версии Windows или другие 64-битные операционные системы. В этой статье предполагается, что вы понимаете разницу между 32-битными и 64-битными.
Введение
Версии Microsoft Windows на основе x64 оптимизированы для запуска 64-битных программ. Кроме того, в 64-х версиях Windows для запуска 32-битных программ используется подсистема WOW64.
Запуск 32-битных программ
Подсистема WOW64 позволяет запускать 32-битные программы без изменений в 64-х версиях Windows. Для этого подсистема WOW64 создает 32-битную среду в 64-х версиях Windows. Дополнительные сведения о подсистеме WOW64 см. в разделе «Запуск 32-битных приложений» в разделе 64-bit Windows документации по Microsoft Platform SDK. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32-битных приложений
Вопросы производительности программы
Подсистема WOW64 создает 32-битную среду в 64-х версиях Windows. Некоторые 32-битные программы могут работать в этих операционных системах медленнее, чем в 32-битных версиях Windows. Кроме того, некоторые 32- и 32-битные программы, для работы с 64-ми версиями Windows, для работы с которые требуется много тщательной памяти, могут привести к повышению производительности. Это увеличение производительности происходит потому, что версии Windows на основе x64 поддерживают больше физической памяти, чем 32-битные версии Windows.
Дополнительные сведения о различиях в управлении памятью между 64- и 32-битными версиями Windows см. в разделе «Виртуальное адресное пространство» в разделе «Управление памятью» документации по Microsoft Platform SDK. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: виртуальное адресное пространство
Ограничения подсистемы WOW64
Подсистема WOW64 не поддерживает следующие программы:
- Программы, скомпилироваться для 16-битных операционных систем
- Программы в режиме ядра, скомпилировать для 32-битных операционных систем
16-битные программы
64-битные версии Windows не поддерживают 16-битные программы или 16-битные компоненты программы. Эмуляция программного обеспечения, необходимая для запуска 16-битных программ в 64-й версии Windows, значительно снизит производительность этих программ.
16-битный установщик часто используется для установки и настройки 32-битной программы. Кроме того, для правильной работы некоторых 32-битных программ требуются 16-битные компоненты. Хотя 32-битные программы, для установки 16-битных компонентов могут работать правильно, установить 32-битную программу с помощью 16-битного установщика нельзя. Программы, которые требуют 16-битных компонентов, не могут работать в 64-х версиях Windows.
Если 32-битная программа, которая требует 16-битных компонентов, попытается запустить 16-битный файл или компонент, 32-битная программа занося в журнал системы сообщение об ошибке. Затем операционная система позволит 32-битной программе обработать ошибку.
Чтобы определить, требуется ли для программы 16-битный компонент, установите и запустите программу. Если программа создает сообщение об ошибке, обратитесь к производителю программы за обновлением, совместимым с версиями Windows на основе x64.
32-битные драйверы
32-битные драйверы не поддерживаются в 64-х версиях Windows. Все драйверы оборудования и программные драйверы должны быть скомпилироваться специально для версии Windows на основе x64.
Если 32-битная программа попытается установить 32-битный драйвер на компьютере под управлением 64-х версий Windows, установка драйвера не удастся. При таком поведении 64-х версия Windows сообщает об ошибке 32-битной программе.
Если 32-битная программа попытается зарегистрировать 32-битный драйвер для автоматического запуска на компьютере под управлением 64-х версий Windows, загрузчик загрузчик первой загрузки на компьютере распознает, что 32-битный драйвер не поддерживается. 32-битный драйвер не запускается в 64-й версии Windows, но другие зарегистрированные драйверы.
Чтобы определить, требуется ли программе 32-битный драйвер, установите и запустите программу. Если программа создает сообщение об ошибке, обратитесь к производителю программы за обновлением, совместимым с версиями Windows на основе x64.
Дополнительные рекомендации
Реестр и перенаправление файлов
Подсистема WOW64 изолирует 32-битные файлы от 64-битных файлов, перенаправляя вызовы реестра и некоторые вызовы файловой системы. Подсистема WOW64 изолирует двоичные данные, чтобы предотвратить случайный доступ 32-битного двоичного файла к данным из 64-битного двоичного файла. Например, 32-битный двоичный файл, который запускает DLL-файл из папки %systemroot%\System32, может случайно попытаться получить доступ к 64-битным DLL-файлу, несовместимым с 32-битным двоичным файлом. Чтобы предотвратить это, подсистема WOW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление предотвращает ошибки совместимости, так как требует, чтобы DLL-файл был специально разработан для работы с 32-битными программами.
Дополнительные сведения о файловой системе и перенаправлении реестра см. в разделе «Запуск 32-битных приложений» в разделе 64-bit Windows документации microsoft Platform SDK. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32-битных приложений
Подсистема WOW64 перенаправляет 32-битные двоичные вызовы без внесения изменений в 32-битные двоичные файлы. Однако это перенаправление может быть подтверждено при выполнении некоторых задач. Например, если ввести сценарий командной строки в 64-битной командной строке, командная строка не сможет получить доступ к 32-битным программам в папке Program Files. Подсистема WOW64 перенаправляет и устанавливает 32-битные программы в папку Program Files (x86). Чтобы получить доступ к нужной папке, необходимо изменить сценарий командной строки. Кроме того, необходимо ввести сценарий командной строки в 32-битной командной строке. 32-битная командная подсказка автоматически перенаправляет вызовы файловой системы в правильный 32-битный каталог.
Чтобы запустить 32-битную командную подсказку, выполните следующие действия.
- Нажмите кнопку«Начните», нажмите кнопку«Выполнить», введите %windir%\SysWoW64\cmd.exe и нажмите кнопку «ОК».
Проверка версии
Некоторые 32-битные программы проверяют сведения о версии операционной системы. Многие 32-битные программы, которые выполняют эту проверку, не распознают 64-х версий Windows как совместимые операционные системы. При таком поведении 32-битная программа генерирует ошибку проверки версии, а затем закрывается. В таком случае обратитесь к производителю 32-битной программы за обновлением, совместимым с 64-ми версиями Windows.
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. Обратитесь к производителю устройства за драйвером, совместимым с 64-ми версиями Windows.
Консоль управления (MMC)
В 64-х версиях Windows для запуска различных оснастки используется 64-битная версия консоли управления (MMC). Однако иногда может потребоваться, чтобы 32-битная версия MMC запускала оснастки в подсистеме WOW64. Дополнительные сведения о поведении MMC в 64-х версиях Windows см. в разделе «Запуск 32- и 64-битных оснасток в 64-битных windows» в разделе «Использование MMC 2.0» документации по Microsoft Platform SDK. Чтобы просмотреть этот документ, посетите следующий веб-сайт Майкрософт: запуск 32- и 64-битных оснастки в 64-bit Windows
x64 Considerations
В 64-х версиях Windows поддерживаются 32-битные инструкции и 64-битные инструкции. Подсистема WOW64 может запускать 32-битные программы в 64-битном режиме, переключая нативный режим процессора. Отдельные аппаратные или программные уровни не требуются. При запуске 32-битной программы в 64-х версиях Windows производительность может не снизиться.
Для получения дополнительных сведений о производительности процессора на основе x64 обратитесь к производителю процессора или посетите веб-сайт изготовителя. Сведения и решение, представленные в этом документе, представляют текущее представление корпорации Майкрософт по этим вопросам на дату публикации. Это решение доступно через Корпорацию Майкрософт или стороне поставщика. Корпорация Майкрософт не рекомендует использовать сторонних поставщиков или сторонние решения, которые могут быть описаны в этой статье. В этой статье также могут быть другие сторонние поставщики или сторонние решения. Поскольку корпорация Майкрософт должна реагировать на изменение условий рынка, эту информацию не следует интерпретировать как обязательства корпорации Майкрософт. Корпорация Майкрософт не может гарантировать или утвердить точность информации или любого решения, представленного корпорацией Майкрософт или любым указанным сторонним поставщиком.
Корпорация Майкрософт не дает никаких гарантий и исключает все представления, гарантии и условия, как экспресс-, подразумеваемые, так и предусмотренные законом. К ним относятся, помимо прочего, представления, гарантии или условия заголовка, нена нарушение прав, удовлетворительное условие, возможность продавца и пригодность для конкретной цели в отношении любой службы, решения, продукта или любых других материалов или информации. Корпорация Майкрософт не несет ответственности ни за одно стороне решение, упомянутое в этой статье.
Ссылки
Дополнительные сведения об процессоре AMD64 можно получить на следующем веб-сайте Advanced Micro Devices: AMD Website
Контактные данные сторонних организаций предоставлены в этой статье с целью помочь пользователям получить необходимую техническую поддержку. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не дает гарантий относительно правильности приведенных контактных данных сторонних производителей.
Дополнительные сведения о разработке программ для версий Windows Server 2003 на основе Itanium и Windows XP можно найти на следующем веб-сайте Майкрософт: введение в разработку приложений для 64-битной версии Windows на основе Itanium
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких явных, подразумеваемых и прочих гарантий относительно производительности или надежности этих продуктов.