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 版本。 |
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小型企业服务器曾经安装在系统上,但可能已升级到另一版本的 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 Home Server。 |
不应只依赖 VER_SUITE_SMALLBUSINESS 标志来确定当前是否安装了小型企业服务器。 安装此产品套件时,将同时设置此标志和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 版本(请参阅注释) | 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 版本上运行。 因此,32 位内核模式驱动程序可以安全地省略此版本的 Windows 检查。
要求
要求 | 价值 |
---|---|
标头 | wdm.h (include Ntddk.h) |