IoIsWdmVersionAvailable 函数 (wdm.h)
IoIsWdmVersionAvailable 例程检查操作系统是否支持给定的 WDM 版本。
语法
BOOLEAN IoIsWdmVersionAvailable(
[in] UCHAR MajorVersion,
[in] UCHAR MinorVersion
);
参数
[in] MajorVersion
指定所请求的 WDM 的主版本号。
[in] MinorVersion
指定所请求的 WDM 的次要版本号。
返回值
如果操作系统提供的 WDM 版本大于或等于所请求的 WDM 的版本号,IoIsWdmVersionAvailable 将返回 TRUE。 否则,它将返回 FALSE。
注解
驱动程序应使用 RtlIsNtDdiVersionAvailable 例程,而不是 IoIsWdmVersionAvailable 例程。
跨平台驱动程序应使用此例程来检查 WDM 版本,然后再执行因平台而异或并非在所有版本的 WDM 中都受支持的任何操作。
Wdm.h 头文件中定义的WDM_MAJORVERSION和WDM_MINORVERSION常量指定当前 Windows 版本的 WDM 主版本号和次要版本号。 下面列出了随每个操作系统提供的 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) 在 Windows Me、Windows 2000 和任何成功的操作系统上返回 TRUE ,但在 Windows 98 和 Windows 98 SE 上返回 FALSE 。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) 、 IrqlIoPassive5 (wdm) 、 PowerIrpDDis (wdm) |