osVERSIONINFOEXW 结构 (wdm.h)
RTL_OSVERSIONINFOEXW 结构包含操作系统版本信息。
语法
typedef struct _OSVERSIONINFOEXW {
ULONG dwOSVersionInfoSize;
ULONG dwMajorVersion;
ULONG dwMinorVersion;
ULONG dwBuildNumber;
ULONG dwPlatformId;
WCHAR szCSDVersion[128];
USHORT wServicePackMajor;
USHORT wServicePackMinor;
USHORT wSuiteMask;
UCHAR wProductType;
UCHAR wReserved;
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
成员
dwOSVersionInfoSize
RTL_OSVERSIONINFOEXW结构的大小(以字节为单位)。 必须先设置此成员,然后才能将 结构与 RtlGetVersion 一起使用。
dwMajorVersion
操作系统的主版本号。 例如,对于 Windows 2000,主版本号为 5。 有关详细信息,请参阅备注中的表。
dwMinorVersion
操作系统的次要版本号。 例如,对于 Windows 2000,次要版本号为零。 有关详细信息,请参阅备注中的表。
dwBuildNumber
操作系统的内部版本号。
dwPlatformId
操作系统平台。 对于基于 NT 的操作系统上的 Win32,RtlGetVersion 返回值VER_PLATFORM_WIN32_NT。
szCSDVersion[128]
Service-pack 版本字符串。 此成员包含以 null 结尾的字符串,例如“Service Pack 3”,指示系统上安装的最新 Service Pack。 如果未安装 Service Pack, 则 RtlGetVersion 可能不会初始化此字符串。 在调用 RtlGetVersion 之前,将 szCSDVersion 初始化为零 (空字符串) 。
wServicePackMajor
系统上安装的最新 Service Pack 的主版本号。 例如,对于 Service Pack 3,主版本号为 3。 如果未安装 Service Pack,则值为零。
wServicePackMinor
系统上安装的最新 Service Pack 的次要版本号。 例如,对于 Service Pack 3,次要版本号为零。
wSuiteMask
系统上可用的产品套件。 此成员设置为零或设置为以下一个或多个值的按位 OR。
值 | 含义 |
---|---|
VER_SUITE_BACKOFFICE | 已安装 Microsoft BackOffice 组件。 |
VER_SUITE_BLADE | 已安装 Windows Server 2003 Web Edition。 |
VER_SUITE_COMPUTE_SERVER | 已安装 Windows Server 2003 计算群集版本。 |
VER_SUITE_DATACENTER | 已安装 Windows Server 2008 Datacenter、Windows Server 2003、Datacenter Edition 或 Windows 2000 Datacenter Server。 |
VER_SUITE_ENTERPRISE | 已安装 Windows Server 2008 Enterprise、Windows Server 2003、Enterprise Edition 或 Windows 2000 Advanced Server。 |
VER_SUITE_EMBEDDEDNT | 已安装 Windows XP Embedded。 |
VER_SUITE_PERSONAL | 已安装 Windows Vista 家庭高级版、Windows Vista 家庭普通版 或 Windows XP 家庭版。 |
VER_SUITE_SINGLEUSERTS | 支持远程桌面,但仅支持一个交互式会话。 除非系统在应用程序服务器模式下运行,否则将设置此值。 |
VER_SUITE_SMALLBUSINESS (请参阅注释) | Microsoft Small Business Server 曾经安装在系统上,但可能已升级到另一个版本的 Windows。 有关此标志位的详细信息,请参阅以下“备注”部分。 |
VER_SUITE_SMALLBUSINESS_RESTRICTED | Microsoft Small Business Server 安装时附带了限制性客户端许可证。 有关此标志位的详细信息,请参阅以下“备注”部分。 |
VER_SUITE_STORAGE_SERVER | 已安装 Windows Storage Server 2003 R2 或 Windows Storage Server 2003。 |
VER_SUITE_TERMINAL | 已安装终端服务。 始终设置此值。 如果设置了VER_SUITE_TERMINAL但未设置VER_SUITE_SINGLEUSERTS,则操作系统在应用程序服务器模式下运行。 |
VER_SUITE_WH_SERVER | 已安装 Windows 主服务器。 |
不应仅依赖VER_SUITE_SMALLBUSINESS标志来确定当前是否安装了 Small Business Server。 此标志和VER_SUITE_SMALLBUSINESS_RESTRICTED标志都是在安装此产品套件时设置的。 如果将此安装升级到 Windows Server Standard Edition,则会清除VER_SUITE_SMALLBUSINESS_RESTRICTED标志,但仍设置VER_SUITE_SMALLBUSINESS标志,在本例中,指示以前在此系统上安装了 Small Business Server。 如果此安装进一步升级到 Windows Server,Enterprise Edition,则仍设置VER_SUITE_SMALLBUSINESS标志。
wProductType
产品类型。 此成员包含有关系统的其他信息。 此成员可以是以下值之一:
值 | 含义 |
---|---|
VER_NT_WORKSTATION | Windows 2000 或更高版本专业版 |
VER_NT_DOMAIN_CONTROLLER | Windows 2000 或更高版本的域控制器 |
VER_NT_SERVER | Windows 2000 或更高版本的服务器 |
wReserved
保留供将来使用。
注解
此结构中的信息包括主要版本号和次要版本号、内部版本号、平台标识符、已安装的产品套件以及系统上安装的最新 Service Pack。 此结构与 RtlGetVersion 和 RtlVerifyVersionInfo 例程一起使用。
依赖版本信息并不总是测试功能是否可用的最佳方法。 有关指导,请参阅你感兴趣的功能的文档。
如果可能,请在驱动程序中设计版本检测代码,使驱动程序能够在将来的 Windows 版本上运行。 如果驱动程序需要特定的操作系统版本,请确保将此版本视为受支持的最低版本,而不是驱动程序可以运行的唯一版本。
下表汇总了受支持的 Windows 版本返回的版本信息。 使用“其他”列或内部版本号中的信息来区分具有相同版本号的操作系统。
操作系统 | 版本号 | dwMajorVersion | dwMinorVersion | 其他 |
---|---|---|---|---|
Windows 11 | 10.0 | 10 | 0 | wProductType == VER_NT_WORKSTATION |
Windows Server 2022 | 10.0 | 10 | 0 | wProductType != VER_NT_WORKSTATION |
Windows Server 2019 | 10.0 | 10 | 0 | wProductType != VER_NT_WORKSTATION |
Windows 10 (所有版本) | 10.0 | 10 | 0 | wProductType == VER_NT_WORKSTATION |
Windows Server 2016 | 10.0 | 10 | 0 | wProductType != VER_NT_WORKSTATION |
Windows Server 2012 R2 | 6.3 | 6 | 3 | wProductType != VER_NT_WORKSTATION |
Windows 8.1 | 6.3 | 6 | 3 | wProductType == VER_NT_WORKSTATION |
Windows 8 | 6.2 | 6 | 2 | wProductType == VER_NT_WORKSTATION |
Windows Server 2012 | 6.2 | 6 | 2 | wProductType != VER_NT_WORKSTATION |
Windows 7 | 6.1 | 6 | 1 | wProductType == VER_NT_WORKSTATION |
Windows Server 2008 R2 | 6.1 | 6 | 1 | wProductType != VER_NT_WORKSTATION |
Windows Server 2008 | 6.0 | 6 | 0 | wProductType != VER_NT_WORKSTATION |
Windows Vista | 6.0 | 6 | 0 | wProductType == VER_NT_WORKSTATION |
Windows Home Server | 5.2 | 5 | 2 | wSuiteMask == VER_SUITE_WH_SERVER |
Windows Server 2003 | 5.2 | 5 | 2 | 不适用 |
Windows XP Professional x64 Edition (请参阅注释) | 5.2 | 5 | 2 | wProductType == VER_NT_WORKSTATION |
Windows XP | 5.1 | 5 | 1 | 不适用 |
Windows 2000 | 5.0 | 5 | 0 | 不适用 |
只有 64 位内核模式驱动程序可以在 Windows XP Professional x64 Edition 上运行。 因此,32 位内核模式驱动程序可以安全地省略此版本的 Windows 检查。
要求
要求 | 值 |
---|---|
Header | wdm.h (包括 Ntddk.h) |