Функция IoIsWdmVersionAvailable (wdm.h)
Программа IoIsWdmVersionAvailable проверяет, поддерживается ли данная версия WDM операционной системой.
Синтаксис
BOOLEAN IoIsWdmVersionAvailable(
[in] UCHAR MajorVersion,
[in] UCHAR MinorVersion
);
Параметры
[in] MajorVersion
Указывает основной номер версии WDM, запрашиваемый.
[in] MinorVersion
Указывает дополнительный номер версии WDM, запрашиваемый.
Возвращаемое значение
IoIsWdmVersionAvailable возвращает TRUE, если версия WDM, которую предоставляет операционная система, превышает или равно запрашиваемому номеру версии WDM. В противном случае возвращается FALSE.
Замечания
Драйверы должны использовать подпрограмму RtlIsNtDdiVersionAvailable вместо подпрограммы IoIsWdmVersionAvailable.
Кроссплатформенные драйверы должны использовать эту подпрограмму для проверки версии WDM перед выполнением любых операций, которые зависят от платформы или не поддерживаются во всех версиях WDM.
Константы WDM_MAJORVERSION и WDM_MINORVERSION, определенные в файле заголовка Wdm.h, указывают номера основных и дополнительных версий WDM для текущей версии Windows. Ниже перечислены версии WDM, предоставляемые каждой операционной системой.
Операционная система | Основная версия WDM | Дополнительная версия WDM |
---|---|---|
Windows 7 | 6 | 0x00 |
Windows Server 2008 R2 | 6 | 0x00 |
Windows Server 2008 | 6 | 0x00 |
Windows Vista | 6 | 0x00 |
Windows Server 2003 | 1 | 0x30 |
Windows XP | 1 | 0x20 |
Windows 2000 | 1 | 0x10 |
Windows Me | 1 | 0x05 |
Windows 98 | 1 | 0x00 |
Обратите внимание, что дополнительный номер версии определяется как шестнадцатеричное значение.
Более поздние версии WDM поддерживают все функции, доступные в более ранних версиях WDM; То есть каждая версия WDM является супермножеством предыдущей версии WDM.
Следующий вызов возвращает TRUE для любой из перечисленных операционных систем, так как все эти системы поддерживают все функции WDM 1.0:
bVersion = IoIsWdmVersionAvailable(1,0);
В следующем примере показано, как драйвер может динамически обнаруживать текущую операционную систему:
if (IoIsWdmVersionAvailable(1, 0x10)) {
//
//If WDM 1.10 is supported, this is Windows 2000
//or better.
//
} else if (IoIsWdmVersionAvailable(1, 5)) {
//
//If WDM 1.05 is supported, this is Windows ME
//or better.
//
} else {
//
//WDM 1.0 is always supported, so this is Windows 98,
//Windows 98 SE, or better.
//
}
Как показано в примере, вызов IoIsWdmVersionAvailable(1, 5) возвращает TRUE в Windows Me, Windows 2000 и любых успешных операционных системах, но FALSE в Windows 98 и Windows 98 SE.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |