Что такое kernel driver

kernel driver

Смотреть что такое «kernel driver» в других словарях:

Kernel Patch Protection — (KPP), informally known as PatchGuard, is a feature of x64 editions of Microsoft Windows that prevents patching the kernel. It was first introduced in 2005 with the x64 editions of Windows XP and Windows Server 2003 Service Pack 1.cite web… … Wikipedia

Driver Verifier — A component of Microsoft Windows Driver Verifier in Windows 7. Driver Verifier is a tool included in Microsoft Windows that replaces the default operating system subroutines with ones that are specifically developed to catch de … Wikipedia

Driver — may refer to: Contents 1 Places 2 Surnames of people 2.1 Fiction 3 Occupation and activity 3.1 … Wikipedia

Kernel (computing) — A kernel connects the application software to the hardware of a computer In computing, the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware… … Wikipedia

Kernel (computer science) — In computer science, the kernel is the central component of most computer operating systems (OS). Its responsibilities include managing the system s resources (the communication between hardware and software components). As a basic component of… … Wikipedia

Kernel-Mode Driver Framework — The Kernel Mode Driver Framework (KMDF) is a driver framework developed by Microsoft as a tool to aid driver developers create and maintain Kernel mode device drivers for Windows 2000. The original release of KMDF only supported Windows XP and… … Wikipedia

Kernel-based Virtual Machine — Infobox Software name = Kernel based Virtual Machine logo = caption = Screenshot of the Windows XP boot up process in a qemu/kvm window in Fedora 7. developer = latest release version = 75 latest release date = release date|2008|09|10 operating… … Wikipedia

Kernel streaming — In Microsoft Windows terminology, Kernel Streaming is a technique that supports kernel mode processing of streamed data. It enables efficient real time streaming for multimedia devices such as sound cards and TV tuner cards. Kernel streaming… … Wikipedia

Kernel-Mode — Schema der Ringe beim x86 System mit Gates zur Kommunikation Der Ring, auch Domain genannt, bezeichnet im Umfeld der Betriebssystem Programmierung und des Multitaskings eine Privilegierungs bzw. Sicherheitsstufe eines Prozesses. Diese schränkt… … Deutsch Wikipedia

Kernel-Modus — Schema der Ringe beim x86 System mit Gates zur Kommunikation Der Ring, auch Domain genannt, bezeichnet im Umfeld der Betriebssystem Programmierung und des Multitaskings eine Privilegierungs bzw. Sicherheitsstufe eines Prozesses. Diese schränkt… … Deutsch Wikipedia

Device driver — Operating systems Common features … Wikipedia

Источник

Windows Kernel Drivers — Стандартные ошибки – IRQL

Что такое kernel driver. Смотреть фото Что такое kernel driver. Смотреть картинку Что такое kernel driver. Картинка про Что такое kernel driver. Фото Что такое kernel driver

Данная статья нацелена на тех, кто только недавно начал разрабатывать kernel-драйвера под ОС Windows. В 100-ый раз видишь ненавистную надпись IRQL_NOT_LESS_OR_EQUAL и этот грустный смайлик? Тогда прошу пройти под кат.

Одной из основных ошибок, которую я и сам совершал, является жонглирование IRQL так, как душе угодно, и неполное понимание внутреннего устройства работы приоритетов потоков в ядре Windows.

К примеру, у вас есть кусок кода, который генерирует какое-либо событие по PID-процесса.

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

Уже увидели ошибку в данном фрагменте?

PsLookupProcessByProcessId() – требует соблюдения условия: IRQL Что такое kernel driver. Смотреть фото Что такое kernel driver. Смотреть картинку Что такое kernel driver. Картинка про Что такое kernel driver. Фото Что такое kernel driver

И вот дальше, начинается самое интересное. Первое решение, которое придёт в голову новичкам, будет менять уровень IRQL перед вызовом данной функции так, чтобы условие соблюдалось.

