Какие библиотеки нужны для windows 10 для игр
Перейти к содержимому

Какие библиотеки нужны для windows 10 для игр

  • автор:

Библиотеки Windows

Библиотеки — это виртуальные контейнеры для содержимого пользователей. Библиотека может содержать файлы и папки, хранящиеся на локальном компьютере или в удаленном хранилище. В Windows Обозреватель пользователи взаимодействуют с библиотеками так же, как и с другими папками. Библиотеки создаются на основе устаревших известных папок (таких как «Мои документы», «Мои рисунки» и «Моя музыка»), с которыми знакомы пользователи, и эти известные папки автоматически включаются в библиотеки по умолчанию и задаются в качестве расположения сохранения по умолчанию.

Функции для пользователей

Библиотеки Windows предоставляют полный поиск содержимого и расширенные метаданные. Библиотеки предоставляют пользователям следующие преимущества:

  • Объединяйте содержимое из нескольких расположений хранения в одну унифицированную презентацию.
  • Разрешить пользователям стекать и группировать содержимое библиотеки на основе метаданных.
  • Включите быстрый полнотекстовый поиск в нескольких местах хранения, из Windows Обозреватель или из меню «Пуск».
  • Поддержка настраиваемых вариантов поиска фильтров на основе типов файлов, содержащихся в библиотеке.
  • Разрешить пользователям создавать новые библиотеки и указывать папки, которые они хотят включить.

Функции для администраторов

Администраторы могут настраивать библиотеки Windows и управлять ими следующими способами:

  • Создание пользовательских библиотек путем создания и развертывания файлов описания библиотеки (*.library-ms).
  • Скрыть или удалить библиотеки по умолчанию. (Сам узел библиотеки нельзя скрыть или удалить из области навигации Windows Обозреватель.)
  • Укажите набор библиотек, доступных для пользователя по умолчанию, а затем разверните эти библиотеки для пользователей, производных от пользователя по умолчанию.
  • Укажите расположения для включения в библиотеку.
  • Удалите расположение по умолчанию из библиотеки.
  • Удалите расширенные функции библиотек, если среда не поддерживает локальное кэширование файлов, используя функции Отключить библиотеки Windows, которые используют индексированные данные файлов групповая политика. Этот метод делает все библиотеки базовыми (см. статью Требования к индексации и базовые библиотеки), удаляет библиотеки из область поиска в меню «Пуск» и удаляет другие функции, чтобы не запутать пользователей и не потреблять ресурсы.

Дополнительные сведения о библиотеках

Следующие сведения важны в контексте библиотек, которые могут потребоваться для успешного управления предприятием.

Содержимое библиотеки

Включение папки в библиотеку не приводит к физическому перемещению или изменению расположения хранилища файлов или папок; библиотека представляет собой представление этих папок. Однако пользователи, взаимодействующие с файлами в библиотеке, копируют, перемещают и удаляют сами файлы, а не копии этих файлов.

Библиотеки и известные папки по умолчанию

Библиотеки по умолчанию:

  • Документы
  • Музыка
  • Изображения
  • Видео

Библиотеки основаны на устаревших известных папках (таких как «Мои документы», «Мои рисунки» и «Моя музыка»), с которыми знакомы пользователи. Эти известные папки автоматически включаются в библиотеки по умолчанию и задаются в качестве расположения сохранения по умолчанию. То есть, когда пользователи перетаскивают, копируют или сохраняют файл в библиотеку документов, файл перемещается, копируется или сохраняется в папку Мои документы. Администраторы и пользователи могут изменить расположение сохранения по умолчанию.

Скрытие библиотек по умолчанию

Пользователи или администраторы могут скрывать или удалять библиотеки по умолчанию, хотя узел библиотеки в области навигации не может быть скрыт или удален. Скрыть библиотеку по умолчанию предпочтительнее, чем удалить ее, так как такие приложения, как Медиаплеер Windows полагаться на библиотеки по умолчанию и повторно создавать их, если они не существуют на компьютере. Инструкции см. в статье Как скрыть библиотеки по умолчанию .

Расположения сохранения по умолчанию для библиотек

У каждой библиотеки есть расположение для сохранения по умолчанию. Файлы сохраняются или копируются в это расположение, если пользователь решает сохранить или скопировать файл в библиотеку, а не в определенное расположение в библиотеке. Известные папки — это расположения для сохранения по умолчанию; однако пользователи могут выбрать другое расположение для сохранения. Если пользователь удаляет расположение сохранения по умолчанию из библиотеки, следующее расположение автоматически выбирается в качестве нового расположения сохранения по умолчанию. Если библиотека пуста из расположений или не удается сохранить все включенные расположения, операция сохранения завершается ошибкой.

