IoIsWdmVersionAvailable 函数 (wdm.h)

IoIsWdmVersionAvailable 例程检查作系统是否支持给定的 WDM 版本。

语法

BOOLEAN IoIsWdmVersionAvailable(
  [in] UCHAR MajorVersion,
  [in] UCHAR MinorVersion
);

参数

[in] MajorVersion

指定请求的 WDM 的主要版本号。

[in] MinorVersion

指定请求的 WDM 的次要版本号。

返回值

IoIsWdmVersionAvailable 如果作系统提供的 WDM 版本大于或等于所请求的 WDM 版本号,则返回 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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)IrqlIoPassive5(wdm)PowerIrpDDis(wdm)

另请参阅

RtlIsNtDdiVersionAvailable