diff --git a/platform/misc.c b/platform/misc.c index 60e304a..3b43d53 100644 --- a/platform/misc.c +++ b/platform/misc.c @@ -26,6 +26,10 @@ static HRESULT reg_read_sys_ver(void *bytes, uint32_t *nbytes); static HRESULT reg_read_display_ver(void *bytes, uint32_t *nbytes); static HRESULT reg_read_product_name(void *bytes, uint32_t *nbytes); static HRESULT reg_read_release_id(void *bytes, uint32_t *nbytes); +static HRESULT reg_read_current_major_version(void *bytes, uint32_t *nbytes); +static HRESULT reg_read_current_minor_version(void *bytes, uint32_t *nbytes); +static HRESULT reg_read_current_build_number(void *bytes, uint32_t *nbytes); +static HRESULT reg_read_ubr(void *bytes, uint32_t *nbytes); static BOOL (WINAPI *next_BlockInput)(BOOL fBlockIt); static int (WINAPI *next_ShowCursor)(BOOL bShow); @@ -90,6 +94,26 @@ static const struct reg_hook_val winver_reg[] = { .name = L"ReleaseId", .type = REG_SZ, .read = reg_read_release_id + }, + { + .name = L"CurrentMajorVersion", + .type = REG_DWORD, + .read = reg_read_current_major_version + }, + { + .name = L"CurrentMinorVersion", + .type = REG_DWORD, + .read = reg_read_current_minor_version + }, + { + .name = L"CurrentBuildNumber", + .type = REG_SZ, + .read = reg_read_current_build_number + }, + { + .name = L"UBR", + .type = REG_DWORD, + .read = reg_read_ubr } }; @@ -205,6 +229,30 @@ static HRESULT reg_read_release_id(void *bytes, uint32_t *nbytes) return reg_hook_read_wstr(bytes, nbytes, L"1607"); } +static HRESULT reg_read_current_major_version(void *bytes, uint32_t *nbytes) +{ + dprintf("Misc: Get current major version\n"); + return reg_hook_read_u32(bytes, nbytes, 10); +} + +static HRESULT reg_read_current_minor_version(void *bytes, uint32_t *nbytes) +{ + dprintf("Misc: Get current minor version\n"); + return reg_hook_read_u32(bytes, nbytes, 0); +} + +static HRESULT reg_read_current_build_number(void *bytes, uint32_t *nbytes) +{ + dprintf("Misc: Get current build number\n"); + return reg_hook_read_wstr(bytes, nbytes, L"1607"); +} + +static HRESULT reg_read_ubr(void *bytes, uint32_t *nbytes) +{ + dprintf("Misc: Get UBR\n"); + return reg_hook_read_u32(bytes, nbytes, 6880); +} + static UINT WINAPI my_GetDriveTypeA(LPCSTR lpRootPathName) { dprintf("Misc: Get Drive Type for %s\n", lpRootPathName);