Gdi что за программа

Что такое GDI.EXE? Это безопасно или вирус? Как удалить или исправить это

Что такое GDI.EXE?

GDI.EXE это исполняемый файл, который является частью Microsoft Windows, разработанный Корпорация Microsoft, Версия программного обеспечения для Windows: 3.10.0.103 обычно 220800 в байтах, но у вас может отличаться версия.

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа

GDI.EXE безопасен, или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, для GDI.EXE его путь будет примерно таким: C: \ Program Files \ Microsoft Corporation \ Microsoft Windows \ GDI.EXE

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Наиболее важные факты о GDI.EXE:

Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, прежде чем удалять GDI.EXE. Для этого найдите этот процесс в диспетчере задач.

Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами

Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус GDI.EXE, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

Могу ли я удалить или удалить GDI.EXE?

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

Однако, если это не вирус, и вам нужно удалить GDI.EXE, вы можете удалить Microsoft Windows с вашего компьютера, используя его деинсталлятор. Если вы не можете найти его деинсталлятор, вам может потребоваться удалить Microsoft Windows, чтобы полностью удалить GDI.EXE. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.

Распространенные сообщения об ошибках в GDI.EXE

Наиболее распространенные ошибки GDI.EXE, которые могут возникнуть:

• «Ошибка приложения GDI.EXE».
• «Ошибка GDI.EXE».
• «GDI.EXE столкнулся с проблемой и будет закрыт. Приносим извинения за неудобства».
• «GDI.EXE не является допустимым приложением Win32».
• «GDI.EXE не запущен».
• «GDI.EXE не найден».
• «Не удается найти GDI.EXE».
• «Ошибка запуска программы: GDI.EXE.»
• «Неверный путь к приложению: GDI.EXE.»

Как исправить GDI.EXE

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

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

Обновлен декабрь 2021:

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

Загрузите или переустановите GDI.EXE

Вход в музей Мадам Тюссо не рекомендуется загружать заменяемые exe-файлы с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить GDI.EXE, то мы рекомендуем переустановить основное приложение, связанное с ним. Microsoft Windows,.

Основные возможности 5 в Windows 10

Информация об операционной системе

Ошибки GDI.EXE могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

Источник

Gdi что за программа

Windows GDI+ — это API на основе классов для программистов C/C++. Она позволяет приложениям использовать графику и форматированный текст как на дисплее, так и на принтере. Приложения на основе API-интерфейса Microsoft Win32 не обращаются к графическому оборудованию напрямую. Вместо этого GDI+ взаимодействует с драйверами устройств от имени приложений. GDI+ также поддерживается Microsoft Win64.

Где применимо

функции и классы GDI+ не поддерживаются для использования в службе Windows. попытка использовать эти функции и классы из службы Windows может привести к непредвиденным проблемам, например к снижению производительности службы и исключениям или ошибкам времени выполнения.

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

Аудитория разработчиков

Интерфейс на основе классов GDI+ c++ предназначен для использования программистами C/C++. знание Windows графического пользовательского интерфейса и архитектуры, управляемой сообщениями, является обязательным.

Требования к среде выполнения

GDI+ можно использовать во всех приложениях на основе Windows. GDI+ было введено в Windows XP и Windows Server 2003. Сведения о том, какие операционные системы требуются для использования определенного класса или метода, см. в разделе «Дополнительные сведения» документации по классу или методу.

Источник

Gdi что за программа