Требования к индексации и базовые библиотеки

Некоторые функции библиотеки зависят от содержимого индексированных библиотек. Расположения библиотек должны быть доступны для локального индексирования или индексироваться в соответствии с протоколом индексирования Windows. Если индексирование не включено для одного или нескольких расположений в библиотеке, вся библиотека возвращается к базовым функциям:

  • Не поддерживается просмотр метаданных через представления Упорядочить по .
  • Поиск только grep.
  • Варианты поиска только для Grep. Единственными свойствами, доступными для входных предложений, являются Дата изменения и Размер.
  • Нет поддержки поиска из меню «Пуск». Поиск в меню «Пуск» не возвращает файлы из базовых библиотек.
  • В режиме содержимого не возвращаются предварительные просмотры фрагментов файлов для результатов поиска.

Чтобы избежать этой ограниченной функциональности, все расположения в библиотеке должны быть индексируемыми как локально, так и удаленно. Когда пользователи добавляют локальные папки в библиотеки, Windows добавляет расположение в индексирование область и индексирует содержимое. Удаленные расположения, которые не индексируются удаленно, можно добавить в локальный индекс с помощью автономной синхронизации файлов. Эта функция предоставляет пользователю преимущества локального хранилища, даже если расположение является удаленным. Если папка «Всегда доступна в автономном режиме» создает локальную копию файлов папки, добавляет эти файлы в индекс и синхронизирует локальные и удаленные копии. Пользователи могут вручную синхронизировать расположения, которые не индексируются удаленно и не используют перенаправление папок, чтобы получить преимущества локального индексирования.

Инструкции по включению индексирования см. в статье Включение индексирования расположений библиотек.

Если ваша среда не поддерживает локальное кэширование файлов, следует включить функции Отключить библиотеки Windows, использующие индексированные данные файлов, групповая политика. Это позволяет сделать все библиотеки базовыми. Дополнительные сведения см. в разделе групповая политика для Поиска Windows, обзора и упорядочения.

Перенаправление папок

Хотя сами файлы библиотеки не могут быть перенаправлены, вы можете перенаправить известные папки, включенные в библиотеки, с помощью перенаправления папок. Например, можно перенаправить папку «Мои документы», которая включена в библиотеку документов по умолчанию. При перенаправлении известных папок необходимо убедиться, что назначение индексировано или всегда доступно в автономном режиме, чтобы обеспечить полную функциональность библиотеки. В обоих случаях файлы целевой папки индексируются и поддерживаются в библиотеках. Эти параметры настраиваются на стороне сервера.

Поддерживаемые расположения хранилища

В следующей таблице показано, какие расположения поддерживаются в библиотеках Windows.

Поддерживаемые расположения Неподдерживаемые расположения
Фиксированные локальные тома (NTFS/FAT) Съемные диски
Индексированные общие папки (серверы отдела*, домашние компьютеры с Windows) Съемные носители (например, DVD-диски)

* Для общих папок, индексированных на сервере отдела, Поиск Windows хорошо работает в рабочей группе или на сервере домена, который имеет характеристики, аналогичные серверу рабочей группы. Например, Поиск Windows хорошо работает на сервере отдела с одним общим ресурсом со следующими характеристиками:

  • Ожидаемая максимальная нагрузка — четыре одновременных запроса.
  • Ожидаемый индексный корпус составляет не более одного миллиона документов.
  • Пользователи напрямую обращаются к серверу. То есть сервер не становится доступным через пространства имен DFS.
  • Пользователи не перенаправляются на другой сервер в случае сбоя. То есть серверные кластеры не используются.

Атрибуты библиотеки

Следующие атрибуты библиотеки можно изменить в windows Обозреватель, в диалоговом окне «Управление библиотеками» или в файле описания библиотеки (*.library-ms):

  • Имя
  • Расположения библиотек
  • Порядок расположения библиотеки
  • Расположение сохранения по умолчанию

Значок библиотеки может быть изменен администратором или пользователем, непосредственно изменив файл схемы описания библиотеки. Сведения о создании файлов описания библиотеки см. в разделе Схема описания библиотеки .

См. также

Основные понятия

  • Функции Поиска Windows
  • Функции индексирования Windows
  • Функции федеративного поиска
  • Практические руководства по администрировать
  • групповая политика для поиска, просмотра и организации Windows
  • Дополнительные ресурсы для поиска, обзора и организации Windows

