Стандартные требования к подпрограммам драйвера
При проектировании драйвера в режиме ядра учитывайте следующие моменты.
Каждый драйвер должен иметь подпрограмму 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.