Skip to content

Commit c928fa9

Browse files
Added GettIddCx Source
1 parent d5a4466 commit c928fa9

File tree

3 files changed

+128
-0
lines changed

3 files changed

+128
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#include <windows.h>
2+
#include <iostream>
3+
#include <string>
4+
#include <map>
5+
6+
struct IddCxVersionInfo {
7+
std::string windowsVersion;
8+
std::string iddcxVersion;
9+
ULONG versionValue;
10+
};
11+
12+
std::map<DWORD, IddCxVersionInfo> versionMap = {
13+
{26100, {"Windows 11 24H2", "1.10", 0x1A80}},
14+
{22631, {"Windows 11 23H2", "1.10", 0x1A00}},
15+
{22621, {"Windows 11 22H2", "1.9", 0x1900}},
16+
{22000, {"Windows 11 21H2", "1.8", 0x1800}},
17+
{19045, {"Windows 10 22H2", "1.5", 0x1500}},
18+
{19044, {"Windows 10 21H2", "1.5", 0x1500}},
19+
{19043, {"Windows 10 21H1", "1.5", 0x1500}},
20+
{19042, {"Windows 10 20H2", "1.5", 0x1500}},
21+
{19041, {"Windows 10 20H1", "1.5", 0x1500}},
22+
{18363, {"Windows 10 19H2", "1.4", 0x1400}},
23+
{18362, {"Windows 10 19H1", "1.4", 0x1400}},
24+
{17763, {"Windows 10 RS5", "1.3", 0x1300}},
25+
{17134, {"Windows 10 RS4", "1.3", 0x1300}},
26+
{16299, {"Windows 10 RS3", "1.3", 0x1300}},
27+
{15063, {"Windows 10 Creators Update", "1.2", 0x1200}},
28+
{14393, {"Windows 10 Anniversary Update", "1.0", 0x1000}},
29+
{10240, {"Windows 10 RTM", "1.0", 0x1000}}
30+
};
31+
32+
DWORD GetWindowsBuildNumber() {
33+
OSVERSIONINFOEX osvi;
34+
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
35+
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
36+
37+
HMODULE hMod = GetModuleHandleW(L"ntdll.dll");
38+
if (hMod) {
39+
typedef NTSTATUS(WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);
40+
RtlGetVersionPtr RtlGetVersion = (RtlGetVersionPtr)GetProcAddress(hMod, "RtlGetVersion");
41+
42+
if (RtlGetVersion) {
43+
RTL_OSVERSIONINFOW rovi = { 0 };
44+
rovi.dwOSVersionInfoSize = sizeof(rovi);
45+
if (RtlGetVersion(&rovi) == 0) {
46+
return rovi.dwBuildNumber;
47+
}
48+
}
49+
}
50+
51+
return 0;
52+
}
53+
54+
IddCxVersionInfo GetIddCxVersionFromBuild(DWORD buildNumber) {
55+
auto it = versionMap.find(buildNumber);
56+
if (it != versionMap.end()) {
57+
return it->second;
58+
}
59+
60+
for (auto& pair : versionMap) {
61+
if (buildNumber >= pair.first) {
62+
return pair.second;
63+
}
64+
}
65+
66+
return {"Unknown Windows Version", "Unknown", 0x0000};
67+
}
68+
69+
int main() {
70+
std::cout << "IddCx Version Query Tool\n";
71+
std::cout << "========================\n\n";
72+
73+
DWORD buildNumber = GetWindowsBuildNumber();
74+
75+
if (buildNumber == 0) {
76+
std::cout << "Error: Could not retrieve Windows build number.\n";
77+
return 1;
78+
}
79+
80+
std::cout << "Windows Build Number: " << buildNumber << "\n";
81+
82+
IddCxVersionInfo versionInfo = GetIddCxVersionFromBuild(buildNumber);
83+
84+
std::cout << "Windows Version: " << versionInfo.windowsVersion << "\n";
85+
std::cout << "IddCx Version: " << versionInfo.iddcxVersion << "\n";
86+
std::cout << "IddCx Version Value: 0x" << std::hex << std::uppercase << versionInfo.versionValue << "\n\n";
87+
88+
if (versionInfo.iddcxVersion == "Unknown") {
89+
std::cout << "Note: This Windows build may not support IddCx or uses an unknown version.\n";
90+
std::cout << "IddCx was introduced in Windows 10 Creators Update (build 15063).\n";
91+
} else {
92+
std::cout << "IddCx Framework Information:\n";
93+
std::cout << "- IddCx (Indirect Display Driver Class eXtension) is a framework for\n";
94+
std::cout << " developing indirect display drivers in Windows.\n";
95+
std::cout << "- This version provides specific capabilities and APIs for indirect\n";
96+
std::cout << " display driver development.\n";
97+
}
98+
99+
std::cout << "\nPress any key to exit...";
100+
std::cin.get();
101+
102+
return 0;
103+
}
291 KB
Binary file not shown.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@echo off
2+
echo Building IddCx Version Query Tool...
3+
echo.
4+
5+
if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" (
6+
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
7+
cl /EHsc IddCxVersionQuery.cpp /Fe:IddCxVersionQuery.exe
8+
) else if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" (
9+
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
10+
cl /EHsc IddCxVersionQuery.cpp /Fe:IddCxVersionQuery.exe
11+
) else (
12+
echo Visual Studio not found. Trying g++...
13+
g++ -std=c++11 -o IddCxVersionQuery.exe IddCxVersionQuery.cpp
14+
)
15+
16+
if exist IddCxVersionQuery.exe (
17+
echo.
18+
echo Build successful! Run IddCxVersionQuery.exe to check IddCx version.
19+
) else (
20+
echo.
21+
echo Build failed. Please ensure you have a C++ compiler installed.
22+
echo You can install Visual Studio Community or MinGW-w64.
23+
)
24+
25+
pause

0 commit comments

Comments
 (0)