Вам нужно скачать ddraw.dll? Скорее всего, у Вас на ПК случилась ошибка при запуске одного из приложений и сообщение системы об ошибке содержало ссылку на файл ddraw.dll (к примеру, что файл ddraw.dll отсутствует/поврежден/не найден). Рассматриваемая нами библиотека входит в пакет API от компании Microsoft DirectX.
Этот пакет используется для написания программ под Windows, преимущественно игровых приложений. И он же необходим потому Вашей операционной системе, если Вы хотите играть в наиболее популярные игры. (Некоторые игры, например, при установке анализируют ОС и, если не находят установленный пакет DirectX, устанавливают его сами в процессе собственной инсталляции.) Поэтому, если Вам нужно скачать ddraw.dll для warface, Вы оказались на нужной странице.
Почему произошел сбой? Причины ошибок динамически подключаемых библиотек различны. В их числе как неправильная установка «материнского пакета» (в нашем случае — DirectX), так и системные сбои, результат работы вирусного ПО или экстренной остановки операционной системы пользователем. Вне зависимости от возможных причин, нужно понимать, что повреждение или отсутствие динамически подключаемой библиотеки влияет не только на то приложение, на котором Вы выявили ошибку, но и на множество других программ, которым нужен заключенный в DLL код.
Как устранить ошибку?
- Переустановить DirectX.
- Переустановить ddraw.dll.
Начать стоит с первого пункта. Ведь переустановив весь пакет DirectX, Вы добьетесь максимального сохранения системных связей DLL с зависимыми программами. Однако нужно признать, что переустановка пакета помогает не всегда.
В последнем случае скачайте файл ddraw.dll с нашего сайта, где все файлы проходят строгую проверку нашими специалистами, и установите в системе по нашей инструкции.
Рекомендуем сначала скачать и установить/обновить драйвер DirectX. Ошибка должна исчезнуть сразу же после установки.
Как установить DLL файл вы можете прочитать на страницы, в которой максимально подробно описан данный процесс.