Шаблон:Другие значения GDI (Graphics Device Interface, Graphical Device Interface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API, составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.

GDI — это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие, как мониторы и принтеры.

Содержание

Краткое описание [ ]

Для определения атрибутов текста и изображения, которые выводятся на экран или принтер, используется программный объект под названием « контекст устройства » (Device Context, DC). DC, как и большинство объектов GDI, инкапсулирует подробности реализации и данные в себе и к ним нельзя получить прямой доступ.

Для любого рисования нужен объект HDC (Handle DC). При выводе на принтер HDC получается вызовом CreateDC, и на нём вызываются специальные функции для перехода на новую страницу печатаемого документа. При выводе на экран также можно использовать CreateDC, но это приведет к рисованию поверх всех окон вне их границ, потому обычно для рисования на экране используются вызовы GetDC и BeginPaint, принадлежащие уже не GDI, а USER, и возвращающие контекст, ссылающийся на регион отсечения окна.

Реализация [ ]

В Windows 9x и более ранних реализована в 16-битной GDI.DLL, которая, в свою очередь, подгружает выполненный в виде DLL драйвер видеокарты. Драйвер видеокарты первоначально и был обязан реализовать вообще все рисование, в том числе рисование через битмапы в памяти в формате экрана. Позже появилась DIBENG.DLL, в которой было реализовано рисование на битмапах типичных форматов, драйвер был обязан пропускать в неё все вызовы, кроме тех, для которых он задействовал аппаратный ускоритель видеокарты.

Драйвер принтера подгружался таким же образом и имел тот же интерфейс «сверху», но «снизу» он вместо рисования в памяти/на аппаратуре генерировал последовательности команд принтера и отсылал их в объект Job. Эти команды, как правило, были либо двоичные и не читаемые человеком, либо PostScript.

В Windows NT GDI была полностью переписана с нуля заново, причем на Си++ (по слухам, у Microsoft тогда не было компилятора этого языка и они использовали cfront). API для приложений не изменился (кроме добавления кривых Безье), для драйверов — обертки на языке Си вокруг реализованных на Си++ внутренностей (вроде BRUSHOBJ_pvGetRbrush).

Сама GDI была размещена сначала в WINSRV.DLL в процессе CSRSS.EXE, начиная с NT4 — в win32k.sys. Драйверы загружались туда же. DIBENG.DLL была переписана заново и перенесена туда же, как совокупность вызовов EngXxx — EngTextOut и другие. Логика взаимодействия драйвера-GDI-DIBENG осталась примерно та же.

GDI32.DLL в режиме пользователя реализована как набор специальных системных вызовов, ведущих в win32k.sys (до NT4 — как обертки вокруг вызова CsrClientCallServer, посылавшего сообщение в CSRSS.EXE).

Сам же WDDM-драйвер поддерживает только DirectDraw и Direct3D и не имеет отношения ни к GDI, ни к win32k.sys, сопрягаясь с модулем dxgkrnl.sys в ядре.

Критика [ ]

Однако тут речь скорее о компонентах, лежащих ниже GDI.

Однако CUPS имеет серьёзные проблемы с поддержкой WinPrinterов вроде всех дешевых лазерных принтеров Hewlett-Packard. Так как они не поддерживают распространенный формат PCL, для них надо ставить огромные, сложные в настройках и построении пакеты, такие, как HP OfficeJet (порт «hpoj» во FreeBSD). При этом CUPS прекрасно поддерживает струйные принтеры, дорогие модели лазерных принтеров Hewlett-Packard и принтеры PostScript.

Примерные аналоги [ ]

Microsoft Windows GDI

Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.

GDI+ есть не более чем набор оберток над обычной GDI. В Windows 7 появился новый API Direct2D, который есть примерно то же, но реализован «сверху донизу» вплоть до драйвера видеокарты (точнее, использует некие возможности Direct3D в этом драйвере), и может использовать аппаратное ускорение — то есть видеопроцессор трехмерной графики для рисования некоторых двухмерных объектов (antialiasing и т. д.)

Уязвимости [ ]

Примечания [ ]

Ссылки [ ]

Архивация и восстановление • COMMAND.COM • cmd.exe • Средство переноса данных • Просмотр событий • Установщик • netsh.exe • PowerShell • Отчёты о проблемах • rundll32.exe • Программа подготовки системы (Sysprep) • Настройка системы (MSConfig) • Проверка системных файлов • Индекс производительности • Центр обновления • Восстановление системы • Дефрагментация диска • Диспетчер задач • Диспетчер устройств • Консоль управления • Очистка диска • Панель управления ( элементы )

Контакты • DVD Maker • Факсы и сканирование • Internet Explorer • Журнал • Экранная лупа • Media Center • Проигрыватель Windows Media • Программа совместной работы • Центр устройств Windows Mobile • Центр мобильности • Экранный диктор • Paint • Редактор личных символов • Удалённый помощник • Распознавание речи • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов • Исторические: Movie Maker • NetMeeting • Outlook Express • Диспетчер программ • Диспетчер файлов • Фотоальбом • Windows To Go

Chess Titans • Mahjong Titans • Purble Place • Пасьянсы ( Косынка • Паук • Солитер ) • Сапёр • Пинбол • Червы

Ntoskrnl.exe • Слой аппаратных абстракций (hal.dll) • Бездействие системы • svchost.exe • Реестр • Службы • Диспетчер управления сервисами • DLL ( формат модулей ) • PE • NTLDR • Диспетчер загрузки • Программа входа в систему (winlogon.exe) • Консоль восстановления • Windows RE • Windows PE • Защита ядра от изменений

Autorun.inf • Фоновая интеллектуальная служба передачи • Файловая система стандартного журналирования • Отчёты об ошибках • Планировщик классов мультимедиа • Теневая копия • Планировщик задач • Беспроводная настройка

ReFS • NTFS ( Жёсткая ссылка • Точка соединения • Точка монтирования • Точка повторной обработки • Символьная ссылка • TxF • EFS) • WinFS • FAT • exFAT • CDFS • UDF • DFS • IFS

Active Directory • Службы развёртывания • Служба репликации файлов • DNS • Домены • Перенаправление папок • Hyper-V • IIS • Media Services • MSMQ • Защита доступа к сети (NAP) • Службы печати для UNIX • Удалённое разностное сжатие • Службы удаленной установки • Служба управления правами • Перемещаемые профили пользователей • SharePoint • Диспетчер системных ресурсов • Удаленный рабочий стол • WSUS • Групповая политика • Координатор распределённых транзакций

NT • Диспетчер объектов • Пакеты запроса ввода/вывода • Диспетчер транзакций ядра • Диспетчер логических дисков • Диспетчер учетных записей безопасности • Защита ресурсов • lsass.exe • csrss.exe • smss.exe • spoolsv.exe • Запуск

BitLocker • Защитник • Предотвращение выполнения данных • Обязательный контроль целостности • Защищённый канал данных • UAC • UIPI • Брандмауэр • Центр обеспечения безопасности • Защита файлов

Источник

Взаимодействия между GDI и GDI+

Иногда желательно смешивать интерфейс Windows графических устройств (GDI) и GDI+ в одном кодовом пути. В этой статье данная статья содержит советы по написанию кода, который позволяет GDI и GDI+ работать вместе.

Оригинальная версия продукта: Windows Интерфейс графического устройства
Исходный номер КБ: 311221

Аннотация

Некоторые правила применяются при смешивании GDI и GDI+ кода. Например, не следует вовлекать вызовы GDI и GDI+ одного целевого объекта. Можно обернуть объект Graphics вокруг HDC, но вы не должны получать доступ к HDC непосредственно из GDI до тех пор, пока объект Graphics не будет уничтожен.

Четыре основных сценария взаимодействия между GDI и GDI+ в этой статье:

Использование GDI на объекте GDI+ Graphics, при помощи экрана

Одним из примеров необходимости использования GDI на объекте GDI+ Graphics, опираемом на экран, является нарисовка резинки или прямоугольника фокуса. GDI+ в настоящее время не имеет прямой поддержки raster operations (ROP), поэтому GDI необходимо использовать непосредственно, R2_XOR необходимые операции пера. В этом случае вы можете получить HDC, на который будет направлен Graphics::GetHDC() вывод GDI. GDI+ не следует пытаться использовать объект Graphics для жизни HDC (т. е. пока Graphics::ReleaseHDC() не называется).

Использование GDI на объекте GDI+ Graphics с помощью bitmap

Когда вызван объект Graphics, который имеет не экран, а битовую карту, создается HDC памяти и создается и выбирается новый объект в Graphics::GetHDC() HBITMAP HDC памяти. Эта новая битовая карта памяти не инициализирована с изображением исходной битма, а скорее с шаблоном sentinel, который позволяет GDI+ отслеживать изменения в bitmap. Любые изменения, внесенные в битовую карту памяти с помощью кода GDI, становятся очевидными в изменениях в шаблоне sentinel. Когда Graphics::ReleaseHDC() называется, эти изменения копируется обратно в исходную bitmap. Так как битовая карта памяти не инициализирована с изображением bitmap, получаемый таким образом HDC должен считаться только пишите и поэтому не подходит для использования с roPs, использование которого требует возможности чтения цели, например R2_XOR. Кроме того, для этого подхода существует затрата на производительность, так как GDI+ необходимо скопировать изменения обратно в исходную bitmap.

Использование GDI+ на GDI HDC

Вы можете упростить использование GDI+ hdC с помощью конструктора Graphics, который принимает HDC в качестве параметра. Участники рисования класса Graphics можно использовать для рисования на HDC таким образом. После прикрепления объекта Graphics к HDC операции GDI не должны выполняться в HDC до тех пор, пока объект Graphics не будет уничтожен или не выходит из сферы действия. Если для hdC требуется вывод GDI, либо уничтожайте объект Graphics перед использованием исходного HDC, либо используйте для получения нового HDC, а затем следуйте правилам, описанным ранее в этой статье, для обеспечения связи при использовании GDI на объекте Graphics::GetHDC() GDI+.

Использование GDI+ на HBITMAP памяти GDI

Конструктор GDI+ Bitmap, который принимает параметр в качестве параметра, не использует фактический источник в качестве заднего изображения HBITMAP HBITMAP для bitmap. Скорее, копия изображения выполнена в конструкторе, и изменения не пишутся обратно в исходную битовую карту даже во время выполнения деструктора. Новую битовую карту можно использовать как копию при создании, поэтому для получения GDI+ нарисовать память из GDI и применить изменения к подходу, как следует из следующих HBITMAP HBITMAP действий:

Источник

Поиск утечки GDI объектов: Как загнать мастодонта

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

В 2016 году, когда большинство программ выполняются в песочницах, из которых даже самый некомпетентный разработчик не сможет навредить системе, странно сталкиваться с проблемой, о которой дальше пойдет речь. Если честно, я надеялся, что она ушла в далекое прошлое вместе с Win32Api, но недавно я с ней столкнулся. До этого я лишь слышал жуткие байки старых более опытных разработчиков, что такое может быть.

Проблема

Утечка или использование слишком большого числа GDI объектов.

Симптомы:

Message: A generic error occurred in GDI+.
Source: System.Drawing
TargetSite: IntPtr GetHbitmap(System.Drawing.Color)
Type: System.Runtime.InteropServices.ExternalException

Почему?

В системах семейства Windows может быть одновременно создано не более 65535 объектов GDI. Число, на самом деле, невероятно большое и ни при каком нормальном сценарии и близко не должно достигаться. На процесс установлено ограничение в 10000, которое хоть и можно изменить (в реестре изменить значение HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota в пределах от 256 до 65535), но Microsoft настоятельно не рекомендует увеличивать это ограничение. Если это сделать, то у одного процесса будет возможность положить систему настолько, что та даже не сможет нарисовать сообщение об ошибке. В этом случае система сможет ожить только после перезагрузки.

Как исправлять?

Если Вы живете в аккуратном управляемом CLR’ом мире, то вероятность 9 из 10, что у Вас в приложении обычная утечка памяти. Проблема хоть и неприятная, зато довольно обыденная и есть по меньшей мере дюжина отличных инструментов для ее поиска. Подробно останавливаться на этом не буду. Вам лишь будет нужно использовать любой профилировщик, чтобы посмотреть, не увеличивается ли число объектов-оберток над GDI ресурсами, это: Brush, Bitmap, Pen, Region, Graphics. Если это действительно так, то Вам повезло, можете закрывать вкладку со статьей.

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

Что Вам будут советовать другие?

Официальное руководство от Microsoft или другие статьи по этому поводу, которые Вы найдете в интернете, будут советовать примерно следующее:

Найти все Create%SOME_GDI_OBJECT% и узнать, есть ли соответствующий ему DeleteObject(или ReleaseDC для HDC-объектов), а если и есть, то, возможно, существует сценарий, при котором он не вызовется.

Есть еще чуть улучшенная версия этого метода, она содержит дополнительный первый шаг:

Скачать утилиту GDIView. Она умеет показывать конкретное количество GDI объектов по типу и единственное, что настораживает, так это то, что сумма всех не соответствует значению в последней колонке. На это можно попробовать не обращать внимание, если она поможет хоть как-то сузить зону поиска.

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа

Проект, над которым я работаю, имеет кодовую базу в более 9 миллионов строк и еще примерно столько же в third-party библиотеках, сотни вызовов функций GDI, размазанных по десяткам файлов. Я потратил много сил и кофе, прежде чем понял, что вручную просто невозможно это проанализировать ничего не упустив.

Что предложу я?

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

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа

После чего запустил процесс на отладку в Visual Studio, а здесь выбрал его в дереве процессов. Первая точка останова сработала мгновенно:

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа

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

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа

Задача: Найти те вызовы функций GDI, которым не соответствует удаление. В логи присутствует все необходимое: список вызовов функций в хронологическом порядке, их возвращаемые значения и параметры. Получается, что мне нужно взять возвращаемое значение функции Create%SOME_GDI_OBJECT% и найти вызов DeleteObject с этим значением в качестве аргумента. Я выделил все записи в Api Monitor, вставил в текстовый файл и получил что-то вроде CSV с разделителем TAB. Запустил VS, где думал написать программу, чтобы попарсить это, но, прежде чем она загрузилась, мне пришла в голову идея получше: экспортировать данные в базу и написать запрос, чтобы выгрести то, что меня интересует. Это был правильный выбор, потому что позволил очень быстро задавать вопросы и получать на них ответы.

Есть множество инструментов, чтобы импортировать данные из CSV в базу, потому не буду на этом останавливаться (mysql, mssql, sqlite).

У меня получилась вот такая таблица:

Написал функцию mysql, чтобы получать дескриптор удаляемого объекта из вызова апи:

И наконец запрос, который найдет все текущие объекты:

(Строго говоря, он просто найдет все вызовы Delete на все вызовы Create)

Gdi что за программа. Смотреть фото Gdi что за программа. Смотреть картинку Gdi что за программа. Картинка про Gdi что за программа. Фото Gdi что за программа
На рисунке сразу видны вызовы, на которые так и не нашлось ни одного Delete.

Остался последний вопрос: Как найти откуда вызываются эти методы в контексте моего кода? И здесь мне помог один хитрый трюк:

Резюме:

Алгоритм длинный и сложный, в нем задействовано много инструментов, но мне он дал результат значительно быстрее, чем тупой поиск ошибок по огромной кодовой базе.

Вот он, для тех кому было лень читать или кто уже забыл с чего все начиналось, пока читал:

Источник

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

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