То есть, переписать код — вот так:

Вот теперь то, всё работает достаточно стабильно. Но, на самом деле это не так. Данный код только хорошо маскирует проблему, снижая шансы её проявления до минимума, но в 1 из 1000 случаев, она всё же всплывёт, а вы будет рвать на себе волосы, пытаясь понять в чём же ошибка.

И тут нужно вспомнить одно из правил написания драйверов, а именно:
«Понижать IRQL можно только в том случае, если вы его собственноручно повышали, и только до его предыдущего значения!»

Если какой-либо код вызвал вашу функцию на IRQL = APC_LEVEL, то вы не имеете права опустить его ниже данного уровня. Вы можете поднять IRQL до DISPATCH_LEVEL, потом опустить обратно до APC_LEVEL, но не ниже.

Таким образом, более приемлемым вариантом кода, будет:

А вспомогательные функции по типу SetIrql() из 2-го примера, в принципе не являются адекватными с точки зрения интерфейса, т.к. при проектировании отдельных методов в вашем драйвере, важно продумывать ограничения накладываемые на предусловия вызова вашей функции.

Для описания данных предусловий, удобно использовать аннотации SAL, их список вы можете посмотреть тут:

Также Microsoft предоставляет небольшой whitepaper(в самом низу статьи) по управлению приоритетами потоков в ядре, и более подробно рассказывает некоторые тонкости по работе с ними:

Если же, вам всё-таки нужно каким-либо образом вызвать какое-либо Api, требующее более низких значений IRQL, то одним из вариантов решения данной проблемы могут стать WorkItem’ы. Но о них, я расскажу уже в другой статье.

Источник

Создание драйверов надежных Kernel-Mode

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

Обеспечьте правильную защиту объектов устройств.

Доступ пользователей к драйверам и устройствам системы осуществляется с помощью дескрипторов безопасности, которые система назначает объектам устройств. Чаще всего система устанавливает параметры безопасности устройства при установке устройства. Дополнительные сведения см. в разделе Создание защищенных установок устройств. Иногда драйвер может играть часть в управлении доступом к своему устройству. Дополнительные сведения см. в разделе Защита объектов устройств.

Проверьте правильность объектов устройств.

Если драйвер создает несколько типов объектов устройств, он должен проверить, какой тип он получает в каждом IRP. Дополнительные сведения см. в разделе сбой при проверке объектов устройств.

Используйте функции «безопасного типа».

При управлении строками драйвер должен использовать функции с надежными строками, а не строковые функции, предоставляемые библиотеками среды выполнения языка C/C++. дополнительные сведения см. в разделе использование Сейф строковых функций.

Проверка дескрипторов объектов.

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

Поддержка многопроцессорности должным образом.

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

Правильно обработайте состояние драйвера.

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

Проверка входных значений IRP.

Это важно для проверки всех значений, связанных с IRP, таких как буферные адреса и длины, с точки зрения надежности и безопасности. Следующие разделы содержат сведения о проверке входных значений IRP:

Правильно обработайте стек ввода-вывода.

При передаче запросов IRP вниз по стеку драйверовважно, чтобы драйверы вызывали иоскипкуррентирпстакклокатион или иокопикуррентирпстакклокатионтонекст для настройки расположения стека ввода-вывода следующего драйвера. Не создавайте код, который непосредственно копирует одно расположение стека ввода-вывода в следующий.

Правильно обрабатывайте операции завершения IRP.

Драйвер не должен заполнять IRP со значением состояния STATUS_SUCCESS, если только он не поддерживает и не обрабатывает IRP. Сведения о правильных способах управления операциями завершения IRP см. в разделе Завершение IRP.

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

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

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

Одним из способов избежать проблем синхронизации, связанных с операциями отмены, является реализация очереди ненадежных запросов IRP. безнадежная очередь IRP — это управляемая драйвером очередь, которая появилась для Windows XP и более поздних версий операционных систем, но также обратно совместима с предыдущими версиями.

Правильно обрабатывайте операции очистки и закрытия IRP.

Дополнительные сведения об правильной обработке запросов IRP см. в разделе Дополнительные ошибки при обработке запросов IRP.

Использование средства проверки драйверов

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

Источник

Руководство по проектированию архитектуры драйверов Kernel-Mode

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

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

Этот раздел содержит общие сведения, описывающие и помогающие создавать драйверы режима ядра.

компоненты режима ядра описывают основные диспетчеры режима ядра и компоненты операционной системы Windows.

КомпонентОписание
Диспетчер
диспетчер объектов Windows Kernel-ModeУправляет объектами: файлами, устройствами, механизмами синхронизации, разделами реестра и т. д.
диспетчер памяти Windows Kernel-ModeУправляет физической памятью для операционной системы.
Windows Kernel-Mode процессов и диспетчер потоковОбрабатывает выполнение всех потоков в процессе.
диспетчер ввода-вывода Windows Kernel-ModeУправляет взаимодействием между приложениями и интерфейсами, предоставляемыми драйверами устройств.
диспетчер самонастраивающийся Windows Kernel-ModeПодсистема диспетчера ввода-вывода, диспетчер самонастраивающийся (PnP) позволяет компьютеру распознать, когда устройство добавляется в систему.
Windows Kernel-Mode Power ManagerУправляет упорядоченным изменением состояния электропитания для всех устройств, поддерживающих изменения состояния электропитания.
Windows Kernel-Mode Configuration ManagerУправляет реестром, например наблюдение за изменениями в реестре или регистрация обратных вызовов для конкретных данных реестра.
диспетчер транзакций ядра Kernel-Mode WindowsРеализует обработку транзакций в режиме ядра.
монитор справочника по безопасности Windows Kernel-ModeПредоставляет подпрограммы, позволяющие драйверу работать с контролем доступа.
Libraries
библиотека ядра Windows Kernel-ModeРеализует основные функциональные возможности, от которых зависит все остальные компоненты операционной системы. ядро Microsoft Windows предоставляет базовые низкоуровневые операции, такие как планирование потоков или маршрутизация аппаратных прерываний.
библиотека поддержки Windows Kernel-Mode ExecutiveОтносится к компонентам режима ядра, которые предоставляют различные службы для драйверов устройств, в том числе: Управление объектами, управление памятью, управление процессами и потоками, управление входными и выходными данными и управление конфигурацией.
библиотека Run-Time Kernel-Mode WindowsНабор общих служебных подпрограмм, необходимых для различных компонентов режима ядра.
Windows Kernel-Mode Сейф библиотеки строкНадежная библиотека строк для обеспечения большей безопасности при разработке в режиме ядра.
библиотека Windows Kernel-Mode DMAБиблиотека прямого доступа к памяти (DMA) для разработчиков драйверов устройств.
библиотека Windows Kernel-Mode HALСлой абстрагирования оборудования (HAL) для разработки драйверов в режиме ядра.
Windows Kernel-Mode библиотеки CLFSТранзакционная система ведения журнала, файловая система CLFS (CLFS).
библиотека WMI Windows Kernel-Modeобщий механизм управления компонентами, именуемый инструментарий управления Windows (WMI) (WMI).

написание драйверов wdm и введение в wdm предоставляют сведения, необходимые для записи драйверов с помощью WDM (WDM).

Объекты устройств и другие разделы в объектах устройств и в стеках устройств описывают, как операционная система представляет устройства по объектам устройств.

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

Безопасность Чтобы обеспечить максимально безопасную безопасность, от управления доступом к устройствам и привилегиями на SDDL для объектов устройств.

Обработка IRP описывает, как драйверы режима ядра обрабатывают пакеты запросов ввода-вывода (IRP).

