ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
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
List overview
Download
Ros-diffs
January 2025
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
23 participants
278 discussions
Start a n
N
ew thread
[reactos] 01/01: [PSDK] Avoid CO_E_NOTINITIALIZED macro redefinition warning (#7649)
by Whindmar Saksit
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=357505e752eaefe8fa8b5…
commit 357505e752eaefe8fa8b534df0b3af566cfc7b13 Author: Whindmar Saksit <whindsaks(a)proton.me> AuthorDate: Tue Jan 21 19:15:09 2025 +0100 Commit: GitHub <noreply(a)github.com> CommitDate: Tue Jan 21 19:15:09 2025 +0100 [PSDK] Avoid CO_E_NOTINITIALIZED macro redefinition warning (#7649) Addendum to commit 0e88f0485c0c909f2aa42dbc84f00e282ef4008c --- sdk/include/psdk/ddraw.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/include/psdk/ddraw.h b/sdk/include/psdk/ddraw.h index 637afd9e280..a7d01b54363 100644 --- a/sdk/include/psdk/ddraw.h +++ b/sdk/include/psdk/ddraw.h @@ -8,7 +8,9 @@ #else #define IUnknown void #if !defined(NT_BUILD_ENVIRONMENT) && !defined(WINNT) - #define CO_E_NOTINITIALIZED 0x800401F0L + #ifndef CO_E_NOTINITIALIZED /* Avoid conflict warning with _HRESULT_TYPEDEF_(0x800401F0L) in winerror.h */ + #define CO_E_NOTINITIALIZED 0x800401F0L + #endif #endif #endif
2 weeks, 1 day
1
0
0
0
[reactos] 01/01: [RAPPS] Check Let's Encrypt issuer prefix (#7650)
by Whindmar Saksit
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c8b2c4c94d7830ffd9241…
commit c8b2c4c94d7830ffd924133dfa548e3fea7169b9 Author: Whindmar Saksit <whindsaks(a)proton.me> AuthorDate: Tue Jan 21 13:06:55 2025 +0100 Commit: GitHub <noreply(a)github.com> CommitDate: Tue Jan 21 13:06:55 2025 +0100 [RAPPS] Check Let's Encrypt issuer prefix (#7650) --- base/applications/rapps/loaddlg.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/base/applications/rapps/loaddlg.cpp b/base/applications/rapps/loaddlg.cpp index 7e926c3399f..c0ca9d135dc 100644 --- a/base/applications/rapps/loaddlg.cpp +++ b/base/applications/rapps/loaddlg.cpp @@ -52,10 +52,23 @@ #include "unattended.h" #ifdef USE_CERT_PINNING +#define CERT_ISSUER_INFO_PREFIX "US\r\nLet's Encrypt\r\nR" #define CERT_ISSUER_INFO_OLD "US\r\nLet's Encrypt\r\nR3" #define CERT_ISSUER_INFO_NEW "US\r\nLet's Encrypt\r\nR11" #define CERT_SUBJECT_INFO "
rapps.reactos.org
" + +static bool +IsTrustedPinnedCert(LPCSTR Subject, LPCSTR Issuer) +{ + if (strcmp(Subject, CERT_SUBJECT_INFO)) + return false; +#ifdef CERT_ISSUER_INFO_PREFIX + return Issuer == StrStrA(Issuer, CERT_ISSUER_INFO_PREFIX); +#else + return !strcmp(Issuer, CERT_ISSUER_INFO_OLD) || !strcmp(Issuer, CERT_ISSUER_INFO_NEW); #endif +} +#endif // USE_CERT_PINNING enum DownloadType { @@ -917,14 +930,10 @@ CDownloadManager::ThreadFunc(LPVOID param) szMsgText.LoadStringW(IDS_UNABLE_TO_QUERY_CERT); bAskQuestion = true; } - else + else if (!IsTrustedPinnedCert(subjectName, issuerName)) { - if (strcmp(subjectName, CERT_SUBJECT_INFO) || - (strcmp(issuerName, CERT_ISSUER_INFO_OLD) && strcmp(issuerName, CERT_ISSUER_INFO_NEW))) - { - szMsgText.Format(IDS_MISMATCH_CERT_INFO, (char *)subjectName, (const char *)issuerName); - bAskQuestion = true; - } + szMsgText.Format(IDS_MISMATCH_CERT_INFO, (LPCSTR)subjectName, (LPCSTR)issuerName); + bAskQuestion = true; } if (bAskQuestion)
2 weeks, 1 day
1
0
0
0
[reactos] 01/01: [SHELL32] SHELL_FindExecutable: Fix last regression from PR#7588 (#7643)
by Doug Lyons
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=690643fc77728ca84dec9…
commit 690643fc77728ca84dec9d1271a1a02fc1881792 Author: Doug Lyons <douglyons(a)douglyons.com> AuthorDate: Mon Jan 20 19:10:04 2025 -0600 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Jan 20 19:10:04 2025 -0600 [SHELL32] SHELL_FindExecutable: Fix last regression from PR#7588 (#7643) Co-authored-by: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org> Co-authored-by: Stanislav Motylkov <x86corez(a)gmail.com> --- dll/win32/shell32/shlexec.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dll/win32/shell32/shlexec.cpp b/dll/win32/shell32/shlexec.cpp index b6bb1f3b224..371f6ad44eb 100644 --- a/dll/win32/shell32/shlexec.cpp +++ b/dll/win32/shell32/shlexec.cpp @@ -794,6 +794,14 @@ static UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpVerb, TRACE("PathResolveW returned non-zero\n"); lpFile = xlpFile; PathRemoveBlanksW(xlpFile); + + /* Clear any trailing periods */ + SIZE_T i = wcslen(xlpFile); + while (i > 0 && xlpFile[i - 1] == '.') + { + xlpFile[--i] = '\0'; + } + lstrcpyW(lpResult, xlpFile); /* The file was found in lpPath or one of the directories in the system-wide search path */ }
2 weeks, 2 days
1
0
0
0
[reactos] 01/01: [EXPLORER] Use STDMETHODIMP and override (#7645)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=853b8ebd029154a2278a9…
commit 853b8ebd029154a2278a959a3a0dbcf4ca2c3a2c Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Tue Jan 21 10:03:52 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Tue Jan 21 10:03:52 2025 +0900 [EXPLORER] Use STDMETHODIMP and override (#7645) Follow the standard way. JIRA issue: CORE-19469 - Use STDMETHODIMP and override keyword instead of virtual HRESULT STDMETHODCALLTYPE. - Delete CTaskBand::ProcessMessage and CTaskBand::ContainsWindow methods. I think they are useless. --- base/shell/explorer/startctxmnu.cpp | 29 ++++----- base/shell/explorer/startmnusite.cpp | 61 ++++++++++-------- base/shell/explorer/syspager.cpp | 7 ++- base/shell/explorer/taskband.cpp | 116 ++++++++++++++++++----------------- base/shell/explorer/taskswnd.cpp | 8 ++- base/shell/explorer/tbsite.cpp | 71 ++++++++++++--------- base/shell/explorer/trayclock.cpp | 7 ++- base/shell/explorer/trayntfy.cpp | 8 ++- base/shell/explorer/traywnd.cpp | 43 ++++++++----- 9 files changed, 201 insertions(+), 149 deletions(-) diff --git a/base/shell/explorer/startctxmnu.cpp b/base/shell/explorer/startctxmnu.cpp index 83d176eb590..412819e7a3b 100644 --- a/base/shell/explorer/startctxmnu.cpp +++ b/base/shell/explorer/startctxmnu.cpp @@ -145,12 +145,12 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE - QueryContextMenu(HMENU hPopup, - UINT indexMenu, - UINT idCmdFirst, - UINT idCmdLast, - UINT uFlags) + STDMETHODIMP + QueryContextMenu(HMENU hPopup, + UINT indexMenu, + UINT idCmdFirst, + UINT idCmdLast, + UINT uFlags) override { LPITEMIDLIST pidlStart; CComPtr<IShellFolder> psfDesktop; @@ -189,8 +189,8 @@ public: return hRet; } - virtual HRESULT STDMETHODCALLTYPE - InvokeCommand(LPCMINVOKECOMMANDINFO lpici) + STDMETHODIMP + InvokeCommand(LPCMINVOKECOMMANDINFO lpici) override { UINT uiCmdId = PtrToUlong(lpici->lpVerb); if (!IsShellCmdId(uiCmdId)) @@ -229,12 +229,13 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE - GetCommandString(UINT_PTR idCmd, - UINT uType, - UINT *pwReserved, - LPSTR pszName, - UINT cchMax) + STDMETHODIMP + GetCommandString( + UINT_PTR idCmd, + UINT uType, + UINT *pwReserved, + LPSTR pszName, + UINT cchMax) override { if (!IsShellCmdId(idCmd) && m_Inner) return m_Inner->GetCommandString(idCmd, uType, pwReserved, pszName, cchMax); diff --git a/base/shell/explorer/startmnusite.cpp b/base/shell/explorer/startmnusite.cpp index 872a24e335e..ceed50d37bd 100644 --- a/base/shell/explorer/startmnusite.cpp +++ b/base/shell/explorer/startmnusite.cpp @@ -37,12 +37,13 @@ public: virtual ~CStartMenuSite() {} - /*******************************************************************/ + // *** IServiceProvider methods *** - virtual HRESULT STDMETHODCALLTYPE QueryService( + STDMETHODIMP + QueryService( IN REFGUID guidService, IN REFIID riid, - OUT PVOID *ppvObject) + OUT PVOID *ppvObject) override { if (IsEqualGUID(guidService, SID_SMenuPopup)) { @@ -52,10 +53,10 @@ public: return E_NOINTERFACE; } - /*******************************************************************/ + // *** IOleWindow methods *** - virtual HRESULT STDMETHODCALLTYPE GetWindow( - OUT HWND *phwnd) + STDMETHODIMP + GetWindow(OUT HWND *phwnd) override { TRACE("ITrayPriv::GetWindow\n"); @@ -66,16 +67,17 @@ public: return E_FAIL; } - virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp( - IN BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(IN BOOL fEnterMode) override { TRACE("ITrayPriv::ContextSensitiveHelp\n"); return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE Execute( + STDMETHODIMP + Execute( IN IShellFolder *pShellFolder, - IN LPCITEMIDLIST pidl) + IN LPCITEMIDLIST pidl) override { HRESULT ret = S_FALSE; @@ -86,11 +88,12 @@ public: return ret; } - virtual HRESULT STDMETHODCALLTYPE Unknown( + STDMETHODIMP + Unknown( IN PVOID Unknown1, IN PVOID Unknown2, IN PVOID Unknown3, - IN PVOID Unknown4) + IN PVOID Unknown4) override { TRACE("ITrayPriv::Unknown(0x%p,0x%p,0x%p,0x%p)\n", Unknown1, Unknown2, Unknown3, Unknown4); return E_NOTIMPL; @@ -112,8 +115,8 @@ public: return FALSE; } - virtual HRESULT STDMETHODCALLTYPE AppendMenu( - OUT HMENU* phMenu) + STDMETHODIMP + AppendMenu(OUT HMENU* phMenu) override { HMENU hMenu, hSettingsMenu; DWORD dwLogoff; @@ -279,53 +282,63 @@ public: /*******************************************************************/ - virtual HRESULT STDMETHODCALLTYPE QueryStatus( + STDMETHODIMP + QueryStatus( IN const GUID *pguidCmdGroup OPTIONAL, IN ULONG cCmds, IN OUT OLECMD *prgCmds, - IN OUT OLECMDTEXT *pCmdText OPTIONAL) + IN OUT OLECMDTEXT *pCmdText OPTIONAL) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE Exec( + STDMETHODIMP + Exec( IN const GUID *pguidCmdGroup OPTIONAL, IN DWORD nCmdID, IN DWORD nCmdExecOpt, IN VARIANTARG *pvaIn OPTIONAL, - IN VARIANTARG *pvaOut OPTIONAL) + IN VARIANTARG *pvaOut OPTIONAL) override { return E_NOTIMPL; } /*******************************************************************/ - virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient) + STDMETHODIMP + SetClient(IUnknown *punkClient) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown ** ppunkClient) + STDMETHODIMP + GetClient(IUnknown ** ppunkClient) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(RECT *prc) + STDMETHODIMP + OnPosRectChangeDB(RECT *prc) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE Popup(POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags) + // *** IMenuPopup methods *** + + STDMETHODIMP + Popup(POINTL *ppt, RECTL *prcExclude, MP_POPUPFLAGS dwFlags) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE OnSelect(DWORD dwSelectType) + STDMETHODIMP + OnSelect(DWORD dwSelectType) override { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE SetSubMenu(IMenuPopup *pmp, BOOL fSet) + STDMETHODIMP + SetSubMenu(IMenuPopup *pmp, BOOL fSet) override { if (!fSet) { diff --git a/base/shell/explorer/syspager.cpp b/base/shell/explorer/syspager.cpp index 22063a18bc6..6706605bdb3 100644 --- a/base/shell/explorer/syspager.cpp +++ b/base/shell/explorer/syspager.cpp @@ -217,8 +217,10 @@ public: LRESULT OnGetMinimumSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); public: + // *** IOleWindow methods *** - HRESULT WINAPI GetWindow(HWND* phwnd) + STDMETHODIMP + GetWindow(HWND* phwnd) override { if (!phwnd) return E_INVALIDARG; @@ -226,7 +228,8 @@ public: return S_OK; } - HRESULT WINAPI ContextSensitiveHelp(BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; } diff --git a/base/shell/explorer/taskband.cpp b/base/shell/explorer/taskband.cpp index 7d8d2d213ce..48b4be6d587 100644 --- a/base/shell/explorer/taskband.cpp +++ b/base/shell/explorer/taskband.cpp @@ -52,7 +52,8 @@ public: /*****************************************************************************/ - virtual HRESULT STDMETHODCALLTYPE GetWindow(OUT HWND *phwnd) + STDMETHODIMP + GetWindow(OUT HWND *phwnd) override { if (!m_hWnd) return E_FAIL; @@ -62,40 +63,42 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp( - IN BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(IN BOOL fEnterMode) override { /* FIXME: Implement */ return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE ShowDW( - IN BOOL bShow) + STDMETHODIMP + ShowDW(IN BOOL bShow) override { /* We don't do anything... */ return S_OK; } - virtual HRESULT STDMETHODCALLTYPE CloseDW( - IN DWORD dwReserved) + STDMETHODIMP + CloseDW(IN DWORD dwReserved) override { /* We don't do anything... */ return S_OK; } - virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW( + STDMETHODIMP + ResizeBorderDW( LPCRECT prcBorder, IUnknown *punkToolbarSite, - BOOL fReserved) + BOOL fReserved) override { /* No need to implement this method */ return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE GetBandInfo( + STDMETHODIMP + GetBandInfo( IN DWORD dwBandID, IN DWORD dwViewMode, - IN OUT DESKBANDINFO *pdbi) + IN OUT DESKBANDINFO *pdbi) override { TRACE("CTaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, m_hWnd); @@ -151,13 +154,25 @@ public: /*****************************************************************************/ // *** IOleCommandTarget methods *** - virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText) + + STDMETHODIMP + QueryStatus( + const GUID *pguidCmdGroup, + ULONG cCmds, + OLECMD prgCmds [], + OLECMDTEXT *pCmdText) override { UNIMPLEMENTED; return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) + STDMETHODIMP + Exec( + const GUID *pguidCmdGroup, + DWORD nCmdID, + DWORD nCmdexecopt, + VARIANT *pvaIn, + VARIANT *pvaOut) override { if (IsEqualIID(*pguidCmdGroup, IID_IBandSite)) { @@ -175,22 +190,22 @@ public: /*****************************************************************************/ - virtual HRESULT STDMETHODCALLTYPE SetClient( - IN IUnknown *punkClient) + STDMETHODIMP + SetClient(IN IUnknown *punkClient) override { TRACE("IDeskBar::SetClient(0x%p)\n", punkClient); return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE GetClient( - OUT IUnknown **ppunkClient) + STDMETHODIMP + GetClient(OUT IUnknown **ppunkClient) override { TRACE("IDeskBar::GetClient(0x%p)\n", ppunkClient); return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB( - IN RECT *prc) + STDMETHODIMP + OnPosRectChangeDB(IN RECT *prc) override { TRACE("IDeskBar::OnPosRectChangeDB(0x%p=(%d,%d,%d,%d))\n", prc, prc->left, prc->top, prc->right, prc->bottom); if (prc->bottom - prc->top == 0) @@ -201,8 +216,8 @@ public: /*****************************************************************************/ - virtual HRESULT STDMETHODCALLTYPE GetClassID( - OUT CLSID *pClassID) + STDMETHODIMP + GetClassID(OUT CLSID *pClassID) override { TRACE("CTaskBand::GetClassID(0x%p)\n", pClassID); /* We're going to return the (internal!) CLSID of the task band interface */ @@ -210,30 +225,32 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE IsDirty() + STDMETHODIMP + IsDirty() override { /* The object hasn't changed since the last save! */ return S_FALSE; } - virtual HRESULT STDMETHODCALLTYPE Load( - IN IStream *pStm) + STDMETHODIMP + Load(IN IStream *pStm) override { TRACE("CTaskBand::Load called\n"); /* Nothing to do */ return S_OK; } - virtual HRESULT STDMETHODCALLTYPE Save( + STDMETHODIMP + Save( IN IStream *pStm, - IN BOOL fClearDirty) + IN BOOL fClearDirty) override { /* Nothing to do */ return S_OK; } - virtual HRESULT STDMETHODCALLTYPE GetSizeMax( - OUT ULARGE_INTEGER *pcbSize) + STDMETHODIMP + GetSizeMax(OUT ULARGE_INTEGER *pcbSize) override { TRACE("CTaskBand::GetSizeMax called\n"); /* We don't need any space for the task band */ @@ -243,7 +260,8 @@ public: /*****************************************************************************/ - virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite) + STDMETHODIMP + SetSite(IUnknown *pUnkSite) override { HRESULT hRet; HWND hwndSite; @@ -269,9 +287,10 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE GetSite( + STDMETHODIMP + GetSite( IN REFIID riid, - OUT VOID **ppvSite) + OUT VOID **ppvSite) override { TRACE("CTaskBand::GetSite(0x%p,0x%p)\n", riid, ppvSite); @@ -286,37 +305,20 @@ public: /*****************************************************************************/ - virtual HRESULT STDMETHODCALLTYPE ProcessMessage( - IN HWND hWnd, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam, - OUT LRESULT *plrResult) - { - TRACE("CTaskBand: IWinEventHandler::ProcessMessage(0x%p, 0x%x, 0x%p, 0x%p, 0x%p)\n", hWnd, uMsg, wParam, lParam, plrResult); - return E_NOTIMPL; - } - - virtual HRESULT STDMETHODCALLTYPE ContainsWindow( - IN HWND hWnd) - { - if (hWnd == m_hWnd || - IsChild(m_hWnd, hWnd)) - { - TRACE("CTaskBand::ContainsWindow(0x%p) returns S_OK\n", hWnd); - return S_OK; - } - - return S_FALSE; - } - - virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) + STDMETHODIMP + OnWinEvent( + HWND hWnd, + UINT uMsg, + WPARAM wParam, + LPARAM lParam, + LRESULT *theResult) override { //UNIMPLEMENTED; return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd) + STDMETHODIMP + IsWindowOwner(HWND hWnd) override { return (hWnd == m_hWnd) ? S_OK : S_FALSE; } diff --git a/base/shell/explorer/taskswnd.cpp b/base/shell/explorer/taskswnd.cpp index 9c800b29511..c852e1f7cb2 100644 --- a/base/shell/explorer/taskswnd.cpp +++ b/base/shell/explorer/taskswnd.cpp @@ -1979,7 +1979,10 @@ public: return S_OK; } - HRESULT WINAPI GetWindow(HWND* phwnd) + // *** IOleWindow methods *** + + STDMETHODIMP + GetWindow(HWND* phwnd) override { if (!phwnd) return E_INVALIDARG; @@ -1987,7 +1990,8 @@ public: return S_OK; } - HRESULT WINAPI ContextSensitiveHelp(BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; } diff --git a/base/shell/explorer/tbsite.cpp b/base/shell/explorer/tbsite.cpp index a842509d5da..2a00d35a71a 100644 --- a/base/shell/explorer/tbsite.cpp +++ b/base/shell/explorer/tbsite.cpp @@ -56,13 +56,14 @@ class CTrayBandSite : }; public: - - virtual ULONG STDMETHODCALLTYPE AddRef() + STDMETHODIMP_(ULONG) + AddRef() override { return InterlockedIncrement(&m_RefCount); } - virtual ULONG STDMETHODCALLTYPE Release() + STDMETHODIMP_(ULONG) + Release() override { ULONG Ret = InterlockedDecrement(&m_RefCount); @@ -72,7 +73,8 @@ public: return Ret; } - virtual HRESULT STDMETHODCALLTYPE QueryInterface(IN REFIID riid, OUT LPVOID *ppvObj) + STDMETHODIMP + QueryInterface(IN REFIID riid, OUT LPVOID *ppvObj) override { if (ppvObj == NULL) return E_POINTER; @@ -115,10 +117,11 @@ public: virtual ~CTrayBandSite() { } - virtual HRESULT STDMETHODCALLTYPE OnLoad( + STDMETHODIMP + OnLoad( IN OUT IStream *pStm, IN REFIID riid, - OUT PVOID *pvObj) + OUT PVOID *pvObj) override { LARGE_INTEGER liPosZero; ULARGE_INTEGER liCurrent; @@ -187,9 +190,10 @@ public: return hRet; } - virtual HRESULT STDMETHODCALLTYPE OnSave( + STDMETHODIMP + OnSave( IN OUT IUnknown *pUnk, - IN OUT IStream *pStm) + IN OUT IStream *pStm) override { /* NOTE: Callback routine called by the shell while saving the task band stream. We use it to intercept the default behavior when the task @@ -199,17 +203,19 @@ public: return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE IsTaskBand(IN IUnknown *punk) + STDMETHODIMP + IsTaskBand(IN IUnknown *punk) override { return IsSameObject(m_BandSite, punk); } - virtual HRESULT STDMETHODCALLTYPE ProcessMessage( + STDMETHODIMP + ProcessMessage( IN HWND hWnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam, - OUT LRESULT *plResult) + OUT LRESULT *plResult) override { HRESULT hRet; @@ -277,13 +283,14 @@ public: return hRet; } - virtual HRESULT STDMETHODCALLTYPE AddContextMenus( + STDMETHODIMP + AddContextMenus( IN HMENU hmenu, IN UINT indexMenu, IN UINT idCmdFirst, IN UINT idCmdLast, IN UINT uFlags, - OUT IContextMenu **ppcm) + OUT IContextMenu **ppcm) override { HRESULT hRet; @@ -313,7 +320,8 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE Lock(IN BOOL bLock) + STDMETHODIMP + Lock(IN BOOL bLock) override { BOOL bPrevLocked = Locked; BANDSITEINFO bsi; @@ -342,7 +350,8 @@ public: /*******************************************************************/ - virtual HRESULT STDMETHODCALLTYPE AddBand(IN IUnknown *punk) + STDMETHODIMP + AddBand(IN IUnknown *punk) override { /* Send the DBID_DELAYINIT command to initialize the band to be added */ /* FIXME: Should be delayed */ @@ -367,19 +376,21 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE EnumBands( + STDMETHODIMP + EnumBands( IN UINT uBand, - OUT DWORD *pdwBandID) + OUT DWORD *pdwBandID) override { return m_BandSite->EnumBands(uBand, pdwBandID); } - virtual HRESULT STDMETHODCALLTYPE QueryBand( + STDMETHODIMP + QueryBand( IN DWORD dwBandID, OUT IDeskBand **ppstb, OUT DWORD *pdwState, OUT LPWSTR pszName, - IN int cchName) + IN int cchName) override { HRESULT hRet; IDeskBand *pstb = NULL; @@ -415,36 +426,38 @@ public: return hRet; } - virtual HRESULT STDMETHODCALLTYPE SetBandState( + STDMETHODIMP + SetBandState( IN DWORD dwBandID, IN DWORD dwMask, - IN DWORD dwState) + IN DWORD dwState) override { return m_BandSite->SetBandState(dwBandID, dwMask, dwState); } - virtual HRESULT STDMETHODCALLTYPE RemoveBand( - IN DWORD dwBandID) + STDMETHODIMP + RemoveBand(IN DWORD dwBandID) override { return m_BandSite->RemoveBand(dwBandID); } - virtual HRESULT STDMETHODCALLTYPE GetBandObject( + STDMETHODIMP + GetBandObject( IN DWORD dwBandID, IN REFIID riid, - OUT VOID **ppv) + OUT VOID **ppv) override { return m_BandSite->GetBandObject(dwBandID, riid, ppv); } - virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo( - IN const BANDSITEINFO *pbsinfo) + STDMETHODIMP + SetBandSiteInfo(IN const BANDSITEINFO *pbsinfo) override { return m_BandSite->SetBandSiteInfo(pbsinfo); } - virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo( - IN OUT BANDSITEINFO *pbsinfo) + STDMETHODIMP + GetBandSiteInfo(IN OUT BANDSITEINFO *pbsinfo) override { return m_BandSite->GetBandSiteInfo(pbsinfo); } diff --git a/base/shell/explorer/trayclock.cpp b/base/shell/explorer/trayclock.cpp index 4411d34d543..dd8224091ed 100644 --- a/base/shell/explorer/trayclock.cpp +++ b/base/shell/explorer/trayclock.cpp @@ -104,8 +104,10 @@ private: VOID PaintLine(IN HDC hDC, IN OUT RECT *rcClient, IN UINT LineNumber, IN UINT szLinesIndex); public: + // *** IOleWindow methods *** - HRESULT WINAPI GetWindow(HWND* phwnd) + STDMETHODIMP + GetWindow(HWND* phwnd) override { if (!phwnd) return E_INVALIDARG; @@ -113,7 +115,8 @@ public: return S_OK; } - HRESULT WINAPI ContextSensitiveHelp(BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; } diff --git a/base/shell/explorer/trayntfy.cpp b/base/shell/explorer/trayntfy.cpp index ed40b9a5082..1fad7c39cf9 100644 --- a/base/shell/explorer/trayntfy.cpp +++ b/base/shell/explorer/trayntfy.cpp @@ -496,7 +496,10 @@ public: return GetParent().SendMessage(WM_NOTIFY, 0, (LPARAM)hdr); } - HRESULT WINAPI GetWindow(HWND* phwnd) + // *** IOleWindow methods *** + + STDMETHODIMP + GetWindow(HWND* phwnd) override { if (!phwnd) return E_INVALIDARG; @@ -504,7 +507,8 @@ public: return S_OK; } - HRESULT WINAPI ContextSensitiveHelp(BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; } diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index ed2acdbfb54..f853609077f 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -3490,21 +3490,24 @@ HandleTrayContextMenu: * with it (especially positioning of desktop icons) */ - virtual ULONG STDMETHODCALLTYPE GetState() + STDMETHODIMP_(ULONG) + GetState() override { /* FIXME: Return ABS_ flags? */ TRACE("IShellDesktopTray::GetState() unimplemented!\n"); return 0; } - virtual HRESULT STDMETHODCALLTYPE GetTrayWindow(OUT HWND *phWndTray) + STDMETHODIMP + GetTrayWindow(OUT HWND *phWndTray) override { TRACE("IShellDesktopTray::GetTrayWindow(0x%p)\n", phWndTray); *phWndTray = m_hWnd; return S_OK; } - virtual HRESULT STDMETHODCALLTYPE RegisterDesktopWindow(IN HWND hWndDesktop) + STDMETHODIMP + RegisterDesktopWindow(IN HWND hWndDesktop) override { TRACE("IShellDesktopTray::RegisterDesktopWindow(0x%p)\n", hWndDesktop); @@ -3512,7 +3515,8 @@ HandleTrayContextMenu: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE Unknown(IN DWORD dwUnknown1, IN DWORD dwUnknown2) + STDMETHODIMP + Unknown(IN DWORD dwUnknown1, IN DWORD dwUnknown2) override { TRACE("IShellDesktopTray::Unknown(%u,%u) unimplemented!\n", dwUnknown1, dwUnknown2); return S_OK; @@ -3524,7 +3528,10 @@ HandleTrayContextMenu: return S_OK; } - HRESULT WINAPI GetWindow(HWND* phwnd) + // *** IOleWindow methods *** + + STDMETHODIMP + GetWindow(HWND* phwnd) override { if (!phwnd) return E_INVALIDARG; @@ -3532,7 +3539,8 @@ HandleTrayContextMenu: return S_OK; } - HRESULT WINAPI ContextSensitiveHelp(BOOL fEnterMode) + STDMETHODIMP + ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; } @@ -3572,12 +3580,12 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE - QueryContextMenu(HMENU hPopup, - UINT indexMenu, - UINT idCmdFirst, - UINT idCmdLast, - UINT uFlags) + STDMETHODIMP + QueryContextMenu(HMENU hPopup, + UINT indexMenu, + UINT idCmdFirst, + UINT idCmdLast, + UINT uFlags) override { HMENU hMenuBase; @@ -3632,8 +3640,8 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE - InvokeCommand(LPCMINVOKECOMMANDINFO lpici) + STDMETHODIMP + InvokeCommand(LPCMINVOKECOMMANDINFO lpici) override { UINT uiCmdId = PtrToUlong(lpici->lpVerb); if (uiCmdId != 0) @@ -3662,12 +3670,13 @@ public: return S_OK; } - virtual HRESULT STDMETHODCALLTYPE - GetCommandString(UINT_PTR idCmd, + STDMETHODIMP + GetCommandString( + UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, - UINT cchMax) + UINT cchMax) override { return E_NOTIMPL; }
2 weeks, 2 days
1
0
0
0
[reactos] 01/01: [EXPLORER] Support Unicode on Start Button InvokeCommand (#7644)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=56988ffbf8fff9e7d2013…
commit 56988ffbf8fff9e7d20130c52ddf7c9e972df658 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Jan 20 22:26:33 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Jan 20 22:26:33 2025 +0900 [EXPLORER] Support Unicode on Start Button InvokeCommand (#7644) Support Unicode on Start Button context menu for international text support. JIRA issue: N/A - Support Unicode in CStartMenuBtnCtxMenu::InvokeCommand method by using CMINVOKECOMMANDINFOEX structure. --- base/shell/explorer/startctxmnu.cpp | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/base/shell/explorer/startctxmnu.cpp b/base/shell/explorer/startctxmnu.cpp index ccee6ef6a7e..83d176eb590 100644 --- a/base/shell/explorer/startctxmnu.cpp +++ b/base/shell/explorer/startctxmnu.cpp @@ -193,27 +193,37 @@ public: InvokeCommand(LPCMINVOKECOMMANDINFO lpici) { UINT uiCmdId = PtrToUlong(lpici->lpVerb); - if (!IsShellCmdId((UINT_PTR)lpici->lpVerb)) + if (!IsShellCmdId(uiCmdId)) { - CMINVOKECOMMANDINFO cmici = { 0 }; - CHAR szDir[MAX_PATH]; + CMINVOKECOMMANDINFOEX cmici = { sizeof(cmici) }; /* Setup and invoke the shell command */ - cmici.cbSize = sizeof(cmici); cmici.hwnd = m_Owner; + cmici.nShow = SW_NORMAL; + cmici.fMask = CMIC_MASK_UNICODE; + WCHAR szVerbW[MAX_PATH]; if (IS_INTRESOURCE(lpici->lpVerb)) + { cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - INNERIDOFFSET); + cmici.lpVerbW = MAKEINTRESOURCEW(uiCmdId - INNERIDOFFSET); + } else + { cmici.lpVerb = lpici->lpVerb; - cmici.nShow = SW_NORMAL; + SHAnsiToUnicode(lpici->lpVerb, szVerbW, _countof(szVerbW)); + cmici.lpVerbW = szVerbW; + } - /* FIXME: Support Unicode!!! */ - if (SHGetPathFromIDListA(m_FolderPidl, szDir)) + CHAR szDirA[MAX_PATH]; + WCHAR szDirW[MAX_PATH]; + if (SHGetPathFromIDListW(m_FolderPidl, szDirW)) { - cmici.lpDirectory = szDir; + SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA)); + cmici.lpDirectory = szDirA; + cmici.lpDirectoryW = szDirW; } - return m_Inner->InvokeCommand(&cmici); + return m_Inner->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmici); } m_TrayWnd->ExecContextMenuCmd(uiCmdId); return S_OK;
2 weeks, 2 days
1
0
0
0
[reactos] 01/01: [FREETYPE][NTGDI] Use Face->num_faces instead of ttc_header.count (#7646)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d4f283b67b36511fd894f…
commit d4f283b67b36511fd894f6cc1a1d7a5c2ec53360 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Jan 20 22:09:16 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Jan 20 22:09:16 2025 +0900 [FREETYPE][NTGDI] Use Face->num_faces instead of ttc_header.count (#7646) Supporting raster fonts. Using num_faces is the generic way. JIRA issue: CORE-16165 - Use FT_FaceRec.num_faces instead of TT_Face.ttc_header.count in counting the font faces in IntGdiLoadFontsFromMemory function. --- win32ss/gdi/ntgdi/freetype.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/win32ss/gdi/ntgdi/freetype.c b/win32ss/gdi/ntgdi/freetype.c index 86e3c7a4106..86efc2e2c30 100644 --- a/win32ss/gdi/ntgdi/freetype.c +++ b/win32ss/gdi/ntgdi/freetype.c @@ -1986,17 +1986,10 @@ IntGdiLoadFontsFromMemory(PGDI_LOAD_FONT pLoadFont, if (FontIndex == -1) { - if (FT_IS_SFNT(Face)) + FT_Long iFace, num_faces = Face->num_faces; + for (iFace = 1; iFace < num_faces; ++iFace) { - TT_Face TrueType = (TT_Face)Face; - if (TrueType->ttc_header.count > 1) - { - FT_Long i; - for (i = 1; i < TrueType->ttc_header.count; ++i) - { - FaceCount += IntGdiLoadFontsFromMemory(pLoadFont, NULL, i, -1); - } - } + FaceCount += IntGdiLoadFontsFromMemory(pLoadFont, NULL, iFace, -1); } FontIndex = 0; }
2 weeks, 2 days
1
0
0
0
[reactos] 01/01: [FREELDR] Fix wrong segment register at `lgdt` instruction in amd64.S
by Daniel Victor
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d72864de9558928ecaefc…
commit d72864de9558928ecaefc9acf4ea925c385e6836 Author: Daniel Victor <ilauncherdeveloper(a)gmail.com> AuthorDate: Wed Dec 11 19:35:57 2024 -0300 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Mon Jan 20 08:34:44 2025 +0200 [FREELDR] Fix wrong segment register at `lgdt` instruction in amd64.S --- boot/freeldr/freeldr/arch/realmode/amd64.S | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/boot/freeldr/freeldr/arch/realmode/amd64.S b/boot/freeldr/freeldr/arch/realmode/amd64.S index cfd6a396cdb..2c4f19b6c6b 100644 --- a/boot/freeldr/freeldr/arch/realmode/amd64.S +++ b/boot/freeldr/freeldr/arch/realmode/amd64.S @@ -67,11 +67,7 @@ Msg_LongModeSupported: call writestr /* Load the GDT */ -#ifdef _USE_ML - lgdt fword ptr [gdtptr] -#else - lgdt cs:[gdtptr] -#endif + lgdt lXdtPrefix ds:[gdtptr] /* Build the startup page tables */ call BuildPageTables
2 weeks, 3 days
1
0
0
0
[reactos] 01/01: [SHELL32][SDK] Follow-up of #7622; LPWSTR to PWSTR etc.
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2186ce3d580bf66449106…
commit 2186ce3d580bf664491060ded28e697d1f8c17e8 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Jan 20 10:12:35 2025 +0900 Commit: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> CommitDate: Mon Jan 20 10:12:35 2025 +0900 [SHELL32][SDK] Follow-up of #7622; LPWSTR to PWSTR etc. And LPCWSTR to PCWSTR. CORE-19278 --- dll/win32/shell32/utils.cpp | 4 ++-- sdk/include/psdk/shellapi.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dll/win32/shell32/utils.cpp b/dll/win32/shell32/utils.cpp index 4e0949eb2bb..8214a9bb10c 100644 --- a/dll/win32/shell32/utils.cpp +++ b/dll/win32/shell32/utils.cpp @@ -926,10 +926,10 @@ EXTERN_C HRESULT WINAPI SHGetUnreadMailCountW( _In_opt_ HKEY hKeyUser, - _In_opt_ LPCWSTR pszMailAddress, + _In_opt_ PCWSTR pszMailAddress, _Out_opt_ PDWORD pdwCount, _Inout_opt_ PFILETIME pFileTime, - _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, + _Out_writes_opt_(cchShellExecuteCommand) PWSTR pszShellExecuteCommand, _In_ INT cchShellExecuteCommand) { LSTATUS error; diff --git a/sdk/include/psdk/shellapi.h b/sdk/include/psdk/shellapi.h index f343928aa62..fa94826ade4 100644 --- a/sdk/include/psdk/shellapi.h +++ b/sdk/include/psdk/shellapi.h @@ -662,10 +662,10 @@ SHEnumerateUnreadMailAccountsW( HRESULT WINAPI SHGetUnreadMailCountW( _In_opt_ HKEY hKeyUser, - _In_opt_ LPCWSTR pszMailAddress, + _In_opt_ PCWSTR pszMailAddress, _Out_opt_ PDWORD pdwCount, _Inout_opt_ PFILETIME pFileTime, - _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, + _Out_writes_opt_(cchShellExecuteCommand) PWSTR pszShellExecuteCommand, _In_ INT cchShellExecuteCommand); #ifdef UNICODE
2 weeks, 3 days
1
0
0
0
[reactos] 01/01: [SHELL32][SHELL32_APITEST][SDK] Implement SHGetUnreadMailCountW (#7622)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=84607161b4701bc7eb89e…
commit 84607161b4701bc7eb89e443eff6c6f484247184 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Jan 20 09:51:27 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Jan 20 09:51:27 2025 +0900 [SHELL32][SHELL32_APITEST][SDK] Implement SHGetUnreadMailCountW (#7622) Implementing missing features... JIRA issue: CORE-19278 - Modify shell32.spec. - Move function definition from stubs.cpp into utils.cpp. - Add SHELL_ReadSingleUnreadMailCount helper function. - Add prototype to <shellapi.h>. --- dll/win32/shell32/shell32.spec | 2 +- dll/win32/shell32/stubs.cpp | 16 --- dll/win32/shell32/utils.cpp | 117 +++++++++++++++++++++ modules/rostests/apitests/shell32/CMakeLists.txt | 1 + .../apitests/shell32/SHGetUnreadMailCountW.cpp | 81 ++++++++++++++ modules/rostests/apitests/shell32/testlist.c | 2 + sdk/include/psdk/shellapi.h | 9 ++ 7 files changed, 211 insertions(+), 17 deletions(-) diff --git a/dll/win32/shell32/shell32.spec b/dll/win32/shell32/shell32.spec index 9a4f8b07c43..86a376f49e6 100644 --- a/dll/win32/shell32/shell32.spec +++ b/dll/win32/shell32/shell32.spec @@ -317,7 +317,7 @@ 317 stdcall SHGetSpecialFolderLocation(long long ptr) 318 stdcall SHGetSpecialFolderPathA(long ptr long long) 319 stdcall SHGetSpecialFolderPathW(long ptr long long) -320 stdcall SHGetUnreadMailCountW (long wstr long ptr wstr long) +320 stdcall SHGetUnreadMailCountW(ptr wstr ptr ptr ptr long) 321 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA 322 stdcall SHHelpShortcuts_RunDLLA(long long long long) 323 stdcall SHHelpShortcuts_RunDLLW(long long long long) diff --git a/dll/win32/shell32/stubs.cpp b/dll/win32/shell32/stubs.cpp index 5698b7dc0c8..f9ef73a2d7e 100644 --- a/dll/win32/shell32/stubs.cpp +++ b/dll/win32/shell32/stubs.cpp @@ -14,22 +14,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); -/* - * Unimplemented - */ -EXTERN_C HRESULT -WINAPI -SHGetUnreadMailCountW(HKEY hKeyUser, - LPCWSTR pszMailAddress, - DWORD *pdwCount, - FILETIME *pFileTime, - LPWSTR pszShellExecuteCommand, - int cchShellExecuteCommand) -{ - FIXME("SHGetUnreadMailCountW() stub\n"); - return E_FAIL; -} - /* * Unimplemented */ diff --git a/dll/win32/shell32/utils.cpp b/dll/win32/shell32/utils.cpp index 831d52d3c1e..4e0949eb2bb 100644 --- a/dll/win32/shell32/utils.cpp +++ b/dll/win32/shell32/utils.cpp @@ -878,6 +878,123 @@ SHCreatePropertyBag(_In_ REFIID riid, _Out_ void **ppvObj) return SHCreatePropertyBagOnMemory(STGM_READWRITE, riid, ppvObj); } +// The helper function for SHGetUnreadMailCountW +static DWORD +SHELL_ReadSingleUnreadMailCount( + _In_ HKEY hKey, + _Out_opt_ PDWORD pdwCount, + _Out_opt_ PFILETIME pFileTime, + _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, + _In_ INT cchShellExecuteCommand) +{ + DWORD dwType, dwCount, cbSize = sizeof(dwCount); + DWORD error = SHQueryValueExW(hKey, L"MessageCount", 0, &dwType, &dwCount, &cbSize); + if (error) + return error; + if (pdwCount && dwType == REG_DWORD) + *pdwCount = dwCount; + + FILETIME FileTime; + cbSize = sizeof(FileTime); + error = SHQueryValueExW(hKey, L"TimeStamp", 0, &dwType, &FileTime, &cbSize); + if (error) + return error; + if (pFileTime && dwType == REG_BINARY) + *pFileTime = FileTime; + + WCHAR szName[2 * MAX_PATH]; + cbSize = sizeof(szName); + error = SHQueryValueExW(hKey, L"Application", 0, &dwType, szName, &cbSize); + if (error) + return error; + + if (pszShellExecuteCommand && dwType == REG_SZ && + FAILED(StringCchCopyW(pszShellExecuteCommand, cchShellExecuteCommand, szName))) + { + return ERROR_INSUFFICIENT_BUFFER; + } + + return ERROR_SUCCESS; +} + +/************************************************************************* + * SHGetUnreadMailCountW [SHELL32.320] + * + * @see
https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-sh…
+ */ +EXTERN_C +HRESULT WINAPI +SHGetUnreadMailCountW( + _In_opt_ HKEY hKeyUser, + _In_opt_ LPCWSTR pszMailAddress, + _Out_opt_ PDWORD pdwCount, + _Inout_opt_ PFILETIME pFileTime, + _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, + _In_ INT cchShellExecuteCommand) +{ + LSTATUS error; + HKEY hKey; + + if (!hKeyUser) + hKeyUser = HKEY_CURRENT_USER; + + if (pszMailAddress) + { + CStringW strKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail"; + strKey += L'\\'; + strKey += pszMailAddress; + + error = RegOpenKeyExW(hKeyUser, strKey, 0, KEY_QUERY_VALUE, &hKey); + if (error) + return HRESULT_FROM_WIN32(error); + + error = SHELL_ReadSingleUnreadMailCount(hKey, pdwCount, pFileTime, + pszShellExecuteCommand, cchShellExecuteCommand); + } + else + { + if (pszShellExecuteCommand || cchShellExecuteCommand) + return E_INVALIDARG; + + *pdwCount = 0; + + error = RegOpenKeyExW(hKeyUser, L"Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail", + 0, KEY_ENUMERATE_SUB_KEYS, &hKey); + if (error) + return HRESULT_FROM_WIN32(error); + + for (DWORD dwIndex = 0; !error; ++dwIndex) + { + WCHAR Name[2 * MAX_PATH]; + DWORD cchName = _countof(Name); + FILETIME LastWritten; + error = RegEnumKeyExW(hKey, dwIndex, Name, &cchName, NULL, NULL, NULL, &LastWritten); + if (error) + break; + + HKEY hSubKey; + error = RegOpenKeyExW(hKey, Name, 0, KEY_QUERY_VALUE, &hSubKey); + if (error) + break; + + FILETIME FileTime; + DWORD dwCount; + error = SHELL_ReadSingleUnreadMailCount(hSubKey, &dwCount, &FileTime, NULL, 0); + if (!error && (!pFileTime || CompareFileTime(&FileTime, pFileTime) >= 0)) + *pdwCount += dwCount; + + RegCloseKey(hSubKey); + } + + if (error == ERROR_NO_MORE_ITEMS) + error = ERROR_SUCCESS; + } + + RegCloseKey(hKey); + + return error ? HRESULT_FROM_WIN32(error) : S_OK; +} + /************************************************************************* * SHSetUnreadMailCountW [SHELL32.336] * diff --git a/modules/rostests/apitests/shell32/CMakeLists.txt b/modules/rostests/apitests/shell32/CMakeLists.txt index cb6c11bcf8e..3c9a2e73dcf 100644 --- a/modules/rostests/apitests/shell32/CMakeLists.txt +++ b/modules/rostests/apitests/shell32/CMakeLists.txt @@ -31,6 +31,7 @@ list(APPEND SOURCE SHCreateDataObject.cpp SHCreateFileDataObject.cpp SHCreateFileExtractIconW.cpp + SHGetUnreadMailCountW.cpp SHParseDisplayName.cpp SHRestricted.cpp SHShouldShowWizards.cpp diff --git a/modules/rostests/apitests/shell32/SHGetUnreadMailCountW.cpp b/modules/rostests/apitests/shell32/SHGetUnreadMailCountW.cpp new file mode 100644 index 00000000000..a669cbe1269 --- /dev/null +++ b/modules/rostests/apitests/shell32/SHGetUnreadMailCountW.cpp @@ -0,0 +1,81 @@ +/* + * PROJECT: ReactOS API tests + * LICENSE: GPL-2.0+ (
https://spdx.org/licenses/GPL-2.0+
) + * PURPOSE: Test for SHGetUnreadMailCountW + * COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz(a)gmail.com) + */ + +#include "shelltest.h" + +static VOID SetUnreadMailInfo(PDWORD pdwDisposition) +{ + HKEY hKey; + LSTATUS error = RegCreateKeyExW( + HKEY_CURRENT_USER, L"
Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail\\example.com
", + 0, NULL, 0, KEY_WRITE, NULL, &hKey, pdwDisposition); + ok_long(error, ERROR_SUCCESS); + + DWORD dwCount = 1; + error = SHSetValueW(hKey, NULL, L"MessageCount", REG_DWORD, &dwCount, sizeof(dwCount)); + ok_long(error, ERROR_SUCCESS); + + FILETIME FileTime; + GetSystemTimeAsFileTime(&FileTime); + error = SHSetValueW(hKey, NULL, L"TimeStamp", REG_BINARY, &FileTime, sizeof(FileTime)); + ok_long(error, ERROR_SUCCESS); + + LPCWSTR pszApp = L"MyMailerApp"; + DWORD cbValue = (lstrlenW(pszApp) + 1) * sizeof(WCHAR); + error = SHSetValueW(hKey, NULL, L"Application", REG_SZ, pszApp, cbValue); + ok_long(error, ERROR_SUCCESS); + + RegCloseKey(hKey); +} + +START_TEST(SHGetUnreadMailCountW) +{ + HRESULT hr; + + DWORD dwDisposition; + SetUnreadMailInfo(&dwDisposition); + + hr = SHGetUnreadMailCountW(NULL, L"
example.com
", NULL, NULL, NULL, 0); + ok_hex(hr, S_OK); + + FILETIME FileTime; + ZeroMemory(&FileTime, sizeof(FileTime)); + hr = SHGetUnreadMailCountW(HKEY_CURRENT_USER, L"
example.com
", NULL, &FileTime, NULL, 0); + ok_hex(hr, S_OK); + ok(FileTime.dwHighDateTime != 0, "FileTime.dwHighDateTime was zero\n"); + + DWORD dwCount = 0; + ZeroMemory(&FileTime, sizeof(FileTime)); + hr = SHGetUnreadMailCountW(NULL, NULL, &dwCount, &FileTime, NULL, 0); + ok_hex(hr, S_OK); + ok_long(dwCount, 1); + ok_long(FileTime.dwHighDateTime, 0); + + dwCount = 0; + hr = SHGetUnreadMailCountW(NULL, L"
example.com
", &dwCount, NULL, NULL, 0); + ok_hex(hr, S_OK); + ok_long(dwCount, 1); + + hr = SHGetUnreadMailCountW(NULL, NULL, &dwCount, NULL, NULL, 0); + ok_hex(hr, S_OK); + + WCHAR szAppName[MAX_PATH]; + dwCount = 0; + hr = SHGetUnreadMailCountW(NULL, NULL, &dwCount, NULL, szAppName, _countof(szAppName)); + ok_hex(hr, E_INVALIDARG); + ok_long(dwCount, 0); + + hr = SHGetUnreadMailCountW(NULL, L"
example.com
", NULL, NULL, szAppName, _countof(szAppName)); + ok_hex(hr, S_OK); + ok_wstr(szAppName, L"MyMailerApp"); + + if (dwDisposition == REG_CREATED_NEW_KEY) + { + RegDeleteKeyW(HKEY_CURRENT_USER, + L"
Software\\Microsoft\\Windows\\CurrentVersion\\UnreadMail\\example.com
"); + } +} diff --git a/modules/rostests/apitests/shell32/testlist.c b/modules/rostests/apitests/shell32/testlist.c index fc879889ebe..3c1cbd7e045 100644 --- a/modules/rostests/apitests/shell32/testlist.c +++ b/modules/rostests/apitests/shell32/testlist.c @@ -44,6 +44,7 @@ extern void func_ShellHook(void); extern void func_ShellState(void); extern void func_SHGetAttributesFromDataObject(void); extern void func_SHGetFileInfo(void); +extern void func_SHGetUnreadMailCountW(void); extern void func_SHGetUserDisplayName(void); extern void func_SHLimitInputEdit(void); extern void func_SHParseDisplayName(void); @@ -96,6 +97,7 @@ const struct test winetest_testlist[] = { "ShellState", func_ShellState }, { "SHGetAttributesFromDataObject", func_SHGetAttributesFromDataObject }, { "SHGetFileInfo", func_SHGetFileInfo }, + { "SHGetUnreadMailCountW", func_SHGetUnreadMailCountW }, { "SHGetUserDisplayName", func_SHGetUserDisplayName }, { "SHLimitInputEdit", func_SHLimitInputEdit }, { "SHParseDisplayName", func_SHParseDisplayName }, diff --git a/sdk/include/psdk/shellapi.h b/sdk/include/psdk/shellapi.h index b707d6d41df..f343928aa62 100644 --- a/sdk/include/psdk/shellapi.h +++ b/sdk/include/psdk/shellapi.h @@ -659,6 +659,15 @@ SHEnumerateUnreadMailAccountsW( _Out_writes_(cchMailAddress) PWSTR pszMailAddress, _In_ INT cchMailAddress); +HRESULT WINAPI +SHGetUnreadMailCountW( + _In_opt_ HKEY hKeyUser, + _In_opt_ LPCWSTR pszMailAddress, + _Out_opt_ PDWORD pdwCount, + _Inout_opt_ PFILETIME pFileTime, + _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, + _In_ INT cchShellExecuteCommand); + #ifdef UNICODE #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
2 weeks, 3 days
1
0
0
0
[reactos] 01/01: [SHELL32][SHELL32_APITEST][SDK] Implement StrRStrA/W (#7621)
by Katayama Hirofumi MZ
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=157e18b215ce0f5334c4f…
commit 157e18b215ce0f5334c4f2ca895447a28d650d16 Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com> AuthorDate: Mon Jan 20 08:50:26 2025 +0900 Commit: GitHub <noreply(a)github.com> CommitDate: Mon Jan 20 08:50:26 2025 +0900 [SHELL32][SHELL32_APITEST][SDK] Implement StrRStrA/W (#7621) Implementing missing features... JIRA issue: CORE-19278 - Move function definitions from stubs.cpp to utils.cpp. - Add prototypes to <undocshell.h>. --- dll/win32/shell32/stubs.cpp | 22 ------ dll/win32/shell32/utils.cpp | 82 ++++++++++++++++++++ modules/rostests/apitests/shell32/CMakeLists.txt | 1 + modules/rostests/apitests/shell32/StrRStr.cpp | 97 ++++++++++++++++++++++++ modules/rostests/apitests/shell32/testlist.c | 2 + sdk/include/reactos/undocshell.h | 12 +++ 6 files changed, 194 insertions(+), 22 deletions(-) diff --git a/dll/win32/shell32/stubs.cpp b/dll/win32/shell32/stubs.cpp index 8967dd49ab8..5698b7dc0c8 100644 --- a/dll/win32/shell32/stubs.cpp +++ b/dll/win32/shell32/stubs.cpp @@ -235,28 +235,6 @@ RealDriveTypeFlags(INT iDrive, BOOL bUnknown) return 1; } -/* - * Unimplemented - */ -EXTERN_C LPWSTR -WINAPI -StrRStrW(LPWSTR lpSrc, LPWSTR lpLast, LPWSTR lpSearch) -{ - FIXME("StrRStrW() stub\n"); - return NULL; -} - -/* - * Unimplemented - */ -EXTERN_C LPWSTR -WINAPI -StrRStrA(LPSTR lpSrc, LPSTR lpLast, LPSTR lpSearch) -{ - FIXME("StrRStrA() stub\n"); - return NULL; -} - /* * Unimplemented */ diff --git a/dll/win32/shell32/utils.cpp b/dll/win32/shell32/utils.cpp index 1f4ff07a88e..831d52d3c1e 100644 --- a/dll/win32/shell32/utils.cpp +++ b/dll/win32/shell32/utils.cpp @@ -13,6 +13,88 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); +static PCSTR StrEndNA(_In_ PCSTR psz, _In_ INT_PTR cch) +{ + PCSTR pch, pchEnd = &psz[cch]; + for (pch = psz; *pch && pch < pchEnd; pch = CharNextA(pch)) + ; + if (pchEnd < pch) // A double-byte character detected at last? + pch -= 2; // The width of a double-byte character is 2 + return pch; +} + +static PCWSTR StrEndNW(_In_ PCWSTR psz, _In_ INT_PTR cch) +{ + PCWSTR pch, pchEnd = &psz[cch]; + for (pch = psz; *pch && pch < pchEnd; ++pch) + ; + return pch; +} + +/************************************************************************* + * StrRStrA [SHELL32.389] + */ +EXTERN_C +PSTR WINAPI +StrRStrA( + _In_ PCSTR pszSrc, + _In_opt_ PCSTR pszLast, + _In_ PCSTR pszSearch) +{ + INT cchSearch = lstrlenA(pszSearch); + + PCSTR pchEnd = pszLast ? pszLast : &pszSrc[lstrlenA(pszSrc)]; + if (pchEnd == pszSrc) + return NULL; + + INT_PTR cchEnd = pchEnd - pszSrc; + for (;;) + { + --pchEnd; + --cchEnd; + if (!pchEnd) + break; + if (!StrCmpNA(pchEnd, pszSearch, cchSearch) && pchEnd == StrEndNA(pszSrc, cchEnd)) + break; + if (pchEnd == pszSrc) + return NULL; + } + + return const_cast<PSTR>(pchEnd); +} + +/************************************************************************* + * StrRStrW [SHELL32.392] + */ +EXTERN_C +PWSTR WINAPI +StrRStrW( + _In_ PCWSTR pszSrc, + _In_opt_ PCWSTR pszLast, + _In_ PCWSTR pszSearch) +{ + INT cchSearch = lstrlenW(pszSearch); + + PCWSTR pchEnd = pszLast ? pszLast : &pszSrc[lstrlenW(pszSrc)]; + if (pchEnd == pszSrc) + return NULL; + + INT_PTR cchEnd = pchEnd - pszSrc; + for (;;) + { + --pchEnd; + --cchEnd; + if (!pchEnd) + break; + if (!StrCmpNW(pchEnd, pszSearch, cchSearch) && pchEnd == StrEndNW(pszSrc, cchEnd)) + break; + if (pchEnd == pszSrc) + return NULL; + } + + return const_cast<PWSTR>(pchEnd); +} + HWND CStubWindow32::FindStubWindow(UINT Type, LPCWSTR Path) { diff --git a/modules/rostests/apitests/shell32/CMakeLists.txt b/modules/rostests/apitests/shell32/CMakeLists.txt index aff71a65c90..cb6c11bcf8e 100644 --- a/modules/rostests/apitests/shell32/CMakeLists.txt +++ b/modules/rostests/apitests/shell32/CMakeLists.txt @@ -47,6 +47,7 @@ list(APPEND SOURCE SHGetUserDisplayName.cpp SHLimitInputEdit.cpp SHSetUnreadMailCountW.cpp + StrRStr.cpp menu.cpp shelltest.cpp) diff --git a/modules/rostests/apitests/shell32/StrRStr.cpp b/modules/rostests/apitests/shell32/StrRStr.cpp new file mode 100644 index 00000000000..a78181f791f --- /dev/null +++ b/modules/rostests/apitests/shell32/StrRStr.cpp @@ -0,0 +1,97 @@ +/* + * PROJECT: ReactOS API tests + * LICENSE: GPL-2.0+ (
https://spdx.org/licenses/GPL-2.0+
) + * PURPOSE: Test for StrRStrA/W + * COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz(a)gmail.com) + */ + +#include "shelltest.h" +#include <versionhelpers.h> + +typedef PSTR (WINAPI *FN_StrRStrA)(PCSTR, PCSTR, PCSTR pszSearch); +typedef PWSTR (WINAPI *FN_StrRStrW)(PCWSTR, PCWSTR, PCWSTR pszSearch); + +static VOID TEST_StrRStrA(VOID) +{ + PCSTR psz, pch; + PSTR ret; + FN_StrRStrA StrRStrA = (FN_StrRStrA)GetProcAddress(GetModuleHandleW(L"shell32"), MAKEINTRESOURCEA(389)); + + if (!StrRStrA) + { + skip("StrRStrA not found\n"); + return; + } + + psz = "ABCBC"; + ret = StrRStrA(psz, NULL, "BC"); + ok_ptr(ret, psz + 3); + + psz = "ABCBC"; + pch = &psz[2]; + ret = StrRStrA(psz, pch, "BC"); + ok_ptr(ret, &psz[1]); + + psz = "ABCBC"; + ret = StrRStrA(psz, psz, "BC"); + ok(!ret, "ret was '%s'\n", ret); + + psz = "ABCBC"; + pch = &psz[lstrlenA(psz)]; + ret = StrRStrA(psz, pch, "BC"); + ok_ptr(ret, psz + 3); +} + +static VOID TEST_StrRStrW(VOID) +{ + PCWSTR psz, pch; + PWSTR ret; + FN_StrRStrW StrRStrW = (FN_StrRStrW)GetProcAddress(GetModuleHandleW(L"shell32"), MAKEINTRESOURCEA(392)); + + if (!StrRStrW) + { + skip("StrRStrW not found\n"); + return; + } + + psz = L"ABCBC"; + ret = StrRStrW(psz, NULL, L"BC"); + ok_ptr(ret, psz + 3); + + psz = L"ABCBC"; + pch = &psz[2]; + ret = StrRStrW(psz, pch, L"BC"); + ok_ptr(ret, &psz[1]); + + psz = L"ABCBC"; + ret = StrRStrW(psz, psz, L"BC"); + ok(!ret, "ret was '%S'\n", ret); + + psz = L"ABCBC"; + pch = &psz[lstrlenW(psz)]; + ret = StrRStrW(psz, pch, L"BC"); + ok_ptr(ret, psz + 3); +} + +static BOOL IsWindowsServer2003SP2OrGreater(VOID) +{ + return IsWindowsVersionOrGreater(5, 2, 2); +} + +START_TEST(StrRStr) +{ + if (IsWindowsVistaOrGreater()) + { + skip("Vista+\n"); + return; + } + + if (!IsWindowsServer2003SP2OrGreater()) + { + skip("Before 2K3 SP3\n"); + return; + } + + TEST_StrRStrA(); + TEST_StrRStrW(); +} diff --git a/modules/rostests/apitests/shell32/testlist.c b/modules/rostests/apitests/shell32/testlist.c index daa699a8e32..fc879889ebe 100644 --- a/modules/rostests/apitests/shell32/testlist.c +++ b/modules/rostests/apitests/shell32/testlist.c @@ -51,6 +51,7 @@ extern void func_SHShouldShowWizards(void); extern void func_SHSimpleIDListFromPath(void); extern void func_SHRestricted(void); extern void func_SHSetUnreadMailCountW(void); +extern void func_StrRStr(void); const struct test winetest_testlist[] = { @@ -102,6 +103,7 @@ const struct test winetest_testlist[] = { "SHSimpleIDListFromPath", func_SHSimpleIDListFromPath }, { "SHRestricted", func_SHRestricted }, { "SHSetUnreadMailCountW", func_SHSetUnreadMailCountW }, + { "StrRStr", func_StrRStr }, { 0, 0 } }; diff --git a/sdk/include/reactos/undocshell.h b/sdk/include/reactos/undocshell.h index beb840c89e2..797979334ee 100644 --- a/sdk/include/reactos/undocshell.h +++ b/sdk/include/reactos/undocshell.h @@ -794,6 +794,18 @@ BOOL WINAPI GUIDFromStringW( _In_ PCWSTR psz, _Out_ LPGUID pguid); +PSTR WINAPI +StrRStrA( + _In_ PCSTR pszSrc, + _In_opt_ PCSTR pszLast, + _In_ PCSTR pszSearch); + +PWSTR WINAPI +StrRStrW( + _In_ PCWSTR pszSrc, + _In_opt_ PCWSTR pszLast, + _In_ PCWSTR pszSearch); + LPSTR WINAPI SheRemoveQuotesA(LPSTR psz); LPWSTR WINAPI SheRemoveQuotesW(LPWSTR psz);
2 weeks, 3 days
1
0
0
0
← Newer
1
...
11
12
13
14
15
16
17
...
28
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Results per page:
10
25
50
100
200