[PSDK][INCLUDE/WINE] Introduce our own shlwapi.h for PSDK and import wine-10.0 shlwapi.h for Wine code (#8419)

- [PSDK] Introduce our own Microsoft compatible and MIT-licensed shlwapi.h and fix breaking changes
- [INCLUDE/WINE] Import shlwapi.h from wine-10.0 for use with Wine compatible code
- [CMAKELISTS.TXT] Bump up IE version from IE60 to IE60SP2. This is required because we are already using IE60SP2 guarded functionality; the new header unhides this.
- [SHLWAPI] Fix breaking changes, including a typo for 'SHGVSPB_GLOBALDEAFAULTS' (should be 'SHGVSPB_GLOBALDEFAULTS')
- [MSI] Use wine's shlwapi.h instead of our own in automation.c, don't precompile shlwapi.h.
- [URLMON_WINETEST] Primarily use wineheaders for this test
This commit is contained in:
Carl J. Bialorucki
2025-10-17 09:23:31 -05:00
committed by GitHub
parent bfee65f62c
commit 6762703ce4
10 changed files with 2383 additions and 2041 deletions

View File

@@ -238,7 +238,7 @@ Enable this if the module uses typeid or dynamic_cast. You will probably need to
# Version Options
add_definitions(-DWINVER=0x502
-D_WIN32_IE=0x600
-D_WIN32_IE=0x603
-D_WIN32_WINNT=0x502
-D_WIN32_WINDOWS=0x502
-D_SETUPAPI_VER=0x502

View File

@@ -30,7 +30,11 @@
#include "msipriv.h"
#include "activscp.h"
#include "oleauto.h"
#ifdef __REACTOS__
#include "wine/shlwapi.h"
#else
#include "shlwapi.h"
#endif
#include "wine/debug.h"
#include "msiserver.h"

View File

@@ -21,7 +21,9 @@
#include <wincon.h>
#include <msiserver.h>
#include <shlobj.h>
#ifndef __REACTOS__
#include <shlwapi.h>
#endif
#include <sddl.h>
#include <wine/unicode.h>

View File

@@ -3067,7 +3067,11 @@ BOOL WINAPI GUIDFromStringW(LPCWSTR idstr, CLSID *id)
* either set to TRUE, or removed depending on whether the browser is deemed
* to be integrated.
*/
#ifdef __REACTOS__
UINT WINAPI WhichPlatform(void)
#else
DWORD WINAPI WhichPlatform(void)
#endif
{
static const char szIntegratedBrowser[] = "IntegratedBrowser";
static DWORD dwState = 0;

View File

@@ -1392,7 +1392,7 @@ BOOL CViewStatePropertyBag::_CanAccessGlobalDefaultsBag() const
if (_CanAccessFolderDefaultsBag())
return TRUE;
return ((m_dwVspbFlags & SHGVSPB_GLOBALDEAFAULTS) == SHGVSPB_GLOBALDEAFAULTS);
return ((m_dwVspbFlags & SHGVSPB_GLOBALDEFAULTS) == SHGVSPB_GLOBALDEFAULTS);
}
BOOL CViewStatePropertyBag::_CanAccessInheritBag() const
@@ -1417,7 +1417,7 @@ void CViewStatePropertyBag::_ResetTryAgainFlag()
m_bUserDefaultsBag = FALSE;
else if ((m_dwVspbFlags & SHGVSPB_ALLUSERS) && (m_dwVspbFlags & SHGVSPB_PERFOLDER))
m_bFolderDefaultsBag = FALSE;
else if ((m_dwVspbFlags & SHGVSPB_GLOBALDEAFAULTS) == SHGVSPB_GLOBALDEAFAULTS)
else if ((m_dwVspbFlags & SHGVSPB_GLOBALDEFAULTS) == SHGVSPB_GLOBALDEFAULTS)
m_bGlobalDefaultsBag = FALSE;
}
@@ -1678,7 +1678,7 @@ BOOL CViewStatePropertyBag::_EnsureGlobalDefaultsBag(DWORD dwMode, REFIID riid)
if (!m_pGlobalDefaultsBag && !m_bGlobalDefaultsBag && _CanAccessGlobalDefaultsBag())
{
m_bGlobalDefaultsBag = TRUE;
_CreateBag(NULL, m_pszPath, SHGVSPB_GLOBALDEAFAULTS, dwMode, riid, &m_pGlobalDefaultsBag);
_CreateBag(NULL, m_pszPath, SHGVSPB_GLOBALDEFAULTS, dwMode, riid, &m_pGlobalDefaultsBag);
}
return (m_pGlobalDefaultsBag != NULL);
}

View File

@@ -1,4 +1,5 @@
include_directories(BEFORE ${REACTOS_SOURCE_DIR}/sdk/include/wine)
add_definitions(-D__ROS_LONG64__)
add_definitions(-DUSE_WINE_TODOS)

File diff suppressed because it is too large Load Diff

View File

@@ -653,7 +653,7 @@ public:
}
};
#if defined(__WINE_SHLWAPI_H) && !defined(NO_SHLWAPI)
#if defined(_INC_SHLWAPI) && !defined(NO_SHLWAPI)
struct CScopedSetObjectWithSite
{
IUnknown *m_pObj;

View File

@@ -109,7 +109,6 @@ DWORD WINAPI SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam);
HRESULT WINAPI SHIsExpandableFolder(LPSHELLFOLDER lpFolder, LPCITEMIDLIST pidl);
DWORD WINAPI SHFillRectClr(HDC hDC, LPCRECT pRect, COLORREF cRef);
int WINAPI SHSearchMapInt(const int *lpKeys, const int *lpValues, int iLen, int iKey);
VOID WINAPI IUnknown_Set(IUnknown **lppDest, IUnknown *lpUnknown);
HRESULT WINAPI
MayQSForward(
@@ -180,7 +179,6 @@ BOOL WINAPI SHExpandEnvironmentStringsForUserW(HANDLE, LPCWSTR, LPWSTR, DWORD);
BOOL WINAPI SHIsEmptyStream(IStream*);
HRESULT WINAPI IStream_Size(IStream *lpStream, ULARGE_INTEGER* lpulSize);
HRESULT WINAPI SHInvokeDefaultCommand(HWND,IShellFolder*,LPCITEMIDLIST);
HRESULT WINAPI SHPropertyBag_ReadType(IPropertyBag *ppb, LPCWSTR pszPropName, VARIANTARG *pvarg, VARTYPE vt);
HRESULT WINAPI SHPropertyBag_ReadBOOL(IPropertyBag *ppb, LPCWSTR pszPropName, BOOL *pbValue);
@@ -383,6 +381,13 @@ VOID WINAPI FixSlashesAndColonW(LPWSTR);
BOOL WINAPI PathIsValidCharA(char c, DWORD dwClass);
BOOL WINAPI PathIsValidCharW(WCHAR c, DWORD dwClass);
BOOL WINAPI SHGetPathFromIDListWrapW(LPCITEMIDLIST pidl, LPWSTR pszPath);
#ifndef _SHLWAPI_
DECLSPEC_IMPORT BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD* dwAttr);
DECLSPEC_IMPORT BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD* dwAttr);
#else
BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD* dwAttr);
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD* dwAttr);
#endif
BOOL WINAPI
IContextMenu_Invoke(

1221
sdk/include/wine/shlwapi.h Normal file

File diff suppressed because it is too large Load Diff