Другие ресурсы

  • Перенаправление папок, автономные файлы и перемещаемые профили пользователей
  • Схема описания библиотеки

Загрузки последних поддерживаемых версий Распространяемого компонента Visual C++

Распространяемый компонент Visual C++ устанавливает библиотеки среды выполнения Microsoft C и C++ (MSVC). Для многих приложений, созданных с помощью средств Microsoft C и C++, требуются эти библиотеки. Если приложение использует эти библиотеки, перед установкой приложения необходимо установить пакет Microsoft Распространяемый компонент Visual C++ в целевой системе. Архитектура распространяемого пакета должна соответствовать целевой архитектуре приложения. Распространяемая версия должна быть не менее последней, чем набор инструментов сборки MSVC, используемый для сборки приложения. Мы рекомендуем использовать последнюю распространяемую версию Visual Studio, за исключением некоторых исключений, указанных далее в этой статье.

Дополнительные сведения об установке и распространении компонентов Visual Studio см. в разделе «Распространение файлов Visual C++».

Visual Studio 2015, 2017, 2019 и 2022

В этой таблице перечислены последние поддерживаемые пакеты Microsoft Распространяемый компонент Visual C++ для Visual Studio 2015, 2017, 2019 и 2022. Последняя поддерживаемая версия имеет последние реализованные функции C++, безопасность, надежность и производительность. Он также включает последние обновления соответствия стандартов языка И библиотекИ C++ . Мы рекомендуем установить эту версию для всех приложений, созданных с помощью Visual Studio 2015, 2017, 2019 или 2022.

В отличие от старых версий Visual Studio, которые имеют редкие обновления redist, номер версии не указан в следующей таблице для Visual Studio 2015-2022, так как редист часто обновляется. Чтобы найти номер версии последнего редиста, скачайте нужный редист, используя одну из следующих ссылок. Затем просмотрите его свойства с помощью Windows проводник. В области сведений версия файла содержит версию redist.

Последняя версия Microsoft Распространяемый компонент Visual C++

Последняя версия 14.38.33135.0

Чтобы скачать эту версию для каждой поддерживаемой архитектуры, используйте следующие ссылки:

Архитектура Установить связь Примечания.
ARM64 https://aka.ms/vs/17/release/vc_redist.arm64.exe Permalink для последней поддерживаемой версии ARM64
X86 https://aka.ms/vs/17/release/vc_redist.x86.exe Permalink для последней поддерживаемой версии x86
X64 https://aka.ms/vs/17/release/vc_redist.x64.exe Permalink для последней поддерживаемой версии x64. Распространяемый пакет X64 содержит двоичные файлы ARM64 и X64. Этот пакет упрощает установку необходимых двоичных файлов Visual C++ ARM64 при установке распространяемого компонента X64 на устройстве ARM64.

Скачайте другие версии, включая долгосрочные версии канала выпуска LTSC, из my.visualstudio.com.

Примечания.

  • В Распространяемый компонент Visual C++ для Visual Studio 2015-2022 нет отдельных пакетов для разных языков. Он содержит EULAs для всех поддерживаемых языков.
  • Некоторые загрузки, которые упоминание в этой статье, доступны в настоящее время на my.visualstudio.com. Войдите с помощью учетной записи подписки Visual Studio, чтобы получить доступ к ссылкам скачивания. Если вы запрашиваете учетные данные, используйте имеющуюся учетную запись подписки Visual Studio. Или создайте бесплатную учетную запись, выбрав учетную запись «Нет»? Создайте его! Ссылку.
  • Версии Visual Studio, начиная с Visual Studio 2015, используют те же распространяемые файлы. Например, любые приложения, созданные наборами инструментов Visual Studio 2015, 2017, 2019 или 2022, могут использовать последние Распространяемый компонент Visual C++ Майкрософт. Однако версия Microsoft Распространяемый компонент Visual C++, установленной на компьютере, должна быть той же или выше, чем версия набора инструментов Visual C++, используемого для создания приложения. Дополнительные сведения о том, какую версию распространяемого компонента необходимо установить, см. в разделе «Определение распространяемых библиотек DLL». Дополнительные сведения о двоичной совместимости см. в статье C++ с двоичной совместимостью между версиями Visual Studio.
  • Поддержка Windows XP: корпорация Майкрософт завершила поддержку Windows XP 8 апреля 2014 г. Текущие версии Распространяемый компонент Visual C++ для Visual Studio 2015-2022 поддерживают только Windows 7, 8.1, 10 и 11. Последняя версия Распространяемый компонент Visual C++, которая работает в Windows XP, поставляется в Visual Studio 2019 версии 16.7 (версии файлов, начиная с версии 14.27). Распространяемый компонент доступен в разделе my.visualstudio.com Загрузки как Распространяемый компонент Visual C++ для Visual Studio 2019 (версия 16.7). Используйте поле поиска, чтобы найти эту версию. Чтобы скачать файлы, выберите нужную платформу и язык, а затем нажмите кнопку «Скачать «.
  • Распространяемый компонент Visual C++ поддерживает несколько параметров командной строки. Дополнительные сведения см. в разделе «Параметры командной строки» для распространяемых пакетов.

