Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › zig › system › windows › detectRuntimeVersion Public Function detectRuntimeVersion Doc Source Public Function std.zig.system.windows.detectRuntimeVersion
pub fn detectRuntimeVersion () WindowsVersion File zig/system/windows.zig: 14
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 pub fn detectRuntimeVersion () WindowsVersion {
var version_info : std .os .windows .RTL_OSVERSIONINFOW = undefined ;
version_info .dwOSVersionInfoSize = @sizeOf (@TypeOf (version_info ));
switch (std .os .windows .ntdll .RtlGetVersion (&version_info )) {
.SUCCESS => {},
else => unreachable ,
}
// Starting from the system infos build a NTDDI-like version
// constant whose format is:
// B0 B1 B2 B3
// `---` `` ``--> Sub-version (Starting from Windows 10 onwards)
// \ `--> Service pack (Always zero in the constants defined)
// `--> OS version (Major & minor)
const os_ver : u16 = @as (u16 , @intCast (version_info .dwMajorVersion & 0xff )) << 8 |
@as (u16 , @intCast (version_info .dwMinorVersion & 0xff ));
const sp_ver : u8 = 0 ;
const sub_ver : u8 = if (os_ver >= 0x0A00 ) subver : {
// There's no other way to obtain this info beside
// checking the build number against a known set of
// values
var last_idx : usize = 0 ;
for (WindowsVersion .known_win10_build_numbers , 0 ..) |build , i | {
if (version_info .dwBuildNumber >= build )
last_idx = i ;
}
break :subver @as (u8 , @truncate (last_idx ));
} else 0 ;
const version : u32 = @as (u32 , os_ver ) << 16 | @as (u16 , sp_ver ) << 8 | sub_ver ;
return @as (WindowsVersion , @fromBackingInt (@intCast (version )));
}
Returns the highest known WindowsVersion deduced from reported runtime information. Discards information about in-between versions we don't differentiate.