Поддержка нескольких версий операционной системы

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

Поддержка INF

Элементы TargetOSVersion в разделах моделей INF в INF позволяют автору INF предоставлять различные инструкции по установке и параметры для разных версий операционной системы.

Дополнительные сведения см. в статье Объединение расширений платформы с версиями операционной системы .

Поддержка времени выполнения

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

Режим ядра

Дополнительные сведения о поддержке нескольких версий Windows из одного драйвера см. в статье Написание драйверов для разных версий Windows .

Пользовательский режим

В пользовательском режиме вы можете использовать LoadLibraryEx вместе с GetProcAddress, чтобы проверка, доступен ли конкретный API, который вы хотите использовать в текущей среде, и получить указатель функции для вызова этого API. Дополнительные сведения см. в разделах Динамическое связывание во времявыполнения и Использование динамического связывания во время выполнения .