Visual Studio 2013 (VC++ 12.0)

Эти ссылки загружают последние поддерживаемые пакеты microsoft microsoft en-US Распространяемый компонент Visual C++ для Visual Studio 2013. Другие версии и языки можно скачать из обновления для распространяемого пакета Visual C++ 2013 или из my.visualstudio.com.

Архитектура Версия Установить связь
X86 12.0.40664.0 vcredist_x86.exe
X64 12.0.40664.0 vcredist_x64.exe

Другие версии

  • Многобайтовая библиотека MFC для Visual Studio 2013. Эта надстройка MFC для Visual Studio 2013 содержит многобайтовый набор символов (МБ CS) библиотеки классов Microsoft Foundation (MFC).
  • Среда выполнения Visual C++ 2013 для неопубликованных приложений Windows 8.1. Дополнительные сведения см. в разделе «Среда выполнения C++ для неопубликованных приложений Windows 8.1» в блоге команды C++.

Visual Studio 2012 (VC++ 11.0) с обновлением 4 (больше не поддерживается)

Эти ссылки скачивают последние доступные пакеты microsoft en-US Распространяемый компонент Visual C++ для Visual Studio 2012 с обновлением 4. Другие версии и языки можно скачать из пакетов Microsoft Распространяемый компонент Visual C++ для Visual Studio 2012 с обновлением 4 или с my.visualstudio.com.

Архитектура Версия Установить связь
X86 11.0.61030.0 en_visual_cpp_redistributable_for_visual_studio_2012_update_4_x86_3161523.exe
X64 11.0.61030.0 en_visual_cpp_redistributable_for_visual_studio_2012_update_4_x64_3161523.exe

Visual Studio 2010 (VC++ 10.0) с пакетом обновления 1 (SP1) (больше не поддерживается)

Архитектура Версия Установить связь
X86 10.0.40219.325 vcredist_x86.exe
X64 10.0.40219.325 vcredist_x64.exe

Скачайте распространяемые файлы для других языков и архитектур:

Visual Studio 2008 (VC++ 9.0) с пакетом обновления 1 (SP1) (больше не поддерживается)

Visual Studio 2008 с пакетом обновления 1 (SP1) достигла конца расширенной поддержки 10 апреля 2018 г.

Архитектура Версия Установить связь
X86 9.0.30729.5677 vcredist_x86.exe
X64 9.0.30729.5677 vcredist_x64.exe

Скачайте распространяемые файлы для других языков и архитектур:

Visual Studio 2005 (VC++ 8.0) с пакетом обновления 1 (SP1) (больше не поддерживается)

Окончание расширенной поддержки Visual Studio 2005 12 апреля 2016 г.

  • Распространяемые файлы для архитектур X86, X64 и IA64 доступны в microsoft Visual C++ 2005 с пакетом обновления 1 для распространяемого пакета MFC.

Заметки о выпуске

  • Заметки о выпуске Visual Studio 2022
  • Новые возможности C++ в Visual Studio
  • Новые возможности Visual C++ 2003–2015
  • Серверная часть MSVC Обновления с Visual Studio 2022 версии 17.3
  • Журнал изменений стандартной библиотеки шаблонов (STL)
  • Год улучшений C++
  • Управление версиями компилятора Microsoft Visual C++

Заметки о соответствии C++

  • Улучшения соответствия C++ в Visual Studio
  • Улучшения соответствия C++ в Visual Studio 2019
  • Улучшения соответствия C++ в Visual Studio 2017
  • Соответствие языка Microsoft C/C++ версии Visual Studio

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.

Отправить и просмотреть отзыв по

«Компоненты/библиотеки»

Microsoft Visual C++ 2005-2008-2010-2012-2013-2019-2022 Redistributable Package Hybrid 09-04-2022

