Поделиться через


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

При проектировании драйвера в режиме ядра учитывайте следующие моменты.

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

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

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

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

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

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

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