gdi window что это такое
Что такое GDI.EXE? Это безопасно или вирус? Как удалить или исправить это
Что такое GDI.EXE?
GDI.EXE это исполняемый файл, который является частью Microsoft Windows, разработанный Корпорация Microsoft, Версия программного обеспечения для Windows: 3.10.0.103 обычно 220800 в байтах, но у вас может отличаться версия.
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, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
Загрузите или переустановите GDI.EXE
Вход в музей Мадам Тюссо не рекомендуется загружать заменяемые exe-файлы с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить GDI.EXE, то мы рекомендуем переустановить основное приложение, связанное с ним. Microsoft Windows,.
Основные возможности 5 в Windows 10
Информация об операционной системе
Ошибки GDI.EXE могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:
Gdi window что это такое
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.
Примерные аналоги [ ]
Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.
Уязвимости [ ]
Примечания [ ]
Ссылки [ ]
Контакты • DVD Maker • Факсы и сканирование • Internet Explorer • Журнал • Экранная лупа • Media Center • Проигрыватель Windows Media • Программа совместной работы • Центр устройств Windows Mobile • Центр мобильности • Экранный диктор • Paint • Редактор личных символов • Удалённый помощник • Распознавание речи • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов • Исторические: Movie Maker • NetMeeting • Outlook Express • Диспетчер программ • Диспетчер файлов • Фотоальбом • Windows To Go
Ntoskrnl.exe • Слой аппаратных абстракций (hal.dll) • Бездействие системы • svchost.exe • Реестр • Службы • Диспетчер управления сервисами • DLL ( формат модулей ) • PE • NTLDR • Диспетчер загрузки • Программа входа в систему (winlogon.exe) • Консоль восстановления • Windows RE • Windows PE • Защита ядра от изменений
Autorun.inf • Фоновая интеллектуальная служба передачи • Файловая система стандартного журналирования • Отчёты об ошибках • Планировщик классов мультимедиа • Теневая копия • Планировщик задач • Беспроводная настройка
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 объектов: Как загнать мастодонта
Строго говоря именно это оригинальный текст статьи, а в блоге уже перевод. Здесь статья публикуется чуть позже и только потому получает бирку перевод.
В 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 объектов по типу и единственное, что настораживает, так это то, что сумма всех не соответствует значению в последней колонке. На это можно попробовать не обращать внимание, если она поможет хоть как-то сузить зону поиска.
Проект, над которым я работаю, имеет кодовую базу в более 9 миллионов строк и еще примерно столько же в third-party библиотеках, сотни вызовов функций GDI, размазанных по десяткам файлов. Я потратил много сил и кофе, прежде чем понял, что вручную просто невозможно это проанализировать ничего не упустив.
Что предложу я?
Если этот способ Вам покажется слишком длинным и требующим лишних телодвижений, значит, Вы еще не прошли все стадии отчаяния с предыдущим. Можете еще несколько раз попробовать прошлые шаги, но если не поможет, то не сбрасывайте со счетов этот вариант.
После чего запустил процесс на отладку в Visual Studio, а здесь выбрал его в дереве процессов. Первая точка останова сработала мгновенно:
Вызовов было слишком много. Я быстро понял, что захлебнусь в этом потоке и нужно придумать что-то еще. Я снял точки останова с функций и решил посмотреть лог. Это были тысячи и тысячи вызовов. Стало очевидно, что их не проанализировать вручную.
Задача: Найти те вызовы функций GDI, которым не соответствует удаление. В логи присутствует все необходимое: список вызовов функций в хронологическом порядке, их возвращаемые значения и параметры. Получается, что мне нужно взять возвращаемое значение функции Create%SOME_GDI_OBJECT% и найти вызов DeleteObject с этим значением в качестве аргумента. Я выделил все записи в Api Monitor, вставил в текстовый файл и получил что-то вроде CSV с разделителем TAB. Запустил VS, где думал написать программу, чтобы попарсить это, но, прежде чем она загрузилась, мне пришла в голову идея получше: экспортировать данные в базу и написать запрос, чтобы выгрести то, что меня интересует. Это был правильный выбор, потому что позволил очень быстро задавать вопросы и получать на них ответы.
Есть множество инструментов, чтобы импортировать данные из CSV в базу, потому не буду на этом останавливаться (mysql, mssql, sqlite).
У меня получилась вот такая таблица:
Написал функцию mysql, чтобы получать дескриптор удаляемого объекта из вызова апи:
И наконец запрос, который найдет все текущие объекты:
(Строго говоря, он просто найдет все вызовы Delete на все вызовы Create)
На рисунке сразу видны вызовы, на которые так и не нашлось ни одного Delete.
Остался последний вопрос: Как найти откуда вызываются эти методы в контексте моего кода? И здесь мне помог один хитрый трюк:
Резюме:
Алгоритм длинный и сложный, в нем задействовано много инструментов, но мне он дал результат значительно быстрее, чем тупой поиск ошибок по огромной кодовой базе.
Вот он, для тех кому было лень читать или кто уже забыл с чего все начиналось, пока читал:
Интерфейс Windows графических устройств (GDI)
Интерфейс графических устройств (GDI)
Раньше всякий раз с появлением нового поколения аппаратных средств высокопроизводительное программное обеспечение либо получало новые драйверы, либо устаревало. С помощью GDI набор драйверов для аппаратуры обновляет прикладные программы. Интерфейс GDI выполняет и другую важную функцию. Он определяет набор операций, которые программа может выполнять на дисплее. Поскольку набор операций ограничен, то можно создать аппаратуру (Windows-акселераторы), выполняющую эти операции быстрее, что позволит ускорить работу программ в среде Windows.
Команды рисования, представленные простейшими рисующими программами, такими как входящая в Windows программа Paintbrush, эти команды в основном отражают функции GDI. Более сложные рисующие программы, например CorelDRAW, выполняют сложные операции типа закрашивания (заливки) фонтаном и рисования сложных кривых.
Наиболее общей операцией Windows является перемещение прямоугольников из одной области экрана в другую; эта операция называется пересылкой блока (строки) битов (Bit Block Transfer), или BitBLT (Название операции произносится как BitBlit или просто blit). Windows выполняет операцию blit во время процесса прокрутки в окне. При прокрутке в направлении конца файла изображение на экране движется вверх. Хорошо написанные программы перемещают ранее созданное изображение вверх, занося новый рисунок в отображаемый участок окна с помощью операции blit. Поскольку перемещаемые прямоугольники обычно содержат много пикселей, происходит перемещение большого количества данных. Ускорение операции blit приводит к более быстрой прокрутке.
Аппаратно реализованная операция blit работает быстрее, чем программа, так как выполняется только одна операция. Нет необходимости выбирать команды, декодировать и выполнять их. С помощью аппаратных средств многоугольник можно закрасить быстрее, поскольку при этом возможен более быстрый доступ к видеопамяти, к тому же для этого не требуется выполнения программы.
Область применения операции blit в Windows даже шире, чем описано, потому что перемещение может происходить как из основной, так и из видеопамяти. Эта операция применяется, например, при рисовании текста. Поскольку шрифты являются наборами маленьких растров, при рисовании текста, состоящего из последовательности маленьких растров (по одному на символ), каждый растр перемещается из основной памяти в нужное место видеопамяти. Быстрые операции blit способствуют быстрому выводу текста.
Аппаратное выполнение функций GDI
Акселератор упрощает работу GDI, что приводит к более быстрому выполнению видеоопераций. Для каждой операции, затребованной программой. GDI определяет возможность ее осуществления непосредственно аппаратурой, и если находит возможным, то разрешает драйверу устройства выполнить рисунок аппаратными средствами.
В противном случае GDI моделирует операцию на программном уровне. Для каждой операции существует определенный уровень моделирования, и GDI решает, какую из простейших операций может полностью выполнить аппаратура. Покажем это более детально.
Программный интерфейс в GDI. Чтобы рисовать на экране, программы в среде Windows обращаются к GDI. Необходимые программам операции могут либо непосредственно выполняться аппаратными средствами, либо требуют дополнительных средств.
Программная реализация операций GDI. При отсутствии акселератора или наличии операций GDI, аппаратно не поддерживаемых акселератором, GDI моделирует эти операции с помощью программного обеспечения. Если, например, акселератор не рисует штриховые линии, то GDI моделирует эту операцию, рисуя последовательность из более коротких линий. Если акселератор не выводит линии вообще, то GDI моделирует операцию, рисуя последовательность точек.
Аппаратная реализация операций GDI. Видеоакселератор может выполнять операции с помощью аппаратных средств. Одним из наиболее общих и наиболее эффективных методов является аппаратная реализация операции BitBLT, потому что при выполнении операции прокрутки акселератор читает из памяти и пишет в память, не выходя на шину компьютера. Операции полностью реализованы в видеоплате, что устраняет какие-либо ожидания со стороны других компонентов компьютера. Акселератор с командой BitBLT позволяет сотни операций заменить одной командой.
Аппаратно-программная реализация операций GDI. В отдельных случаях GDI может использовать аппаратную поддержку, хотя запрашиваемую программой операцию модуль GDI может выполнить программно. Например, если в аппаратных средствах не предусмотрена операция закрашивания многоугольника, GDI разбивает эту операцию на несколько этапов для последовательного рисования горизонтальных линий. Акселератор может рисовать линии, ускоряя тем самым всю операцию.
Метафайлы в Windows
Операции, поддерживаемые GDI, непосредственно отражены в формате метафайлов операционной системы Windows (Windows Metafile Format), который хранится в файлах с расширением WMF и в объектах типа “рисунок”(picture), находящихся в буфере обмена.
Метафайлы содержат последовательность команд для вывода изображения, а не само изображение и поэтому они значительно меньше изображений в пикселах по объему (примерно 1: 10). Метафайлы допускают увеличение или уменьшение масштаба изображения без потери четкости и качества, а растровое изображение нет.
Наиболее значительными преимуществами GDI по сравнению с более прямыми методами доступа к оборудованию, возможно, являются его возможности масштабирования и абстрактное представление целевых устройств. Используя GDI, можно рисовать на нескольких устройствах, таких как экран и принтер, и ожидать надлежащего воспроизведения в каждом случае. Эта возможность лежит в основе большинства приложений Microsoft Windows « Что видишь, то и получаешь ».
СОДЕРЖАНИЕ
Технические подробности
В GDI контекст устройства (DC) определяет атрибуты текста и изображений для устройства вывода, например экрана или принтера. GDI поддерживает актуальный контекст. Для генерации вывода требуется дескриптор контекста устройства (HDC). После генерации вывода ручку можно было отпустить.
GDI использует алгоритм рисования линий Брезенхэма для рисования линий с псевдонимом.
История версий
Ранние версии
Windows XP
Хотя GDI + входит в состав Windows XP и более поздних версий, динамическая библиотека GDI + также может поставляться с приложением и использоваться в более старых версиях Windows.
Виндоус виста
В Windows Vista все приложения Windows, включая приложения GDI и GDI +, запускаются в новом механизме композитинга, Desktop Window Manager (DWM), который имеет аппаратное ускорение. Таким образом, GDI больше не имеет аппаратного ускорения. Из-за характера операций композиции перемещение окон может быть более быстрым или более быстрым, поскольку приложение не требует повторной визуализации базового содержимого.
Windows 7
Принтеры GDI
Ограничения
Каждое окно потребляет объекты GDI. По мере увеличения сложности окна с дополнительными функциями, такими как кнопки и изображения, также увеличивается использование его объекта GDI. Когда используется слишком много объектов, Windows не может рисовать больше объектов GDI, что приводит к некорректной работе программного обеспечения и зависанию и зависанию работы программы. Многие приложения также неправильно закодированы и не могут освободить объекты GDI после использования, что еще больше усугубляет проблему. Общее количество доступных объектов GDI варьируется от одной версии Windows к другой: Windows 9x имела ограничение в 1200 общих объектов; Windows 2000 имеет ограничение в 16 384 объекта; и Windows XP и более поздние версии имеют настраиваемый предел (через реестр), который по умолчанию составляет 10 000 объектов на процесс (но теоретический максимум 65 536 для всего сеанса). Windows 8 и более поздние версии увеличивают ограничение объекта GDI до 65 536 за сеанс входа в систему.
Более ранние версии Windows, такие как Windows 3.1 и Windows 98, включали программу Resource Meter, позволяющую пользователю отслеживать, какая часть общих ресурсов GDI системы используется. Этот счетчик ресурсов сам потреблял объекты GDI. Более поздние версии, такие как Windows 2000 и Windows XP, могут сообщать об использовании объекта GDI для каждой программы в диспетчере задач, но они не могут сообщить пользователю общую доступную емкость GDI.
Переполнение емкости GDI может повлиять на саму Windows, препятствуя открытию новых окон, отображению меню и появлению окон предупреждений. Ситуация может быть трудной для устранения и потенциально может потребовать принудительного сброса системы, поскольку это препятствует работе основных системных программ. В Windows 8 и 8.1 вместо перезагрузки происходит принудительный выход из системы в результате переполнения емкости GDI.