Различия в версиях WDM
Самый простой способ обеспечить совместимость между системами — написать драйвер, использующий только функции, поддерживаемые версией WDM с наименьшими номерами. Однако это не всегда возможно. Иногда драйверам требуется дополнительный код для использования функций, доступных в более поздних версиях WDM, или для компенсации различий между операционными системами Windows.
Различия WDM в подпрограммах поддержки драйверов
На странице справочника по пакету драйверов Windows (WDK) для каждой подпрограммы поддержки драйверов указывается, ограничена ли подпрограмма определенными версиями WDM или ее поведение отличается в разных версиях операционных систем. Прежде чем использовать какие-либо подпрограммы поддержки драйверов в кросссистемном драйвере, обязательно изучите ограничения или поведение, связанные с конкретной версией.
Различия WDM в Plug and Play
Следующие Plug and Play пакет запроса ввода-вывода (IRP) поддерживается только в Windows 2000 и более поздних версиях операционной системы на основе NT (WDM версии 1.10 и более поздних):
Кроме того, следующие irP работают в Windows 98/Me иначе, чем в операционной системе на основе NT:
IRP_MN_STOP_DEVICE и IRP_MN_REMOVE_DEVICE
Различия WDM в управлении питанием
Следующие функции управления питанием и запросы ввода-вывода отличаются по работе между операционной системой Windows 98/Me и операционной системой на основе NT:
PoRegisterDeviceForIdleDetection
При выполнении интеграции с питанием драйверы в Windows 98/Me должны выполнять irp в irQL = PASSIVE_LEVEL, в то время как драйверы в операционной системе на основе NT могут выполнять такие irP по адресу IRQL = PASSIVE_LEVEL или IRQL = DISPATCH_LEVEL.
Флаг DO_POWER_PAGABLE в структуре DEVICE_OBJECT используется в операционной системе Windows 98/Me иначе, чем в операционной системе на основе NT.
Различия WDM в работе драйвера Kernel-Mode
Драйверы WDM в режиме ядра для Windows 98/Me должны соответствовать определенным рекомендациям по использованию операций с плавающей запятой, MMX, 3DNOW! или расширений Intel SSE. Дополнительные сведения см. в статье Использование с плавающей запятой или MMX в драйвере WDM.
Windows 98/Me предоставляет фиксированное количество рабочих потоков, которых может быть недостаточно для некоторых драйверов.