Набор библиотек, которые необходимы для запуска старых и новых десктопных программ и видеоигр.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Microsoft Visual C++ 2013 Redistributable —

Обновленная версия библиотек, необходимых для корректной работы приложений, написанных на C++.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Pygame 1.9.2a0

Библиотеки для создания игр на Python.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Microsoft Visual C++ 2012 Redistributable —

Набор библиотек Visual C++, необходимых для корректной работы приложений, написанных на этом языке программирования.

Бесплатная (Freeware) —>
↓ Показать скриншоты

Microsoft Visual C++ 2008 Redistributable

Microsoft Visual C++ 2008 Redistributable — библиотеки для запуска приложений, написанных на C++.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Microsoft Visual C++ 2010 Redistributable —

Microsoft Visual C++ 2010 Redistributable — большой набор библиотек для программы, написанных на языке C++.

Бесплатная (Freeware) —>
↓ Показать скриншоты

Коллекция JavaScript 1.0

Коллекция JavaScript — комплект скриптов, написанных на JavaScript.
Бесплатная (Freeware) —>
↓ Показать скриншоты

RTL.bpl rtl120.bpl

Набор динамически подключаемых библиотек Borland Runtime Library разных версий.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Smart Card ToolSet PRO 3.4 build 87

Профессиональная программа для низкоуровневой работы с чиповыми смарт-картами на уровне APDU.
Платная (Shareware) —>
↓ Показать скриншоты

Windows PowerShell 7.4.0

Фирменная оболочка командной строки и язык сценариев, созданный на базе NET Framework.
Бесплатная (Freeware) —>
↓ Показать скриншоты

OpenSSL 1.1.1s

Открытые библиотеки для симметричного шифрования криптографического протокола.
Бесплатная (Freeware) —>
↓ Показать скриншоты

XNA Framework 4.0

Набор системных библиотек и компонентов, необходимый для создания и запуска видеоигр на платформах Windows и XBox.

Бесплатная (Freeware) —>
↓ Показать скриншоты

msvbvm50.dll —

Библиотека, необходимая для запуска приложений, написанных на Visual Basic.
Бесплатная (Freeware) —>
↓ Показать скриншоты

Microsoft Visual C++ 2005 Redistributable

Microsoft Visual C++ 2005 Redistributable — библиотеки, необходимые для запуска программ, написанных в среде Microsoft Visual C++.

64-разрядное программирование для разработчиков игр

Производители процессоров исключительно поставляемые 64-разрядные процессоры на своих настольных компьютерах, и даже наборы микросхем большинства ноутбуков поддерживают технологию x64. Разработчикам игр важно воспользоваться преимуществами 64-разрядных процессоров в новых приложениях и обеспечить правильную работу предыдущих приложений на новых процессорах и 64-разрядных выпусках Windows Vista и Windows 7. В этой статье рассматриваются проблемы совместимости и переноса, которые помогают разработчикам упростить переход на 64-разрядные платформы.

В настоящее время корпорация Майкрософт имеет следующие 64-разрядные операционные системы:

  • Windows 10
  • Windows 11
  • Windows Server 2019 или более поздней версии;

Предыдущие 64-разрядные операционные системы:

  • Windows Server 2003 с пакетом обновления 1
  • Windows XP Professional x64 Edition (доступно для изготовителей оборудования и разработчиков через MSDN)
  • Windows Vista
  • Windows 7
  • Windows 8.0
  • Windows 8.1
  • Windows Server 2008 – 2016