Когда файл ddraw.dll отсутствует или не найден ,на экране может появится сообщение об ошибке,похожее на те,которые показаны ниже:
- “ddraw.dll файл не найден”
- “Ddraw.dll не хватает”
- “Ddraw.dll не запускается”
В зависимости от причины ошибки ddraw.dll , вам необходимо выполнить следующие шаги, чтобы исправить эту ошибку:
Установка DirectX
Первое,что вы должны сделать после получения отсутствующего или не найденного файла ddraw.dll,ошибка заключается в запуске команды dxdiag ,чтобы определить,установлен DirectX на вашем ПК или нет.Если вы найдете,что DirectX не установлен,выйдите в Интернет,скачайте и установите последнюю версию DirectX.
Обновление DirectX
Если DirectX установлен,то убедитесь,что версия DirectX у вас поддерживает приложения, которые вы используете.В случае, если вы используете более старую версию DirectX,скачайте и установите последнюю версию DirectX, чтобы исправить эту ошибку.
Удалить и переустановить приложение
Если вы получаете ошибку файла ddraw.dll только при попытке запуска конкретного приложения,повторная установка данного приложения может исправить ошибку.Неправильная установка программы может повредить его файлы и влиять на то, как программа работает.Что бы исправить ошибки, удалите приложение и повторно установите его.
Примечание: Для обеспечения полного удаления программ,либо используйте встроенные Добавить или Удалить Программы или надежный инструмент удаления программ третьей стороны,такая как Perfect Uninstaller,чтобы деинсталлировать программы и приложения с вашего компьютера.
Обновление драйверов вашей видеокарты
Если ошибка ddraw.dll по-прежнему сохраняется,и если у вас установлено приложение,проверьте,видео драйвера,обновинили вы их или нет. Устаревшие файлы драйверов являются распространенной причиной ошибки DLL. Поэтому рекомендуется использовать новейшие драйверы устройств.
Примечание: Windows включают в себя диагностический инструмент, называемый диспетчер Устройств, что позволяет вручную обновлять драйвера. Вы также можете автоматизировать этот процесс,выбрав эффективный сканер обновления драйверов, такой, как Driver Finder.
Выполните сканирование системы на наличие вредоносных программ
Если упомянутые выше инструкции не исправили ошибку ddraw.dll, запустите сканирование всей вашей системы на наличие вирусов,используя инструмент,такие,как Antivirus Plus и StopZilla и убедитесь, что ваш компьютер не заражен вредоносным ПО. Вредоносные программы, как известно,имеют цель — библиотеки DLL файлов, инфицируя их или повреждая коды в них.Изменения, внесенные в файлы DLL повреждают их и делают их недоступными.В результате, отсутствующий или не найденный файл DLL ,ошибка будет генерироваться каждый раз,когда программа пытается получить доступ к зараженному файлу DLL.
Выполните сканирование реестра
Приступим
Вся работа будет проводиться в Visual Studio 2010. Для начала исследуем целевую библиотеку на предмет экспортируемых функций. Для этого воспользуемся утилитой dumpbin (в каталоге VS2010VCin):
В результате получим:
На основании этого мы уже можем создавать свою прокси-dll. Поскольку ничего кроме WinAPI нам не нужно, поэтому в свежем проекте win32-библиотеки первым делом отключим RTL, включив параметр /NODEFAULTLIB и указав точку входа DllMain . Это позволит сильно выиграть в объёме. Далее в DEF файле укажем экспортируемые функции в следующем виде:
Поскольку нам необходимо добиться, чтобы наши «фейковые» функции просто передавали управление своим оригиналам, в C++ объявление каждой из них будет выглядеть так:
Используя __declspec(naked) мы заставляем компилятор не генерировать код стандартного пролога и эпилога, которые вставляют данные в стек. Как результат — данные в стеке хранятся уже в подходящем виде, и мы можем просто передать управление оригинальной функции одной командой jmp без повторной передачи параметров в стек.
Адрес для перехода берётся из структуры ddraw, которая выглядит следующим образом:
Эта структура заполняется в DllMain в момент загрузки нашей прокси-dll. Сперва мы загружаем оригинальную библиотеку, затем по очереди получаем адреса всех экспортируемых функций. Код будет выглядеть примерно так:
В результате мы получили компактную dll, которая просто пропускает через себя все вызовы, совершенно не вмешиваясь в процесс. Похожего результата можно было бы добиться с использованием автоматического решения, но код получился бы не таким красивым.
Оконный режим для DirectDraw игр
После того, как мы получили чистую прокси-dll, которая успешно работает с целевым приложением, мы можем приступить к необходимым модификациям. В момент загрузки нашей библиотеки мы можем пропатчить необходимые участки кода уже в памяти, установить хуки на вызовы из других библиотек, а также изменить логику работы тех функций, что мы проксируем в своей dll. В нашем случае наиболее логичным было бы изменить функцию DirectDrawCreate таким образом, чтобы она возвращала структуру IDirectDraw с подменёнными адресами методов, поведение которых мы хотели бы изменить для достижения конечной цели.
Однако, это слишком большой объём работы для демонстрационной работы, и поэтому мы просто воспользуемся услугами библиотеки wndmode.dll из предыдущей статьи, которая уже реализует всё необходимое, достаточно лишь только подгрузить её в адресное пространство процесса.
Сделаем это прямо в DllMain , добавив в case DLL_PROCESS_ATTACH одну строку:
Остальные изменения на ваш вкус 🙂
Библиотека wndmode.dll
Эта библиотека занимается тем, что перехватывает все вызовы DirectDraw, изменяет параметры таким образом, чтобы программа работала в окне, и только после этого передаёт управление оригинальным функциям DirectDraw.
Сам по себе wndmode.dll является сильно модифицированной версией библиотеки d3dhook.dll, где реализовано:
- Полная независимость от программы D3D Windower
- Настройки загружаются из секции [WINDOWMODE] файла wndmode.ini
- Настройки по умолчанию заменены для совместимости с Genie
- Добавлен параметр Border, который включает/выключает рамку вокруг окна
- Если игровое разрешение равно системному, автоматически убирается рамка
То есть при помощи wndmode.dll мы можем попробовать практически любую DirectDraw игру сделать оконной.
В wndmode.ini могут содержаться следующие настройки:
Большинство опций совпадает с D3D Windower. Были удалены параметры Height и Width, которые фиксировали размеры окна, а вместо этого добавлен параметр Border (отображать или нет рамку окна) и реализовано автоматическое сокрытие рамки, если разрешение игры совпадает с системным разрешением. Подходящие настройки для каждой игры будут разные, их придётся подбирать вручную.