Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
June 2022
- 68 participants
- 3274 messages
[PATCH 6/6] uxtheme: Support parsing more window parts and states.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 5 +++++
include/vsstyle.h | 1 +
2 files changed, 6 insertions(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index f69be5f5fd4..e1973305076 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -2,6 +2,7 @@
* msstyle data maps
*
* Copyright (C) 2004 Kevin Koltzau
+ * Copyright 2021-2022 Zhiyi Zhang for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -1397,6 +1398,10 @@ static const MSSTYLES_CLASS_MAP classWindow[] = {
{WP_SMALLFRAMERIGHTSIZINGTEMPLATE, 0, L"SMALLFRAMERIGHTSIZINGTEMPLATE"},
{WP_FRAMEBOTTOMSIZINGTEMPLATE, 0, L"FRAMEBOTTOMSIZINGTEMPLATE"},
{WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE, 0, L"SMALLFRAMEBOTTOMSIZINGTEMPLATE"},
+ {WP_FRAME, 0, L"FRAME"},
+ {WP_FRAME, FS_ACTIVE, L"ACTIVE"},
+ {WP_FRAME, FS_INACTIVE, L"INACTIVE"},
+ {WP_BORDER, 0, L"BORDER"},
{0, 0, L""}
};
diff --git a/include/vsstyle.h b/include/vsstyle.h
index 09948cf8dd5..4bc3469ae87 100644
--- a/include/vsstyle.h
+++ b/include/vsstyle.h
@@ -1589,6 +1589,7 @@ enum WINDOWPARTS {
WP_FRAMEBOTTOMSIZINGTEMPLATE = 36,
WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37,
WP_FRAME = 38,
+ WP_BORDER = 39,
};
#define WINDOWSTYLEPARTS WINDOWPARTS;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 5/6] uxtheme: Support parsing more tooltip parts and states.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 11 +++++++++++
include/vsstyle.h | 7 +++++++
2 files changed, 18 insertions(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index 2d1363a0dee..f69be5f5fd4 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -1179,6 +1179,17 @@ static const MSSTYLES_CLASS_MAP classTooltip[] = {
{TTP_CLOSE, TTCS_NORMAL, L"NORMAL"},
{TTP_CLOSE, TTCS_HOT, L"HOT"},
{TTP_CLOSE, TTCS_PRESSED, L"PRESSED"},
+ {TTP_BALLOONSTEM, 0, L"BALLOONSTEM"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGUPLEFTWALL, L"POINTINGUPLEFTWALL"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGUPCENTERED, L"POINTINGUPCENTERED"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGUPRIGHTWALL, L"POINTINGUPRIGHTWALL"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGDOWNRIGHTWALL, L"POINTINGDOWNRIGHTWALL"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGDOWNCENTERED, L"POINTINGDOWNCENTERED"},
+ {TTP_BALLOONSTEM, TTBSS_POINTINGDOWNLEFTWALL, L"POINTINGDOWNLEFTWALL"},
+ {TTP_WRENCH, 0, L"WRENCH"},
+ {TTP_WRENCH, TTWS_NORMAL, L"NORMAL"},
+ {TTP_WRENCH, TTWS_HOT, L"HOT"},
+ {TTP_WRENCH, TTWS_PRESSED, L"PRESSED"},
{0, 0, L""}
};
diff --git a/include/vsstyle.h b/include/vsstyle.h
index 36693ceb890..09948cf8dd5 100644
--- a/include/vsstyle.h
+++ b/include/vsstyle.h
@@ -1376,6 +1376,7 @@ enum TOOLTIPPARTS {
TTP_BALLOONTITLE = 4,
TTP_CLOSE = 5,
TTP_BALLOONSTEM = 6,
+ TTP_WRENCH = 7,
};
#define TOOLTIPSTYLEPARTS TOOLTIPPARTS;
@@ -1405,6 +1406,12 @@ enum BALLOONSTEMSTATES {
TTBSS_POINTINGDOWNLEFTWALL = 6,
};
+enum WRENCHSTATES {
+ TTWS_NORMAL = 1,
+ TTWS_HOT = 2,
+ TTWS_PRESSED = 3,
+};
+
/* TRACKBARSTYLE class */
#if defined(_MSC_VER) || defined(__MINGW32__)
#define VSCLASS_TRACKBARSTYLE L"TRACKBARSTYLE"
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 4/6] uxtheme: Support parsing more toolbar parts and states.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 21 +++++++++++++++++++++
include/vsstyle.h | 1 +
2 files changed, 22 insertions(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index d6119380035..2d1363a0dee 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -1103,6 +1103,8 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_BUTTON, TS_DISABLED, L"DISABLED"},
{TP_BUTTON, TS_CHECKED, L"CHECKED"},
{TP_BUTTON, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_BUTTON, TS_NEARHOT, L"NEARHOT"},
+ {TP_BUTTON, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{TP_DROPDOWNBUTTON, 0, L"DROPDOWNBUTTON"},
{TP_DROPDOWNBUTTON, TS_NORMAL, L"NORMAL"},
{TP_DROPDOWNBUTTON, TS_HOT, L"HOT"},
@@ -1110,6 +1112,8 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_DROPDOWNBUTTON, TS_DISABLED, L"DISABLED"},
{TP_DROPDOWNBUTTON, TS_CHECKED, L"CHECKED"},
{TP_DROPDOWNBUTTON, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_DROPDOWNBUTTON, TS_NEARHOT, L"NEARHOT"},
+ {TP_DROPDOWNBUTTON, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{TP_SPLITBUTTON, 0, L"SPLITBUTTON"},
{TP_SPLITBUTTON, TS_NORMAL, L"NORMAL"},
{TP_SPLITBUTTON, TS_HOT, L"HOT"},
@@ -1117,6 +1121,8 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_SPLITBUTTON, TS_DISABLED, L"DISABLED"},
{TP_SPLITBUTTON, TS_CHECKED, L"CHECKED"},
{TP_SPLITBUTTON, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_SPLITBUTTON, TS_NEARHOT, L"NEARHOT"},
+ {TP_SPLITBUTTON, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{TP_SPLITBUTTONDROPDOWN, 0, L"SPLITBUTTONDROPDOWN"},
{TP_SPLITBUTTONDROPDOWN, TS_NORMAL, L"NORMAL"},
{TP_SPLITBUTTONDROPDOWN, TS_HOT, L"HOT"},
@@ -1124,6 +1130,8 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_SPLITBUTTONDROPDOWN, TS_DISABLED, L"DISABLED"},
{TP_SPLITBUTTONDROPDOWN, TS_CHECKED, L"CHECKED"},
{TP_SPLITBUTTONDROPDOWN, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_SPLITBUTTONDROPDOWN, TS_NEARHOT, L"NEARHOT"},
+ {TP_SPLITBUTTONDROPDOWN, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{TP_SEPARATOR, 0, L"SEPARATOR"},
{TP_SEPARATOR, TS_NORMAL, L"NORMAL"},
{TP_SEPARATOR, TS_HOT, L"HOT"},
@@ -1131,6 +1139,8 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_SEPARATOR, TS_DISABLED, L"DISABLED"},
{TP_SEPARATOR, TS_CHECKED, L"CHECKED"},
{TP_SEPARATOR, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_SEPARATOR, TS_NEARHOT, L"NEARHOT"},
+ {TP_SEPARATOR, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{TP_SEPARATORVERT, 0, L"SEPARATORVERT"},
{TP_SEPARATORVERT, TS_NORMAL, L"NORMAL"},
{TP_SEPARATORVERT, TS_HOT, L"HOT"},
@@ -1138,6 +1148,17 @@ static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_SEPARATORVERT, TS_DISABLED, L"DISABLED"},
{TP_SEPARATORVERT, TS_CHECKED, L"CHECKED"},
{TP_SEPARATORVERT, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_SEPARATORVERT, TS_NEARHOT, L"NEARHOT"},
+ {TP_SEPARATORVERT, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
+ {TP_DROPDOWNBUTTONGLYPH, 0, L"DROPDOWNBUTTONGLYPH"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_NORMAL, L"NORMAL"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_HOT, L"HOT"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_PRESSED, L"PRESSED"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_DISABLED, L"DISABLED"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_CHECKED, L"CHECKED"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_HOTCHECKED, L"HOTCHECKED"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_NEARHOT, L"NEARHOT"},
+ {TP_DROPDOWNBUTTONGLYPH, TS_OTHERSIDEHOT, L"OTHERSIDEHOT"},
{0, 0, L""}
};
diff --git a/include/vsstyle.h b/include/vsstyle.h
index a81f621ef0f..36693ceb890 100644
--- a/include/vsstyle.h
+++ b/include/vsstyle.h
@@ -1344,6 +1344,7 @@ enum TOOLBARPARTS {
TP_SPLITBUTTONDROPDOWN = 4,
TP_SEPARATOR = 5,
TP_SEPARATORVERT = 6,
+ TP_DROPDOWNBUTTONGLYPH = 7,
};
#define TOOLBARSTYLEPARTS TOOLBARPARTS;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 3/6] uxtheme: Support parsing more treeview parts and states.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53066
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index 834af6b2f74..d6119380035 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -1222,10 +1222,14 @@ static const MSSTYLES_CLASS_MAP classTreeview[] = {
{TVP_TREEITEM, TREIS_SELECTED, L"SELECTED"},
{TVP_TREEITEM, TREIS_DISABLED, L"DISABLED"},
{TVP_TREEITEM, TREIS_SELECTEDNOTFOCUS, L"SELECTEDNOTFOCUS"},
+ {TVP_TREEITEM, TREIS_HOTSELECTED, L"HOTSELECTED"},
{TVP_GLYPH, 0, L"GLYPH"},
{TVP_GLYPH, GLPS_CLOSED, L"CLOSED"},
{TVP_GLYPH, GLPS_OPENED, L"OPENED"},
{TVP_BRANCH, 0, L"BRANCH"},
+ {TVP_HOTGLYPH, 0, L"HOTGLYPH"},
+ {TVP_HOTGLYPH, HGLPS_CLOSED, L"CLOSED"},
+ {TVP_HOTGLYPH, HGLPS_OPENED, L"OPENED"},
{0, 0, L""}
};
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 2/6] uxtheme: Support parsing taskdialog class.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53066
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 35 +++++++++++++++++++++++++++++++++++
include/vsstyle.h | 2 ++
2 files changed, 37 insertions(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index 00c80259dbb..834af6b2f74 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -1061,6 +1061,40 @@ static const MSSTYLES_CLASS_MAP classTaskbar[] = {
{0, 0, L""}
};
+static const MSSTYLES_CLASS_MAP classTaskdialog[] = {
+ {TDLG_PRIMARYPANEL, 0, L"PRIMARYPANEL"},
+ {TDLG_MAININSTRUCTIONPANE, 0, L"MAININSTRUCTIONPANE"},
+ {TDLG_MAINICON, 0, L"MAINICON"},
+ {TDLG_CONTENTPANE, 0, L"CONTENTPANE"},
+ {TDLG_CONTENTICON, 0, L"CONTENTICON"},
+ {TDLG_EXPANDEDCONTENT, 0, L"EXPANDEDCONTENT"},
+ {TDLG_COMMANDLINKPANE, 0, L"COMMANDLINKPANE"},
+ {TDLG_SECONDARYPANEL, 0, L"SECONDARYPANEL"},
+ {TDLG_CONTROLPANE, 0, L"CONTROLPANE"},
+ {TDLG_CONTROLPANE, TDLGCPS_STANDALONE, L"STANDALONE"},
+ {TDLG_BUTTONSECTION, 0, L"BUTTONSECTION"},
+ {TDLG_BUTTONWRAPPER, 0, L"BUTTONWRAPPER"},
+ {TDLG_EXPANDOTEXT, 0, L"EXPANDOTEXT"},
+ {TDLG_EXPANDOBUTTON, 0, L"EXPANDOBUTTON"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_NORMAL, L"NORMAL"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_HOVER, L"HOVER"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_PRESSED, L"PRESSED"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_EXPANDEDNORMAL, L"EXPANDEDNORMAL"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_EXPANDEDHOVER, L"EXPANDEDHOVER"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_EXPANDEDPRESSED, L"EXPANDEDPRESSED"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_NORMALDISABLED, L"NORMALDISABLED"},
+ {TDLG_EXPANDOBUTTON, TDLGEBS_EXPANDEDDISABLED, L"EXPANDEDDISABLED"},
+ {TDLG_VERIFICATIONTEXT, 0, L"VERIFICATIONTEXT"},
+ {TDLG_FOOTNOTEPANE, 0, L"FOOTNOTEPANE"},
+ {TDLG_FOOTNOTEAREA, 0, L"FOOTNOTEAREA"},
+ {TDLG_FOOTNOTESEPARATOR, 0, L"FOOTNOTESEPARATOR"},
+ {TDLG_EXPANDEDFOOTERAREA, 0, L"EXPANDEDFOOTERAREA"},
+ {TDLG_PROGRESSBAR, 0, L"PROGRESSBAR"},
+ {TDLG_IMAGEALIGNMENT, 0, L"IMAGEALIGNMENT"},
+ {TDLG_RADIOBUTTONPANE, 0, L"RADIOBUTTONPANE"},
+ {0, 0, L""}
+};
+
static const MSSTYLES_CLASS_MAP classToolbar[] = {
{TP_BUTTON, 0, L"BUTTON"},
{TP_BUTTON, TS_NORMAL, L"NORMAL"},
@@ -1352,6 +1386,7 @@ static const MSSTYLES_CLASS_NAME mapClass[] = {
{classTab, L"TAB"},
{classTaskband, L"TASKBAND"},
{classTaskbar, L"TASKBAR"},
+ {classTaskdialog, L"TASKDIALOG"},
{classToolbar, L"TOOLBAR"},
{classTooltip, L"TOOLTIP"},
{classTrackbar, L"TRACKBAR"},
diff --git a/include/vsstyle.h b/include/vsstyle.h
index b527c15a29a..a81f621ef0f 100644
--- a/include/vsstyle.h
+++ b/include/vsstyle.h
@@ -1293,6 +1293,8 @@ enum EXPANDOBUTTONSTATES {
TDLGEBS_EXPANDEDNORMAL = 4,
TDLGEBS_EXPANDEDHOVER = 5,
TDLGEBS_EXPANDEDPRESSED = 6,
+ TDLGEBS_NORMALDISABLED = 7,
+ TDLGEBS_EXPANDEDDISABLED = 8,
};
/* TEXTSTYLE class */
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 1/6] uxtheme: Support parsing more tab parts.
by Zhiyi Zhang
From: Zhiyi Zhang <zzhang(a)codeweavers.com>
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/uxtheme/stylemap.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/uxtheme/stylemap.c b/dlls/uxtheme/stylemap.c
index 8da93ef321d..00c80259dbb 100644
--- a/dlls/uxtheme/stylemap.c
+++ b/dlls/uxtheme/stylemap.c
@@ -1038,6 +1038,7 @@ static const MSSTYLES_CLASS_MAP classTab[] = {
{TABP_TOPTABITEMBOTHEDGE, TTIBES_FOCUSED, L"FOCUSED"},
{TABP_PANE, 0, L"PANE"},
{TABP_BODY, 0, L"BODY"},
+ {TABP_AEROWIZARDBODY, 0, L"AEROWIZARDBODY"},
{0, 0, L""}
};
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
[PATCH 0/6] MR299: uxtheme: Support parsing more tab parts.
by Zhiyi Zhang (@zhiyi)
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/299
June 23, 2022
Re: [PATCH v2] ntdll: Add RtlGetDeviceFamilyInfoEnum and RtlConvertDeviceFamilyInfoToString
by Kacper rączy
I’ve added the unit tests in dlls/ntdll/tests/version.c and applied your feedback regarding coding style.
> Wiadomość napisana przez Kacper Raczy <gfw.kra(a)gmail.com> w dniu 23.06.2022, o godz. 01:27:
>
> APIs introduced in Windows 10 (NT10.0). Device form and family is fixed
> to Desktop configuration. Unit tests included in dlls/ntdll/tests/version.c
>
> Signed-off-by: Kacper Raczy <gfw.kra(a)gmail.com>
> ---
> dlls/ntdll/ntdll.spec | 2 +
> dlls/ntdll/rtl.c | 2 +-
> dlls/ntdll/tests/Makefile.in | 3 +-
> dlls/ntdll/tests/version.c | 71 ++++++++++++++++++++++++++++++++++++
> dlls/ntdll/version.c | 48 +++++++++++++++++++++++-
> include/winnt.h | 10 +++++
> 6 files changed, 133 insertions(+), 3 deletions(-)
> create mode 100644 dlls/ntdll/tests/version.c
>
> diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
> index b1650ab4306..4539a9bd0ed 100644
> --- a/dlls/ntdll/ntdll.spec
> +++ b/dlls/ntdll/ntdll.spec
> @@ -712,6 +712,8 @@
> @ stdcall RtlGetCurrentProcessorNumberEx(ptr)
> @ stdcall RtlGetCurrentTransaction()
> @ stdcall RtlGetDaclSecurityDescriptor(ptr ptr ptr ptr)
> +@ stdcall RtlGetDeviceFamilyInfoEnum(ptr ptr ptr)
> +@ stdcall RtlConvertDeviceFamilyInfoToString(ptr ptr ptr ptr)
> @ stdcall RtlGetElementGenericTable(ptr long)
> # @ stub RtlGetElementGenericTableAvl
> @ stdcall RtlGetEnabledExtendedFeatures(int64)
> diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c
> index 11067f44941..421cf377d32 100644
> --- a/dlls/ntdll/rtl.c
> +++ b/dlls/ntdll/rtl.c
> @@ -2211,4 +2211,4 @@ char WINAPI RtlQueryProcessPlaceholderCompatibilityMode(void)
> {
> FIXME("stub\n");
> return PHCM_APPLICATION_DEFAULT;
> -}
> +}
> \ No newline at end of file
> diff --git a/dlls/ntdll/tests/Makefile.in b/dlls/ntdll/tests/Makefile.in
> index 90deb5865f8..e64b70b15e4 100644
> --- a/dlls/ntdll/tests/Makefile.in
> +++ b/dlls/ntdll/tests/Makefile.in
> @@ -25,5 +25,6 @@ C_SRCS = \
> thread.c \
> threadpool.c \
> time.c \
> + version.c \
> virtual.c \
> - wow64.c
> + wow64.c
> \ No newline at end of file
> diff --git a/dlls/ntdll/tests/version.c b/dlls/ntdll/tests/version.c
> new file mode 100644
> index 00000000000..6b2d86e3464
> --- /dev/null
> +++ b/dlls/ntdll/tests/version.c
> @@ -0,0 +1,71 @@
> +/*
> + * Unit test suite for Rtl* Version API functions
> + *
> + * Copyright 2022 Kacper Rączy
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
> + */
> +
> +#include "ntdll_test.h"
> +#include "wine/test.h"
> +
> +static void test_RtlGetDeviceFamilyInfoEnum(void)
> +{
> + DWORD family, form;
> + ULONGLONG uap;
> + RTL_OSVERSIONINFOEXW version;
> +
> + RtlGetVersion(&version);
> + RtlGetDeviceFamilyInfoEnum(&uap, &family, &form);
> + ok( ((uap >> 48) & 0xffff) == version.dwMajorVersion,
> + "First 16-bit chunk of UAP does not match major system version %llx\n", uap );
> + ok( ((uap >> 32) & 0xffff) == version.dwMinorVersion,
> + "Second 16-bit chunk of UAP does not match minor system version %llx\n", uap );
> + ok( ((uap >> 16) & 0xffff) == version.dwBuildNumber,
> + "Third 16-bit chunk of UAP does not match build number %llx\n", uap );
> + ok( form == DEVICEFAMILYDEVICEFORM_DESKTOP,
> + "Device form does not match Desktop value: %lx\n", form );
> + ok( family == DEVICEFAMILYINFOENUM_DESKTOP,
> + "Device family does not match Windows.Desktop value: %lx\n", family );
> +}
> +
> +static void test_RtlConvertDeviceFamilyInfoToString(void)
> +{
> + DWORD family_bufsize = 0, form_bufsize = 0;
> + WCHAR *family, *form;
> +
> + RtlConvertDeviceFamilyInfoToString(&family_bufsize, &form_bufsize, NULL, NULL);
> + ok( family_bufsize == sizeof(WCHAR) * 16, /* Windows.Desktop length */
> + "Device family bufsize does not match: %u\n", family_bufsize );
> + ok( form_bufsize == sizeof(WCHAR) * 8, /* Desktop length */
> + "Device family bufsize does not match: %u\n", form_bufsize );
> +
> + family = (WCHAR*)malloc(family_bufsize);
> + form = (WCHAR*)malloc(form_bufsize);
> + RtlConvertDeviceFamilyInfoToString(&family_bufsize, &form_bufsize, family, form);
> + ok( wcscmp(family, L"Windows.Desktop") == 0,
> + "Device family string is not equal to Windows.Desktop: %ls", family );
> + ok( wcscmp(form, L"Desktop") == 0,
> + "Device form string is not equal to Desktop: %ls", form );
> +
> + free(family);
> + free(form);
> +}
> +
> +START_TEST(version)
> +{
> + test_RtlGetDeviceFamilyInfoEnum();
> + test_RtlConvertDeviceFamilyInfoToString();
> +}
> \ No newline at end of file
> diff --git a/dlls/ntdll/version.c b/dlls/ntdll/version.c
> index 492c24cc636..e988a17311b 100644
> --- a/dlls/ntdll/version.c
> +++ b/dlls/ntdll/version.c
> @@ -609,7 +609,6 @@ void WINAPI RtlGetNtVersionNumbers( LPDWORD major, LPDWORD minor, LPDWORD build
> if (build) *build = (0xF0000000 | current_version->dwBuildNumber);
> }
>
> -
> /******************************************************************************
> * RtlGetNtProductType (NTDLL.@)
> */
> @@ -760,6 +759,53 @@ NTSTATUS WINAPI RtlVerifyVersionInfo( const RTL_OSVERSIONINFOEXW *info,
> return STATUS_SUCCESS;
> }
>
> +/*********************************************************************
> + * RtlGetDeviceFamilyInfoEnum (NTDLL.@)
> + *
> + * NOTES
> + * Introduced in Windows 10 (NT10.0)
> + */
> +void WINAPI RtlGetDeviceFamilyInfoEnum( ULONGLONG *uap_info, DWORD *device_family, DWORD *device_form )
> +{
> + if (device_form)
> + *device_form = DEVICEFAMILYDEVICEFORM_DESKTOP;
> + if (device_family)
> + *device_family = DEVICEFAMILYINFOENUM_DESKTOP;
> + if (!uap_info)
> + return;
> +
> + /**
> + UAP info is 64 bit unsigned integer which contains four 16-bit chunks:
> + 1. os version major
> + 2. os version minor
> + 3. current build number
> + 4. UBR
> + */
> + *uap_info = 0;
> + *uap_info |= (((ULONGLONG)current_version->dwMajorVersion & 0xffff) << 48); /* os version major */
> + *uap_info |= (((ULONGLONG)current_version->dwMinorVersion & 0xffff) << 32); /* os version minor */
> + *uap_info |= (((ULONGLONG)current_version->dwBuildNumber & 0xffff) << 16); /* current build number */
> + /* UBR not available */
> +}
> +
> +/*********************************************************************
> + * RtlConvertDeviceFamilyInfoToString (NTDLL.@)
> + *
> + * NOTES
> + * Introduced in Windows 10 (NT10.0)
> + */
> +void WINAPI RtlConvertDeviceFamilyInfoToString( DWORD *device_family_bufsize, DWORD *device_form_bufsize,
> + const WCHAR *device_family, const WCHAR *device_form)
> +{
> + DWORD device_family_len = (wcslen( DEVICEFAMILYINFOENUM_DESKTOP_STR ) + 1) * sizeof(WCHAR);
> + DWORD device_form_len = (wcslen( DEVICEFAMILYDEVICEFORM_DESKTOP_STR ) + 1) * sizeof(WCHAR);
> + if (*device_family_bufsize >= device_family_len)
> + wcscpy( device_family, DEVICEFAMILYINFOENUM_DESKTOP_STR );
> + if (*device_form_bufsize >= device_form_len)
> + wcscpy( device_form, DEVICEFAMILYDEVICEFORM_DESKTOP_STR );
> + *device_family_bufsize = device_family_len;
> + *device_form_bufsize = device_form_len;
> +}
>
> /******************************************************************************
> * VerSetConditionMask (NTDLL.@)
> diff --git a/include/winnt.h b/include/winnt.h
> index 87c4b4da92d..eeb4e1cb494 100644
> --- a/include/winnt.h
> +++ b/include/winnt.h
> @@ -6224,6 +6224,16 @@ typedef struct _SYSTEM_CPU_SET_INFORMATION
> } DUMMYUNIONNAME;
> } SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_CPU_SET_INFORMATION;
>
> +/* Windows 10 Rtl apis */
> +
> +#define DEVICEFAMILYDEVICEFORM_DESKTOP 0x00000003
> +#define DEVICEFAMILYINFOENUM_DESKTOP 0x00000003
> +#define DEVICEFAMILYDEVICEFORM_DESKTOP_STR L"Desktop"
> +#define DEVICEFAMILYINFOENUM_DESKTOP_STR L"Windows.Desktop"
> +
> +NTSYSAPI VOID WINAPI RtlGetDeviceFamilyInfoEnum(ULONGLONG*, DWORD*, DWORD*);
> +NTSYSAPI VOID WINAPI RtlConvertDeviceFamilyInfoToString(DWORD*, DWORD*, const WCHAR*, const WCHAR*);
> +
> /* Threadpool things */
> typedef DWORD TP_VERSION,*PTP_VERSION;
>
> --
> 2.36.1
>
June 22, 2022
[PATCH v2] ntdll: Add RtlGetDeviceFamilyInfoEnum and RtlConvertDeviceFamilyInfoToString
by Kacper Raczy
APIs introduced in Windows 10 (NT10.0). Device form and family is fixed
to Desktop configuration. Unit tests included in dlls/ntdll/tests/version.c
Signed-off-by: Kacper Raczy <gfw.kra(a)gmail.com>
---
dlls/ntdll/ntdll.spec | 2 +
dlls/ntdll/rtl.c | 2 +-
dlls/ntdll/tests/Makefile.in | 3 +-
dlls/ntdll/tests/version.c | 71 ++++++++++++++++++++++++++++++++++++
dlls/ntdll/version.c | 48 +++++++++++++++++++++++-
include/winnt.h | 10 +++++
6 files changed, 133 insertions(+), 3 deletions(-)
create mode 100644 dlls/ntdll/tests/version.c
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index b1650ab4306..4539a9bd0ed 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -712,6 +712,8 @@
@ stdcall RtlGetCurrentProcessorNumberEx(ptr)
@ stdcall RtlGetCurrentTransaction()
@ stdcall RtlGetDaclSecurityDescriptor(ptr ptr ptr ptr)
+@ stdcall RtlGetDeviceFamilyInfoEnum(ptr ptr ptr)
+@ stdcall RtlConvertDeviceFamilyInfoToString(ptr ptr ptr ptr)
@ stdcall RtlGetElementGenericTable(ptr long)
# @ stub RtlGetElementGenericTableAvl
@ stdcall RtlGetEnabledExtendedFeatures(int64)
diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c
index 11067f44941..421cf377d32 100644
--- a/dlls/ntdll/rtl.c
+++ b/dlls/ntdll/rtl.c
@@ -2211,4 +2211,4 @@ char WINAPI RtlQueryProcessPlaceholderCompatibilityMode(void)
{
FIXME("stub\n");
return PHCM_APPLICATION_DEFAULT;
-}
+}
\ No newline at end of file
diff --git a/dlls/ntdll/tests/Makefile.in b/dlls/ntdll/tests/Makefile.in
index 90deb5865f8..e64b70b15e4 100644
--- a/dlls/ntdll/tests/Makefile.in
+++ b/dlls/ntdll/tests/Makefile.in
@@ -25,5 +25,6 @@ C_SRCS = \
thread.c \
threadpool.c \
time.c \
+ version.c \
virtual.c \
- wow64.c
+ wow64.c
\ No newline at end of file
diff --git a/dlls/ntdll/tests/version.c b/dlls/ntdll/tests/version.c
new file mode 100644
index 00000000000..6b2d86e3464
--- /dev/null
+++ b/dlls/ntdll/tests/version.c
@@ -0,0 +1,71 @@
+/*
+ * Unit test suite for Rtl* Version API functions
+ *
+ * Copyright 2022 Kacper Rączy
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "ntdll_test.h"
+#include "wine/test.h"
+
+static void test_RtlGetDeviceFamilyInfoEnum(void)
+{
+ DWORD family, form;
+ ULONGLONG uap;
+ RTL_OSVERSIONINFOEXW version;
+
+ RtlGetVersion(&version);
+ RtlGetDeviceFamilyInfoEnum(&uap, &family, &form);
+ ok( ((uap >> 48) & 0xffff) == version.dwMajorVersion,
+ "First 16-bit chunk of UAP does not match major system version %llx\n", uap );
+ ok( ((uap >> 32) & 0xffff) == version.dwMinorVersion,
+ "Second 16-bit chunk of UAP does not match minor system version %llx\n", uap );
+ ok( ((uap >> 16) & 0xffff) == version.dwBuildNumber,
+ "Third 16-bit chunk of UAP does not match build number %llx\n", uap );
+ ok( form == DEVICEFAMILYDEVICEFORM_DESKTOP,
+ "Device form does not match Desktop value: %lx\n", form );
+ ok( family == DEVICEFAMILYINFOENUM_DESKTOP,
+ "Device family does not match Windows.Desktop value: %lx\n", family );
+}
+
+static void test_RtlConvertDeviceFamilyInfoToString(void)
+{
+ DWORD family_bufsize = 0, form_bufsize = 0;
+ WCHAR *family, *form;
+
+ RtlConvertDeviceFamilyInfoToString(&family_bufsize, &form_bufsize, NULL, NULL);
+ ok( family_bufsize == sizeof(WCHAR) * 16, /* Windows.Desktop length */
+ "Device family bufsize does not match: %u\n", family_bufsize );
+ ok( form_bufsize == sizeof(WCHAR) * 8, /* Desktop length */
+ "Device family bufsize does not match: %u\n", form_bufsize );
+
+ family = (WCHAR*)malloc(family_bufsize);
+ form = (WCHAR*)malloc(form_bufsize);
+ RtlConvertDeviceFamilyInfoToString(&family_bufsize, &form_bufsize, family, form);
+ ok( wcscmp(family, L"Windows.Desktop") == 0,
+ "Device family string is not equal to Windows.Desktop: %ls", family );
+ ok( wcscmp(form, L"Desktop") == 0,
+ "Device form string is not equal to Desktop: %ls", form );
+
+ free(family);
+ free(form);
+}
+
+START_TEST(version)
+{
+ test_RtlGetDeviceFamilyInfoEnum();
+ test_RtlConvertDeviceFamilyInfoToString();
+}
\ No newline at end of file
diff --git a/dlls/ntdll/version.c b/dlls/ntdll/version.c
index 492c24cc636..e988a17311b 100644
--- a/dlls/ntdll/version.c
+++ b/dlls/ntdll/version.c
@@ -609,7 +609,6 @@ void WINAPI RtlGetNtVersionNumbers( LPDWORD major, LPDWORD minor, LPDWORD build
if (build) *build = (0xF0000000 | current_version->dwBuildNumber);
}
-
/******************************************************************************
* RtlGetNtProductType (NTDLL.@)
*/
@@ -760,6 +759,53 @@ NTSTATUS WINAPI RtlVerifyVersionInfo( const RTL_OSVERSIONINFOEXW *info,
return STATUS_SUCCESS;
}
+/*********************************************************************
+ * RtlGetDeviceFamilyInfoEnum (NTDLL.@)
+ *
+ * NOTES
+ * Introduced in Windows 10 (NT10.0)
+ */
+void WINAPI RtlGetDeviceFamilyInfoEnum( ULONGLONG *uap_info, DWORD *device_family, DWORD *device_form )
+{
+ if (device_form)
+ *device_form = DEVICEFAMILYDEVICEFORM_DESKTOP;
+ if (device_family)
+ *device_family = DEVICEFAMILYINFOENUM_DESKTOP;
+ if (!uap_info)
+ return;
+
+ /**
+ UAP info is 64 bit unsigned integer which contains four 16-bit chunks:
+ 1. os version major
+ 2. os version minor
+ 3. current build number
+ 4. UBR
+ */
+ *uap_info = 0;
+ *uap_info |= (((ULONGLONG)current_version->dwMajorVersion & 0xffff) << 48); /* os version major */
+ *uap_info |= (((ULONGLONG)current_version->dwMinorVersion & 0xffff) << 32); /* os version minor */
+ *uap_info |= (((ULONGLONG)current_version->dwBuildNumber & 0xffff) << 16); /* current build number */
+ /* UBR not available */
+}
+
+/*********************************************************************
+ * RtlConvertDeviceFamilyInfoToString (NTDLL.@)
+ *
+ * NOTES
+ * Introduced in Windows 10 (NT10.0)
+ */
+void WINAPI RtlConvertDeviceFamilyInfoToString( DWORD *device_family_bufsize, DWORD *device_form_bufsize,
+ const WCHAR *device_family, const WCHAR *device_form)
+{
+ DWORD device_family_len = (wcslen( DEVICEFAMILYINFOENUM_DESKTOP_STR ) + 1) * sizeof(WCHAR);
+ DWORD device_form_len = (wcslen( DEVICEFAMILYDEVICEFORM_DESKTOP_STR ) + 1) * sizeof(WCHAR);
+ if (*device_family_bufsize >= device_family_len)
+ wcscpy( device_family, DEVICEFAMILYINFOENUM_DESKTOP_STR );
+ if (*device_form_bufsize >= device_form_len)
+ wcscpy( device_form, DEVICEFAMILYDEVICEFORM_DESKTOP_STR );
+ *device_family_bufsize = device_family_len;
+ *device_form_bufsize = device_form_len;
+}
/******************************************************************************
* VerSetConditionMask (NTDLL.@)
diff --git a/include/winnt.h b/include/winnt.h
index 87c4b4da92d..eeb4e1cb494 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -6224,6 +6224,16 @@ typedef struct _SYSTEM_CPU_SET_INFORMATION
} DUMMYUNIONNAME;
} SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_CPU_SET_INFORMATION;
+/* Windows 10 Rtl apis */
+
+#define DEVICEFAMILYDEVICEFORM_DESKTOP 0x00000003
+#define DEVICEFAMILYINFOENUM_DESKTOP 0x00000003
+#define DEVICEFAMILYDEVICEFORM_DESKTOP_STR L"Desktop"
+#define DEVICEFAMILYINFOENUM_DESKTOP_STR L"Windows.Desktop"
+
+NTSYSAPI VOID WINAPI RtlGetDeviceFamilyInfoEnum(ULONGLONG*, DWORD*, DWORD*);
+NTSYSAPI VOID WINAPI RtlConvertDeviceFamilyInfoToString(DWORD*, DWORD*, const WCHAR*, const WCHAR*);
+
/* Threadpool things */
typedef DWORD TP_VERSION,*PTP_VERSION;
--
2.36.1
June 22, 2022
Re: [PATCH 0/6] MR265: kernelbase: Implement PrefetchVirtualMemory.
by Etaash Mathamsetty (@etaash.mathamsetty)
Etaash Mathamsetty (@etaash.mathamsetty) commented about dlls/ntdll/unix/virtual.c:
> }
>
>
> +static NTSTATUS prefetch_memory( HANDLE process, ULONG_PTR count,
> + PMEMORY_RANGE_ENTRY addresses, ULONG flags )
> +{
> + ULONG_PTR i;
> + PVOID base;
> + SIZE_T size;
> + static unsigned int once;
> +
> + if (!once++)
what exactly is this for?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/265#note_2521
June 22, 2022