Windows Server 2008 R2 или более поздней версии доступен только в виде 64-разрядной версии. Windows 11 доступен только в виде 64-разрядной версии или ARM64.

  • Различия в адресируемой памяти
  • Указание больших адресов при сборке
  • Совместимость 32-разрядных приложений на 64-разрядных платформах
    • Потенциальные проблемы совместимости

    Различия в адресируемой памяти

    Во-первых, большинство разработчиков замечают, что 64-разрядные процессоры обеспечивают огромный скачок объема физической и виртуальной памяти, которую можно решить.

    • 32-разрядные приложения на 32-разрядных платформах могут содержать до 2 ГБ.
    • 32-разрядные приложения, созданные с флагом компоновщика /LARGEADDRESSAWARE:YES в 32-разрядной версии Windows XP или Windows Server 2003 со специальным параметром загрузки /3GB, могут содержать до 3 ГБ. Это ограничивает ядро размером только 1 ГБ, что может привести к сбою некоторых драйверов или служб.
    • 32-разрядные приложения, созданные с флагом компоновщика /LARGEADDRESSAWARE:YES в 32-разрядных выпусках Windows Vista, Windows Server 2008 и Windows 7, могут обращаться к памяти до числа, указанного элементом данных конфигурации загрузки (BCD) IncreaseUserVa. Параметр IncreaseUserVa может иметь значение в диапазоне от 2048 по умолчанию до 3072 (что соответствует объему памяти, настроенной параметром загрузки /3 ГБ в Windows XP). Оставшиеся 4 ГБ выделяются ядру и могут привести к сбою конфигураций драйверов и служб. Дополнительные сведения о BCD см. в разделе Данные конфигурации загрузки.
    • 32-разрядные приложения на 64-разрядных платформах могут адресовать до 2 ГБ или до 4 ГБ с флагом компоновщика /LARGEADDRESSAWARE:YES.
    • 64-разрядные приложения используют 43 бита для адресации, что обеспечивает 8 ТБ виртуального адреса для приложений и 8 ТБ, зарезервированных для ядра.

    Помимо только памяти, 64-разрядные приложения, использующие сопоставленные с памятью операции ввода-вывода, значительно выигрывают от увеличения виртуального адресного пространства. 64-разрядная архитектура также повысила производительность с плавающей запятой и ускорила передачу параметров. 64-разрядные процессоры имеют удвоение числа регистров как общего назначения, так и потоковых расширений SIMD (SSE), а также поддержку наборов инструкций SSE и SSE2; многие 64-разрядные процессоры даже поддерживают наборы инструкций SSE3.

    Указание больших адресов при сборке

    Рекомендуется указывать большие адреса при создании 32-разрядных приложений с помощью флага компоновщика /LARGEADDRESSAWARE, даже если приложение не предназначено для 64-разрядной платформы из-за преимуществ, которые получаются бесплатно. Как упоминалось ранее, включение этого флага для сборки позволяет 32-разрядной программе получать доступ к большему объему памяти с помощью специальных параметров загрузки в 32-разрядной или 64-разрядной ОС. Однако разработчики должны быть осторожны, чтобы не были сделаны предположения указателя, например, предполагая, что высокий бит никогда не устанавливается в 32-разрядном указателе. Как правило, рекомендуется включить флаг /LARGEADDRESSAWARE.

    32-разрядные приложения с поддержкой больших адресов могут определить во время выполнения, сколько общего виртуального адресного пространства доступно им с текущей конфигурацией ОС, вызвав GlobalMemoryStatusEx. Результат ullTotalVirtual будет варьироваться от 2147352576 байтов (2 ГБ) до 4294836224 байтов (4 ГБ). Значения, превышающие 3221094400 (3 ГБ), можно получить только в 64-разрядных выпусках Windows. Например, если параметр IncreaseUserVa имеет значение 2560, результатом будет ullTotalVirtual со значением 2684223488 байтов.

    Совместимость 32-разрядных приложений на 64-разрядных платформах

    64-разрядные операционные системы Windows совместимы с архитектурой IA32, а большинство ИНТЕРФЕЙСов API, используемых в 32-разрядных приложениях, доступны через 32-разрядную версию Windows в 64-разрядном эмуляторе Windows WOW64. WOW64 помогает гарантировать, что эти API будут работать должным образом.

    WOW64 имеет уровень выполнения, который обрабатывает маршалирование 32-разрядных данных. WOW64 перенаправляет запросы dll-файлов, некоторые ветви реестра для 32-разрядных приложений и отражает некоторые ветви реестра для 32- и 64-разрядных приложений.

    Дополнительные сведения о WOW64 см. в разделе Сведения о реализации WOW64.

    Потенциальные проблемы совместимости

    Большинство приложений, разработанных для 32-разрядной платформы, будут работать без проблем на 64-разрядной платформе. В некоторых приложениях могут возникнуть проблемы, которые могут включать следующие:

    • Все драйверы для 64-разрядных выпусков операционных систем Windows должны быть 64-разрядными версиями. Требование новых 64-разрядных драйверов влияет на схемы защиты от копирования, основанные на старых драйверах. Обратите внимание, что для загрузки 64-разрядными выпусками Windows драйверы в режиме ядра должны иметь подпись Authenticode.
    • 64-разрядные процессы не могут загружать 32-разрядные библиотеки DLL, а 32-разрядные процессы не могут загружать 64-разрядные библиотеки DLL. Прежде чем продолжить разработку, разработчики должны обеспечить доступность 64-разрядных версий сторонних библиотек DLL. Если в 64-разрядном процессе необходимо использовать 32-разрядную библиотеку DLL, можно использовать межпроцессное взаимодействие Windows (IPC). Com-компоненты также могут использовать внепроцессные серверы и маршалирование для обмена данными между границами, но это может привести к снижения производительности.
    • Многие процессоры x64 также являются многоядерными, и разработчикам необходимо проверить, как это влияет на их устаревшие приложения. Дополнительные сведения о многоядерных процессорах и последствиях для игровых приложений можно найти в разделе Game Timing и Многоядерные процессоры.
    • Приложения также должны вызывать SHGetFolderPath для обнаружения путей к файлам, так как некоторые имена папок в некоторых случаях изменились. Например, CSIDL_PROGRAM_FILES возвращает «C:\Program Files(x86)» для 32-разрядного приложения, работающего на 64-разрядной платформе, а не «C:\Program Files». Разработчики должны помнить о том, как работают возможности перенаправления и отражения эмулятора WOW64.

    Кроме того, разработчики должны быть осторожны с 16-разрядными программами, которые они могут по-прежнему использовать. WOW64 не может обрабатывать 16-разрядные приложения; сюда входят старые установщики и все программы MS-DOS.

    Наиболее распространенными проблемами совместимости являются установщики, которые выполняют 16-разрядный код и не имеют 64-разрядных драйверов для схем защиты от копирования.

    В следующем разделе рассматриваются проблемы, связанные с переносом кода в 64-разрядную версию для разработчиков, которые хотят обеспечить работу своих устаревших программ на 64-разрядных платформах. Он также предназначен для разработчиков, которые не знакомы с 64-разрядным программированием.

    Перенос приложений на 64-разрядные платформы

    Наличие правильных инструментов и библиотек поможет упростить переход от 32-разрядной к 64-разрядной разработке. Пакет SDK для DirectX 9 содержит библиотеки для поддержки проектов на основе x86 и x64. Microsoft Visual Studio 2005 и Visual Studio 2008 поддерживают создание кода как для x86, так и для 64-разрядных систем и поступают с библиотеками, оптимизированными для создания кода x64. Однако разработчикам также потребуется распространять среды выполнения Visual C со своими приложениями. Обратите внимание, что экспресс-выпуски Visual Studio 2005 и Visual Studio 2008 не включают компилятор x64, но все это делают выпуски Standard, Professional и Team System.

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

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

    Visual C++ 2010 или более поздней версии включает заголовки stdint.h и cstdint C99, которые определяют стандартные типы переносимости int32_t, uint32_t, int64_t, uint64_t, intptr_t и uintptr_t. Использование этих типов вместе со стандартными ptrdiff_t и size_t типами данных может быть предпочтительнее типов windows portabilty, используемых ниже для повышения переносимости кода.

    Ниже перечислены основные проблемы с переносом.

    Усечение указателя

    Указатели являются 64-разрядными в 64-разрядной ОС, поэтому приведение указателей к другим типам данных может привести к усечению, а арифметика указателя может привести к повреждению. Использование флага /Wp64 обычно выдает предупреждение об этой проблеме, но рекомендуется использовать полиморфные типы (INT_PTR, DWORD_PTR, SIZE_T, UINT_PTR и т. д.) при приведение типов указателей. Так как указатели являются 64-разрядными на новых платформах, разработчикам следует проверка порядок указателей и типы данных в классах и структурах, чтобы уменьшить или исключить заполнение.

    Типы данных и двоичные файлы

    Хотя число указателей увеличивается с 32 бит до 64 на 64-разрядной платформе, другие типы данных этого не поддерживают. Типы данных с фиксированной точностью (DWORD32, DWORD64, INT32, INT64, LONG32, LONG64, UINT32, UINT64) можно использовать в местах, где размер типа данных должен быть известен; например, в двоичной структуре файлов. Изменения размера указателя и выравнивания данных требуют специальной обработки для обеспечения совместимости между 32-разрядными и 64-разрядными. Дополнительные сведения см. в статье Новые типы данных.

    Старые API Win32 и выравнивание данных

    Некоторые API Win32 устарели и заменены более нейтральными вызовами API, такими как SetWindowLongPtr вместо SetWindowLong.

    Снижение производительности для несвязанных обращений выше на платформе x64, чем на платформе x86. Макросы TYPE_ALIGNMENT(t) и FIELD_OFFSET(t, член) можно использовать для определения сведений о выравнивании, которые могут использоваться непосредственно в коде. Правильное использование этих вышеупомянутых макросов должно исключить потенциальные штрафы за несоотвязанный доступ.

    Дополнительные сведения о макросе TYPE_ALIGNMENT, макросе FIELD_OFFSET и общих сведениях о 64-разрядном программировании см. в статье 64-разрядное программирование Windows: советы по миграции: дополнительные рекомендации и правила использования указателей.

    Код сборки

    Встроенный код сборки не поддерживается на 64-разрядных платформах и нуждается в замене. Изменения в архитектуре могли привести к изменению узких мест приложений, а C/C++ или встроенные функции могут достичь аналогичных результатов с помощью кода, который проще читать. Рекомендуется переключить весь код сборки на C или C++. Встроенные функции можно использовать вместо кода сборки, но их следует использовать только после выполнения полного профилирования и анализа.

    X87, MMX и 3DNow! Наборы инструкций являются устаревшими в 64-разрядных режимах. Наборы инструкций по-прежнему существуют для обеспечения обратной совместимости в 32-разрядном режиме; однако во избежание проблем совместимости в будущем их использование в текущих и будущих проектах не рекомендуется.

    Нерекомендуемые API

    Некоторые старые API DirectX были удалены для 64-разрядных собственных приложений: DirectPlay 4 и более ранних версий, DirectDraw 6 и более ранних версий, Direct3D 8 и более ранних версий, а также DirectInput 7 и более ранних версий. Кроме того, основной API DirectMusic доступен для собственных 64-разрядных приложений, но уровень производительности и DirectMusic Producer являются устаревшими.

    Visual Studio выдает предупреждения об устаревании, и эти изменения не являются проблемой для разработчиков, использующих новейшие API.

    Профилирование и оптимизация перенесенных приложений

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

    В некоторых структурах внутренние типы данных могут быть переупорядочены для экономии места в памяти и улучшения кэширования. В некоторых случаях индексы массива можно использовать вместо полного 64-разрядного указателя. Флаг /fp:fast может улучшить оптимизацию и векторизацию с плавающей запятой. Использование __restrict, declspec(restrict) и declspec(noalias) может помочь компилятору разрешить псевдонимы и улучшить использование файла регистра.

    Дополнительные сведения о /fp:fast см. в разделе /fp (указание Floating-Point поведения).

    Дополнительные сведения о __restrict см. в статье Модификаторы, относящиеся к Майкрософт.

    Дополнительные сведения о declspec(restrict) см. в статье Рекомендации по оптимизации.

    Дополнительные сведения о declspec(noalias) можно найти по адресу __declspec(noalias).

    Управляемый код в 64-разрядной операционной системе

    Управляемый код используется многими разработчиками игр в их цепочке инструментов, поэтому понимание того, как он ведет себя в 64-разрядной ОС, может быть полезным. Управляемый код не зависит от набора инструкций, поэтому при запуске управляемого приложения в 64-разрядной ОС среда CLR может запускать его как 32-разрядный или 64-разрядный процесс. По умолчанию среда CLR запускает управляемые приложения как 64-разрядные, и они должны работать нормально без проблем. Однако если приложение зависит от собственной 32-разрядной библиотеки DLL, приложение завершится ошибкой при попытке вызвать эту библиотеку DLL. Для 64-разрядного процесса требуется полностью 64-разрядный код, а 32-разрядная библиотека DLL не может быть вызвана из 64-разрядного процесса. Лучшим долгосрочным решением является компиляция машинного кода как 64-разрядного, но вполне разумным краткосрочным решением является просто пометить управляемое приложение как для x86 только с помощью флага сборки /platform:x86.

    Влияние на производительность при запуске 64-разрядной операционной системы

    Так как процессоры с архитектурой AMD64 и Intel 64 могут выполнять 32-разрядные инструкции изначально, они могут запускать 32-разрядные приложения на полной скорости даже в 64-разрядной ОС. Существует небольшая стоимость преобразования параметров между 32-разрядными и 64-разрядными при вызове функций операционной системы, но эти затраты, как правило, незначительны. Это означает, что при запуске 32-разрядных приложений в 64-разрядной ОС не должно наблюдаться замедление.

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

    Сводка

    Шестьдесят четыре битовые архитектуры позволяют разработчикам накладывать ограничения на внешний вид, звук и игру игр. Однако переход от 32-разрядного программирования к 64-разрядному программированию не является тривиальным. Благодаря пониманию различий между ними и использованию новейших средств переход на 64-разрядные платформы может быть проще и быстрее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *