[SHLWAPI] Implement IUnknown_QueryServicePropertyBag (#5628)

CORE-9283
This commit is contained in:
Katayama Hirofumi MZ 2023-09-01 07:28:23 +09:00 committed by GitHub
parent ed134bf2af
commit 1c254a535c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 2 deletions

View file

@ -1938,7 +1938,7 @@ EXTERN_C VOID FreeViewStatePropertyBagCache(VOID)
*
* @see https://www.geoffchappell.com/studies/windows/shell/shlwapi/api/propbag/getperscreenresname.htm
*/
INT WINAPI
EXTERN_C INT WINAPI
SHGetPerScreenResName(
_Out_writes_(cchBuffer) LPWSTR pszBuffer,
_In_ INT cchBuffer,
@ -1953,3 +1953,34 @@ SHGetPerScreenResName(
StringCchPrintfW(pszBuffer, cchBuffer, L"%dx%d(%d)", cxWidth, cyHeight, cMonitors);
return lstrlenW(pszBuffer);
}
/**************************************************************************
* IUnknown_QueryServicePropertyBag (SHLWAPI.536)
*
* @param punk An IUnknown interface.
* @param flags The SHGVSPB_... flags of SHGetViewStatePropertyBag.
* @param riid IID of requested property bag interface.
* @param ppvObj Address to receive pointer to the new interface.
* @return An HRESULT value. S_OK on success, non-zero on failure.
* @see https://geoffchappell.com/studies/windows/shell/shlwapi/api/util/iunknown/queryservicepropertybag.htm
*/
EXTERN_C HRESULT WINAPI
IUnknown_QueryServicePropertyBag(
_In_ IUnknown *punk,
_In_ long flags,
_In_ REFIID riid,
_Outptr_ void **ppvObj)
{
TRACE("%p 0x%x %p %p\n", punk, flags, &riid, ppvObj);
CComPtr<IShellBrowserService> pService;
HRESULT hr = IUnknown_QueryService(punk, SID_STopLevelBrowser, IID_IShellBrowserService,
(void **)&pService);
if (FAILED(hr))
{
ERR("0x%X\n", hr);
return hr;
}
return pService->GetPropertyBag(flags, riid, ppvObj);
}

View file

@ -533,7 +533,7 @@
533 stdcall -noname SHGetPerScreenResName(ptr long long)
534 stdcall -noname SHPropertyBag_ReadBOOL(ptr wstr ptr)
535 stdcall -noname SHPropertyBag_Delete(ptr wstr)
536 stdcall -stub -noname IUnknown_QueryServicePropertyBag(ptr long ptr ptr)
536 stdcall -noname IUnknown_QueryServicePropertyBag(ptr long ptr ptr)
537 stub -noname SHBoolSystemParametersInfo
538 stdcall -noname IUnknown_QueryServiceForWebBrowserApp(ptr ptr ptr)
539 stub -noname IUnknown_ShowBrowserBar