Канал DMA Прямой доступ к памяти (DMA) — это важный аспект разработки драйверов, а темы на этом узле охватывают DMA от а до я.

Объекты контроллера представляют собой контроллер физического устройства с подключенными устройствами.

Программы-обработчики прерываний (ISR) обработают прерывания для драйверов физического устройства, принимающего прерывания.

Сигнальные прерывания вызывают прерывание, записывая значение в определенный адрес памяти.

Отложенные вызовы процедур (объекты DPC) могут быть поставлены в очередь из ISR и выполняться позже, а уровень IRQL — ниже, чем при ISR.

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

Управление питанием описывает архитектуру, обеспечивающую комплексный подход к управлению питанием системы и устройств.

инструментарий управления Windows (WMI) (WMI) являются расширениями для драйвера в режиме ядра, что позволяет драйверу стать поставщиком WMI. Поставщик WMI делает данные измерений и инструментирования доступными для потребителей WMI, таких как приложения пользовательского режима.

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

Источник

Dadaviz

NVIDIA Windows Kernel Mode Driver перестал отвечать — что делать

Ошибка «Видеодрайвер NVIDIA Windows Kernel Mode Driver перестал отвечать» очень распространена среди любителей поиграть в компьютерные игры на различных версиях Windows (7/8/10). Перегрузки видеокарты приводят к системным сбоям и нарушениям правильной работы. Такое возникает непосредственно в игре или в самом ее начале. Хотя случаи появлений ошибки иногда просто нельзя объяснить, ведь пользователь может в этот момент просматривать фильм. Для каждой драйвера с ошибкой также указана его версия (Version 372.90, 375.70, 373.06, 314.22, 341.95 и другие).

Что такое kernel driver. Смотреть фото Что такое kernel driver. Смотреть картинку Что такое kernel driver. Картинка про Что такое kernel driver. Фото Что такое kernel driverПример ошибки драйверов NVIDIA

Обновляем видеокарту

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

Пытаемся решить при помощи DirectX

Установка последнего DirectX очень важный шаг для любого геймера. Без его нормальной работы рассчитывать на успешный запуск игры не приходится. Тут главное уловить момент. Если ошибка появляется в начале загрузки, значит проблема с большой долей вероятности в DirectX.

DirectX лучше скачивать только с официального источника – Microsoft. Также он идет к любой компьютерной игре в комплекте. Папка, где он обычно храниться именуется «Redist».

Работа по настройкам видеокарты

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

Что такое kernel driver. Смотреть фото Что такое kernel driver. Смотреть картинку Что такое kernel driver. Картинка про Что такое kernel driver. Фото Что такое kernel driverВосстанавливаем параметры 3D

Вот подробная видео-инструкция по настройке видеодрайвера.

Повышаем производительность

Очень актуально при ошибке NVIDIA Windows Kernel Mode Driver для ноутбуков c Windows (7/8/10). Попробуйте выставить производительность системы на максимум.

Что такое kernel driver. Смотреть фото Что такое kernel driver. Смотреть картинку Что такое kernel driver. Картинка про Что такое kernel driver. Фото Что такое kernel driverИзменяем производительность энергообеспечения ноутбука

Повысив производительность, уберите все возможные фоновые программы. Если на рабочем столе стоят анимированные обои, то их следует заменить. Установите стандартный фон.

Проверяем Adobe Flash Player. Если баг «Видеодрайвер перестал отвечать» выскакивает в браузере, то возможно стоит обновить Adobe Flash Player. Думаю с его обновлением, проблем возникнуть не может.

Плата видеокарты

Ошибка видеодрайвера Nvidia windows kernel mode driver – это не только программные сбои, но и возможные физические поломки. Следует перейти к непосредственному изучению самой платы видеокарты.

Данные советы помогут вам понять что делать и как исправить проблему со сбоем «Видеодрайвер перестал отвечать и был успешно восстановлен» в Windows (7/8/10).

Источник

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

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