Стандартные требования к подпрограмме драйвера

При разработке драйвера в режиме ядра следует учитывать следующие моменты:

  • Каждый драйвер должен иметь подпрограмму DriverEntry , которая инициализирует структуры данных и ресурсы на уровне драйверов. Диспетчер ввода-вывода вызывает подпрограмму DriverEntry при загрузке драйвера.

  • Каждый драйвер должен иметь по крайней мере одну подпрограмму отправки, которая получает и обрабатывает пакеты запросов ввода-вывода (IRPs). Каждый драйвер должен поместить точку входа диспетчерской подпрограммы в структуру DRIVER_OBJECT для каждого основного кода функции IRP, который он может получить. Драйвер может иметь отдельную подпрограмму диспетчера для каждого основного кода функции IRP или иметь одну или несколько подпрограмм диспетчеризации, обрабатывающих несколько кодов функций.

  • Каждый драйвер WDM должен иметь подпрограмму выгрузки . Драйвер должен поместить точку входа подпрограммы Unload в объект драйвера. Обязанности подпрограммы выгрузки драйвера PnP являются минимальными, но подпрограмма выгрузки драйвера non-PnP отвечает за освобождение всех системных ресурсов, которые использует драйвер.

  • Каждый драйвер WDM должен иметь подпрограмму AddDevice и определить ее точку входа в расширении объекта драйвера. Подпрограмма AddDevice отвечает за создание и инициализацию объектов устройств для каждого устройства PnP, которым управляет драйвер.

  • Драйвер может иметь подпрограмму StartIo, которую диспетчер ввода-вывода вызывает для запуска операций ввода-вывода для IRP, которые драйвер помещает в системную очередь IRP. Любой драйвер, у которого нет подпрограммы StartIo, должен либо настроить и управлять внутренними очередями для получаемых IRP, либо завершить каждый IRP в своих подпрограммах обработки. Драйверы более высокого уровня могут не иметь подпрограмму StartIo, если они просто передают IRP в драйверы нижнего уровня непосредственно из своих диспетчерских подпрограмм.

  • Некоторые драйверы минипорта являются исключениями из предыдущих требований. Дополнительные сведения о требованиях к мини-драйверам см. в документации по типу устройства в комплекте драйверов Windows (WDK).

  • Независимо от того, имеет ли драйвер какие-либо другие стандартные подпрограммы, это зависит от его функциональности и от того, как этот драйвер вписывается в систему (например, взаимодействует ли он с драйверами, поставляемыми системой). Дополнительные сведения см. в документации по типу устройства в WDK.