mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 11:26:10 +00:00
Implement @163,164,168,175,182,187,286,SHSkipJunction.
Stub @201,202,203, Document many functions. @165: Fix mask and flags parameter order. @172: Works on IInternetSecurityMgrSite and IShellView too. @199,@268: No return value, call @169.
This commit is contained in:
parent
5758484c78
commit
1858d5309b
2 changed files with 641 additions and 149 deletions
|
@ -26,6 +26,8 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "docobj.h"
|
||||
#include "shlguid.h"
|
||||
#include "windef.h"
|
||||
#include "winnls.h"
|
||||
#include "winbase.h"
|
||||
|
@ -37,6 +39,9 @@
|
|||
#include "wine/obj_base.h"
|
||||
#include "wine/obj_inplace.h"
|
||||
#include "wine/obj_serviceprovider.h"
|
||||
#include "wine/obj_control.h"
|
||||
#include "wine/obj_connection.h"
|
||||
#include "wine/obj_property.h"
|
||||
#include "wingdi.h"
|
||||
#include "winreg.h"
|
||||
#include "winuser.h"
|
||||
|
@ -44,6 +49,7 @@
|
|||
#include "ordinal.h"
|
||||
#include "shlwapi.h"
|
||||
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
extern HINSTANCE shlwapi_hInstance;
|
||||
|
@ -141,6 +147,7 @@ static DWORD (WINAPI *pGetFileVersionInfoSizeW)(LPCWSTR,LPDWORD);
|
|||
static BOOL (WINAPI *pGetFileVersionInfoW)(LPCWSTR,DWORD,DWORD,LPVOID);
|
||||
static WORD (WINAPI *pVerQueryValueW)(LPVOID,LPCWSTR,LPVOID*,UINT*);
|
||||
static BOOL (WINAPI *pCOMCTL32_417)(HDC,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*);
|
||||
static HRESULT (WINAPI *pDllGetVersion)(DLLVERSIONINFO*);
|
||||
|
||||
/*
|
||||
NOTES: Most functions exported by ordinal seem to be superflous.
|
||||
|
@ -559,13 +566,27 @@ HSHARED WINAPI SHLWAPI_11(HSHARED hShared, DWORD dwDstProcId, DWORD dwSrcProcId,
|
|||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.13]
|
||||
* (Used by IE4 during startup)
|
||||
*
|
||||
* Create and register a clipboard enumerator for a web browser.
|
||||
*
|
||||
* PARAMS
|
||||
* lpBC [I] Binding context
|
||||
* lpUnknown [I] An object exposing the IWebBrowserApp interface
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK.
|
||||
* Failure: An HRESULT error code.
|
||||
*
|
||||
* NOTES
|
||||
* The enumerator is stored as a property of the web browser. If it does not
|
||||
* yet exist, it is created and set before being registered.
|
||||
*
|
||||
* BUGS
|
||||
* Unimplemented.
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_13 (
|
||||
LPVOID w,
|
||||
LPVOID x)
|
||||
HRESULT WINAPI SHLWAPI_13(LPBC lpBC, IUnknown *lpUnknown)
|
||||
{
|
||||
FIXME("(%p %p)stub\n",w,x);
|
||||
FIXME("(%p,%p) stub\n", lpBC, lpUnknown);
|
||||
return 1;
|
||||
#if 0
|
||||
/* pseudo code extracted from relay trace */
|
||||
|
@ -630,9 +651,16 @@ HRESULT WINAPI SHLWAPI_13 (
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.14]
|
||||
*
|
||||
* Function:
|
||||
* Retrieves IE "AcceptLanguage" value from registry. ASCII mode.
|
||||
* Get Explorers "AcceptLanguage" setting.
|
||||
*
|
||||
* PARAMS
|
||||
* langbuf [O] Destination for language string
|
||||
* buflen [I] Length of langbuf
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK. langbuf is set to the language string found.
|
||||
* Failure: E_FAIL, If any arguments are invalid, error occurred, or Explorer
|
||||
* does not contain the setting.
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_14 (
|
||||
LPSTR langbuf,
|
||||
|
@ -683,9 +711,7 @@ HRESULT WINAPI SHLWAPI_14 (
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.15]
|
||||
*
|
||||
* Function:
|
||||
* Retrieves IE "AcceptLanguage" value from registry. UNICODE mode.
|
||||
*
|
||||
* Unicode version of SHLWAPI_14.
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_15 (
|
||||
LPWSTR langbuf,
|
||||
|
@ -886,7 +912,17 @@ BOOL WINAPI SHLWAPI_35(LPVOID p1, DWORD dw2, LPVOID p3)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.36]
|
||||
*
|
||||
* Insert a bitmap menu item into a menu.
|
||||
* Insert a bitmap menu item at the bottom of a menu.
|
||||
*
|
||||
* PARAMS
|
||||
* hMenu [I] Menu to insert into
|
||||
* flags [I] Flags for insertion
|
||||
* id [I] Menu ID of the item
|
||||
* str [I] Menu text for the item
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE, the item is inserted into the menu
|
||||
* Failure: FALSE, if any parameter is invalid
|
||||
*/
|
||||
BOOL WINAPI SHLWAPI_36(HMENU hMenu, UINT flags, UINT id, LPCWSTR str)
|
||||
{
|
||||
|
@ -898,6 +934,16 @@ BOOL WINAPI SHLWAPI_36(HMENU hMenu, UINT flags, UINT id, LPCWSTR str)
|
|||
* @ [SHLWAPI.74]
|
||||
*
|
||||
* Get the text from a given dialog item.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Handle of dialog
|
||||
* nItem [I] Index of item
|
||||
* lpsDest [O] Buffer for receiving window text
|
||||
* nDestLen [I] Length of buffer.
|
||||
*
|
||||
* RETURNS
|
||||
* Success: The length of the returned text.
|
||||
* Failure: 0.
|
||||
*/
|
||||
INT WINAPI SHLWAPI_74(HWND hWnd, INT nItem, LPWSTR lpsDest,INT nDestLen)
|
||||
{
|
||||
|
@ -913,7 +959,16 @@ INT WINAPI SHLWAPI_74(HWND hWnd, INT nItem, LPWSTR lpsDest,INT nDestLen)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.138]
|
||||
*
|
||||
* Set the text of a dialog item if it exists.
|
||||
* Set the text of a given dialog item.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Handle of dialog
|
||||
* iItem [I] Index of item
|
||||
* lpszText [O] Text to set
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE. The text of the dialog is set to lpszText.
|
||||
* Failure: FALSE, Otherwise.
|
||||
*/
|
||||
BOOL WINAPI SHLWAPI_138(HWND hWnd, INT iItem, LPCWSTR lpszText)
|
||||
{
|
||||
|
@ -1007,7 +1062,15 @@ DWORD WINAPI SHLWAPI_158 (LPCWSTR str1, LPCWSTR str2)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.162]
|
||||
*
|
||||
* Ensure a multibyte character string doesn't end in a hanging lead byte.
|
||||
* Remove a hanging lead byte from the end of a string, if present.
|
||||
*
|
||||
* PARAMS
|
||||
* lpStr [I] String to check for a hanging lead byte
|
||||
* size [I] Length of lpszStr
|
||||
*
|
||||
* RETURNS
|
||||
* Success: The new size of the string. Any hanging lead bytes are removed.
|
||||
* Failure: 0, if any parameters are invalid.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_162(LPSTR lpStr, DWORD size)
|
||||
{
|
||||
|
@ -1031,43 +1094,104 @@ DWORD WINAPI SHLWAPI_162(LPSTR lpStr, DWORD size)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.163]
|
||||
*
|
||||
* _IUnknown_QueryStatus
|
||||
* Call IOleCommandTarget::QueryStatus() on an object.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object supporting the IOleCommandTarget interface
|
||||
* pguidCmdGroup [I] GUID for the command group
|
||||
* cCmds [I]
|
||||
* prgCmds [O] Commands
|
||||
* pCmdText [O] Command text
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK.
|
||||
* Failure: E_FAIL, if lpUnknown is NULL.
|
||||
* E_NOINTERFACE, if lpUnknown does not support IOleCommandTarget.
|
||||
* Otherwise, an error code from IOleCommandTarget::QueryStatus().
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_163 (
|
||||
LPVOID v,
|
||||
LPVOID w,
|
||||
LPVOID x,
|
||||
LPVOID y,
|
||||
LPVOID z)
|
||||
HRESULT WINAPI SHLWAPI_163(IUnknown* lpUnknown, REFGUID pguidCmdGroup,
|
||||
ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT* pCmdText)
|
||||
{
|
||||
TRACE("(%p %p %p %p %p) stub\n", v,w,x,y,z);
|
||||
return 0;
|
||||
}
|
||||
HRESULT hRet = E_FAIL;
|
||||
|
||||
TRACE("(%p,%p,%ld,%p,%p)\n",lpUnknown, pguidCmdGroup, cCmds, prgCmds, pCmdText);
|
||||
|
||||
if (lpUnknown)
|
||||
{
|
||||
IOleCommandTarget* lpOle;
|
||||
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IOleCommandTarget,
|
||||
(void**)&lpOle);
|
||||
|
||||
if (SUCCEEDED(hRet) && lpOle)
|
||||
{
|
||||
hRet = IOleCommandTarget_QueryStatus(lpOle, pguidCmdGroup, cCmds,
|
||||
prgCmds, pCmdText);
|
||||
IOleCommandTarget_Release(lpOle);
|
||||
}
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.164]
|
||||
*
|
||||
* _IUnknown_Exec
|
||||
* Call IOleCommandTarget::Exec() on an object.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object supporting the IOleCommandTarget interface
|
||||
* pguidCmdGroup [I] GUID for the command group
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK.
|
||||
* Failure: E_FAIL, if lpUnknown is NULL.
|
||||
* E_NOINTERFACE, if lpUnknown does not support IOleCommandTarget.
|
||||
* Otherwise, an error code from IOleCommandTarget::Exec().
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_164 (
|
||||
LPVOID u,
|
||||
LPVOID v,
|
||||
LPVOID w,
|
||||
LPVOID x,
|
||||
LPVOID y,
|
||||
LPVOID z)
|
||||
HRESULT WINAPI SHLWAPI_164(IUnknown* lpUnknown, REFGUID pguidCmdGroup,
|
||||
DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn,
|
||||
VARIANT* pvaOut)
|
||||
{
|
||||
TRACE("(%p %p %p %p %p %p) stub\n",u,v,w,x,y,z);
|
||||
return 0x80004002; /* E_NOINTERFACE */
|
||||
HRESULT hRet = E_FAIL;
|
||||
|
||||
TRACE("(%p,%p,%ld,%ld,%p,%p)\n",lpUnknown, pguidCmdGroup, nCmdID,
|
||||
nCmdexecopt, pvaIn, pvaOut);
|
||||
|
||||
if (lpUnknown)
|
||||
{
|
||||
IOleCommandTarget* lpOle;
|
||||
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IOleCommandTarget,
|
||||
(void**)&lpOle);
|
||||
if (SUCCEEDED(hRet) && lpOle)
|
||||
{
|
||||
hRet = IOleCommandTarget_Exec(lpOle, pguidCmdGroup, nCmdID,
|
||||
nCmdexecopt, pvaIn, pvaOut);
|
||||
IOleCommandTarget_Release(lpOle);
|
||||
}
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.165]
|
||||
*
|
||||
* SetWindowLongA with mask.
|
||||
* Retrieve, modify, and re-set a value from a window.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Windows to get value from
|
||||
* offset [I] Offset of value
|
||||
* wMask [I] Mask for uiFlags
|
||||
* wFlags [I] Bits to set in window value
|
||||
*
|
||||
* RETURNS
|
||||
* The new value as it was set, or 0 if any parameter is invalid.
|
||||
*
|
||||
* NOTES
|
||||
* Any bits set in uiMask are cleared from the value, then any bits set in
|
||||
* uiFlags are set in the value.
|
||||
*/
|
||||
LONG WINAPI SHLWAPI_165(HWND hwnd, INT offset, UINT wFlags, UINT wMask)
|
||||
LONG WINAPI SHLWAPI_165(HWND hwnd, INT offset, UINT wMask, UINT wFlags)
|
||||
{
|
||||
LONG ret = GetWindowLongA(hwnd, offset);
|
||||
UINT newFlags = (wFlags & wMask) | (ret & ~wFlags);
|
||||
|
@ -1080,20 +1204,95 @@ LONG WINAPI SHLWAPI_165(HWND hwnd, INT offset, UINT wFlags, UINT wMask)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.167]
|
||||
*
|
||||
* _SHSetParentHwnd
|
||||
* Change a windows parent.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Window to change parent of
|
||||
* hWndParent [I] New parent window
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing.
|
||||
*
|
||||
* NOTES
|
||||
* If hWndParent is NULL (desktop), the window style is changed to WS_POPUP.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_167(HWND hWnd, LPVOID y)
|
||||
DWORD WINAPI SHLWAPI_167(HWND hWnd, HWND hWndParent)
|
||||
{
|
||||
FIXME("0x%08x %p\n", hWnd,y);
|
||||
FIXME("0x%08x,0x%08x\n", hWnd, hWndParent);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.168]
|
||||
*
|
||||
* Locate and advise a connection point in an IConnectionPointContainer.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnkSink [I] Sink for the connection point advise call
|
||||
* riid [I] REFIID of connection point to advise
|
||||
* bAdviseOnly [I] TRUE = Advise only, FALSE = Unadvise first
|
||||
* lpUnknown [I] Object supporting the IConnectionPointContainer interface
|
||||
* lpCookie [O] Pointer to connection point cookie
|
||||
* lppCP [O] Destination for the IConnectionPoint found
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK. If lppCP is non-NULL, it is filled with the IConnectionPoint
|
||||
* that was advised. The caller is responsable for releasing it.
|
||||
* Failure: E_FAIL, if any arguments are invalid.
|
||||
* E_NOINTERFACE, if lpUnknown isn't an IConnectionPointContainer,
|
||||
* Or an HRESULT error code if any call fails.
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_168(IUnknown* lpUnkSink, REFIID riid, BOOL bAdviseOnly,
|
||||
IUnknown* lpUnknown, LPDWORD lpCookie,
|
||||
IConnectionPoint **lppCP)
|
||||
{
|
||||
HRESULT hRet;
|
||||
IConnectionPointContainer* lpContainer;
|
||||
IConnectionPoint *lpCP;
|
||||
|
||||
if(!lpUnknown || (bAdviseOnly && !lpUnkSink))
|
||||
return E_FAIL;
|
||||
|
||||
if(lppCP)
|
||||
*lppCP = NULL;
|
||||
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IConnectionPointContainer,
|
||||
(void**)&lpContainer);
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
hRet = IConnectionPointContainer_FindConnectionPoint(lpContainer, riid, &lpCP);
|
||||
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
if(!bAdviseOnly)
|
||||
hRet = IConnectionPoint_Unadvise(lpCP, *lpCookie);
|
||||
hRet = IConnectionPoint_Advise(lpCP, lpUnkSink, lpCookie);
|
||||
|
||||
if (FAILED(hRet))
|
||||
*lpCookie = 0;
|
||||
|
||||
if (lppCP && SUCCEEDED(hRet))
|
||||
*lppCP = lpCP; /* Caller keeps the interface */
|
||||
else
|
||||
IConnectionPoint_Release(lpCP); /* Release it */
|
||||
}
|
||||
|
||||
IUnknown_Release(lpContainer);
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.169]
|
||||
*
|
||||
* _IUnknown_AtomicRelease
|
||||
*
|
||||
* Do IUnknown::Release on passed object.
|
||||
* Release an interface.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object to release
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_169 (IUnknown ** lpUnknown)
|
||||
{
|
||||
|
@ -1110,7 +1309,14 @@ DWORD WINAPI SHLWAPI_169 (IUnknown ** lpUnknown)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.170]
|
||||
*
|
||||
* Skip URL '//' sequence.
|
||||
* Skip '//' if present in a string.
|
||||
*
|
||||
* PARAMS
|
||||
* lpszSrc [I] String to check for '//'
|
||||
*
|
||||
* RETURNS
|
||||
* Success: The next character after the '//' or the string if not present
|
||||
* Failure: NULL, if lpszStr is NULL.
|
||||
*/
|
||||
LPCSTR WINAPI SHLWAPI_170(LPCSTR lpszSrc)
|
||||
{
|
||||
|
@ -1133,29 +1339,60 @@ BOOL WINAPI SHLWAPI_171(LPVOID x, LPVOID y)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.172]
|
||||
*
|
||||
* _IUnknown_GetWindow
|
||||
* Get the window handle of an object.
|
||||
*
|
||||
* Get window handle of OLE object
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object to get the window handle of
|
||||
* lphWnd [O] Destination for window handle
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK. lphWnd contains the objects window handle.
|
||||
* Failure: An HRESULT error code.
|
||||
*
|
||||
* NOTES
|
||||
* lpUnknown is expected to support one of the following interfaces:
|
||||
* IOleWindow
|
||||
* IInternetSecurityMgrSite
|
||||
* IShellView
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_172 (
|
||||
IUnknown *pUnk, /* [in] OLE object interface */
|
||||
LPHWND hWnd) /* [out] location to put window handle */
|
||||
HRESULT WINAPI SHLWAPI_172(IUnknown *lpUnknown, LPHWND lphWnd)
|
||||
{
|
||||
DWORD ret = E_FAIL;
|
||||
IOleWindow *pOleWnd;
|
||||
/* FIXME: Wine has no header for this object */
|
||||
static const GUID IID_IInternetSecurityMgrSite = { 0x79eac9ed,
|
||||
0xbaf9, 0x11ce, { 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b }};
|
||||
IUnknown *lpOle;
|
||||
HRESULT hRet = E_FAIL;
|
||||
|
||||
TRACE("(%p %p)\n",pUnk,hWnd);
|
||||
TRACE("(%p,%p)\n", lpUnknown, lphWnd);
|
||||
|
||||
if (pUnk) {
|
||||
ret = IUnknown_QueryInterface(pUnk, &IID_IOleWindow,(LPVOID *)&pOleWnd);
|
||||
if (SUCCEEDED(ret)) {
|
||||
ret = IOleWindow_GetWindow(pOleWnd, hWnd);
|
||||
IOleWindow_Release(pOleWnd);
|
||||
TRACE("result hwnd=%08x\n", *hWnd);
|
||||
}
|
||||
}
|
||||
if (!lpUnknown)
|
||||
return hRet;
|
||||
|
||||
return ret;
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IOleWindow, (void**)&lpOle);
|
||||
|
||||
if (FAILED(hRet))
|
||||
{
|
||||
hRet = IUnknown_QueryInterface(lpUnknown,&IID_IShellView, (void**)&lpOle);
|
||||
|
||||
if (FAILED(hRet))
|
||||
{
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IInternetSecurityMgrSite,
|
||||
(void**)&lpOle);
|
||||
}
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
/* Lazyness here - Since GetWindow() is the first method for the above 3
|
||||
* interfaces, we use the same call for them all.
|
||||
*/
|
||||
hRet = IOleWindow_GetWindow((IOleWindow*)lpOle, lphWnd);
|
||||
IUnknown_Release(lpOle);
|
||||
if (lphWnd)
|
||||
TRACE("Returning HWND=%08x\n", *lphWnd);
|
||||
}
|
||||
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1203,54 +1440,101 @@ DWORD WINAPI SHLWAPI_174(
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.175]
|
||||
*
|
||||
* NOTE:
|
||||
* Param1 can be an IShellFolder Object
|
||||
* Call IPersist::GetClassID on an object.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object supporting the IPersist interface
|
||||
* lpClassId [O] Destination for Class Id
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK. lpClassId contains the Class Id requested.
|
||||
* Failure: E_FAIL, If lpUnknown is NULL,
|
||||
* E_NOINTERFACE If lpUnknown does not support IPersist,
|
||||
* Or an HRESULT error code.
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_175 (LPVOID x, LPVOID y)
|
||||
HRESULT WINAPI SHLWAPI_175 (IUnknown *lpUnknown, CLSID* lpClassId)
|
||||
{
|
||||
FIXME("(%p %p) stub\n", x,y);
|
||||
return E_FAIL;
|
||||
IPersist* lpPersist;
|
||||
HRESULT hRet = E_FAIL;
|
||||
|
||||
TRACE("(%p,%p)\n", lpUnknown, debugstr_guid(lpClassId));
|
||||
|
||||
if (lpUnknown)
|
||||
{
|
||||
hRet = IUnknown_QueryInterface(lpUnknown,&IID_IPersist,(void**)&lpPersist);
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
IPersist_GetClassID(lpPersist, lpClassId);
|
||||
IPersist_Release(lpPersist);
|
||||
}
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.176]
|
||||
*
|
||||
* _IUnknown_QueryService
|
||||
* Retrieve a Service Interface from an object.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object to get an IServiceProvider interface from
|
||||
* sid [I] Service ID for QueryService call
|
||||
* riid [I] Function requested for QueryService call
|
||||
* lppOut [O] Destination for the service interface pointer
|
||||
*
|
||||
* Function appears to be interface to IServiceProvider::QueryService
|
||||
*
|
||||
* NOTE:
|
||||
* returns E_NOINTERFACE
|
||||
* E_FAIL if w == 0
|
||||
* S_OK if _219 called successfully
|
||||
* RETURNS
|
||||
* Success: S_OK. lppOut contains an object providing the requested service
|
||||
* Failure: An HRESULT error code
|
||||
*
|
||||
* NOTES
|
||||
* lpUnknown is expected to support the IServiceProvider interface.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_176 (
|
||||
IUnknown* unk, /* [in] object to give Service Provider */
|
||||
REFGUID sid, /* [in] Service ID */
|
||||
REFIID riid, /* [in] Function requested */
|
||||
LPVOID *ppv) /* [out] place to save interface pointer */
|
||||
HRESULT WINAPI SHLWAPI_176(IUnknown* lpUnknown, REFGUID sid, REFIID riid,
|
||||
LPVOID *lppOut)
|
||||
{
|
||||
HRESULT ret = E_FAIL;
|
||||
IServiceProvider *pSP;
|
||||
*ppv = 0;
|
||||
IServiceProvider* pService = NULL;
|
||||
HRESULT hRet;
|
||||
|
||||
TRACE("%p, %s, %s, %p\n", unk, debugstr_guid(sid), debugstr_guid(riid), ppv);
|
||||
if (!lppOut)
|
||||
return E_FAIL;
|
||||
|
||||
if (unk) {
|
||||
ret = IUnknown_QueryInterface(unk, &IID_IServiceProvider,(LPVOID*) &pSP);
|
||||
TRACE("did IU_QI retval=%08lx, aa=%p\n", ret, pSP);
|
||||
if (SUCCEEDED(ret)) {
|
||||
ret = IServiceProvider_QueryService(pSP, sid, riid, (LPVOID*)ppv);
|
||||
TRACE("did ISP_QS retval=%08lx, *z=%p\n", ret, *ppv);
|
||||
IServiceProvider_Release(pSP);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
*lppOut = NULL;
|
||||
|
||||
if (!lpUnknown)
|
||||
return E_FAIL;
|
||||
|
||||
/* Get an IServiceProvider interface from the object */
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IServiceProvider,
|
||||
(LPVOID*)&pService);
|
||||
|
||||
if (!hRet && pService)
|
||||
{
|
||||
TRACE("QueryInterface returned (IServiceProvider*)%p\n", pService);
|
||||
|
||||
/* Get a Service interface from the object */
|
||||
hRet = IServiceProvider_QueryService(pService, sid, riid, lppOut);
|
||||
|
||||
TRACE("(IServiceProvider*)%p returned (IUnknown*)%p\n", pService, *lppOut);
|
||||
|
||||
/* Release the IServiceProvider interface */
|
||||
IUnknown_Release(pService);
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.180]
|
||||
*
|
||||
* Remove all sub-menus from a menu.
|
||||
* Remove all sub-menus from a menu.
|
||||
*
|
||||
* PARAMS
|
||||
* hMenu [I] Menu to remove sub-menus from
|
||||
*
|
||||
* RETURNS
|
||||
* Success: 0. All sub-menus under hMenu are removed
|
||||
* Failure: -1, if any parameter is invalid
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_180(HMENU hMenu)
|
||||
{
|
||||
|
@ -1268,17 +1552,49 @@ DWORD WINAPI SHLWAPI_180(HMENU hMenu)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.181]
|
||||
*
|
||||
* Enable or disable a menu item.
|
||||
* Enable or disable a menu item.
|
||||
*
|
||||
* PARAMS
|
||||
* hMenu [I] Menu holding menu item
|
||||
* uID [I] ID of menu item to enable/disable
|
||||
* bEnable [I] Whether to enable (TRUE) or disable (FALSE) the item.
|
||||
*
|
||||
* RETURNS
|
||||
* The return code from CheckMenuItem.
|
||||
*/
|
||||
UINT WINAPI SHLWAPI_181(HMENU hMenu, UINT wItemID, BOOL bEnable)
|
||||
{
|
||||
return EnableMenuItem(hMenu, wItemID, bEnable ? MF_ENABLED : MF_GRAYED);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.182]
|
||||
*
|
||||
* Check or uncheck a menu item.
|
||||
*
|
||||
* PARAMS
|
||||
* hMenu [I] Menu holding menu item
|
||||
* uID [I] ID of menu item to check/uncheck
|
||||
* bCheck [I] Whether to check (TRUE) or uncheck (FALSE) the item.
|
||||
*
|
||||
* RETURNS
|
||||
* The return code from CheckMenuItem.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_182(HMENU hMenu, UINT uID, BOOL bCheck)
|
||||
{
|
||||
return CheckMenuItem(hMenu, uID, bCheck ? MF_CHECKED : 0);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.183]
|
||||
*
|
||||
* Register a window class if it isn't already.
|
||||
*
|
||||
* PARAMS
|
||||
* lpWndClass [I] Window class to register
|
||||
*
|
||||
* RETURNS
|
||||
* The result of the RegisterClassA call.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_183(WNDCLASSA *wndclass)
|
||||
{
|
||||
|
@ -1288,6 +1604,39 @@ DWORD WINAPI SHLWAPI_183(WNDCLASSA *wndclass)
|
|||
return (DWORD)RegisterClassA(wndclass);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.187]
|
||||
*
|
||||
* Call IPersistPropertyBag::Load on an object.
|
||||
*
|
||||
* PARAMS
|
||||
* lpUnknown [I] Object supporting the IPersistPropertyBag interface
|
||||
* lpPropBag [O] Destination for loaded IPropertyBag
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK.
|
||||
* Failure: An HRESULT error code, or E_FAIL if lpUnknown is NULL.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_187(IUnknown *lpUnknown, IPropertyBag* lpPropBag)
|
||||
{
|
||||
IPersistPropertyBag* lpPPBag;
|
||||
HRESULT hRet = E_FAIL;
|
||||
|
||||
TRACE("(%p,%p)\n", lpUnknown, lpPropBag);
|
||||
|
||||
if (lpUnknown)
|
||||
{
|
||||
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IPersistPropertyBag,
|
||||
(void**)&lpPPBag);
|
||||
if (SUCCEEDED(hRet) && lpPPBag)
|
||||
{
|
||||
hRet = IPersistPropertyBag_Load(lpPPBag, lpPropBag, NULL);
|
||||
IPersistPropertyBag_Release(lpPPBag);
|
||||
}
|
||||
}
|
||||
return hRet;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.189]
|
||||
*
|
||||
|
@ -1301,6 +1650,14 @@ DWORD WINAPI SHLWAPI_189(LPVOID x, LPVOID y)
|
|||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.193]
|
||||
*
|
||||
* Get the color depth of the primary display.
|
||||
*
|
||||
* PARAMS
|
||||
* None.
|
||||
*
|
||||
* RETURNS
|
||||
* The color depth of the primary display.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_193 ()
|
||||
{
|
||||
|
@ -1319,6 +1676,14 @@ DWORD WINAPI SHLWAPI_193 ()
|
|||
* @ [SHLWAPI.197]
|
||||
*
|
||||
* Blank out a region of text by drawing the background only.
|
||||
*
|
||||
* PARAMS
|
||||
* hDC [I] Device context to draw in
|
||||
* pRect [I] Area to draw in
|
||||
* cRef [I] Color to draw in
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_197(HDC hDC, LPCRECT pRect, COLORREF cRef)
|
||||
{
|
||||
|
@ -1332,21 +1697,59 @@ DWORD WINAPI SHLWAPI_197(HDC hDC, LPCRECT pRect, COLORREF cRef)
|
|||
* @ [SHLWAPI.199]
|
||||
*
|
||||
* Copy interface pointer
|
||||
*
|
||||
* PARAMS
|
||||
* lppDest [O] Destination for copy
|
||||
* lpUnknown [I] Source for copy
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_199 (
|
||||
IUnknown **dest, /* [out] pointer to copy of interface ptr */
|
||||
IUnknown *src) /* [in] interface pointer */
|
||||
VOID WINAPI SHLWAPI_199(IUnknown **lppDest, IUnknown *lpUnknown)
|
||||
{
|
||||
TRACE("(%p %p)\n",dest,src);
|
||||
if (*dest != src) {
|
||||
if (*dest)
|
||||
IUnknown_Release(*dest);
|
||||
if (src) {
|
||||
IUnknown_AddRef(src);
|
||||
*dest = src;
|
||||
}
|
||||
}
|
||||
return 4;
|
||||
TRACE("(%p,%p)\n", lppDest, lpUnknown);
|
||||
|
||||
if (lppDest)
|
||||
SHLWAPI_169(lppDest); /* Release existing interface */
|
||||
|
||||
if (lpUnknown)
|
||||
{
|
||||
/* Copy */
|
||||
IUnknown_AddRef(lpUnknown);
|
||||
*lppDest = lpUnknown;
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.201]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_201(IUnknown* lpUnknown, INT iUnk, REFGUID pguidCmdGroup,
|
||||
DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn,
|
||||
VARIANT* pvaOut)
|
||||
{
|
||||
FIXME("(%p,%d,%p,%ld,%ld,%p,%p) - stub!\n", lpUnknown, iUnk, pguidCmdGroup,
|
||||
nCmdID, nCmdexecopt, pvaIn, pvaOut);
|
||||
return DRAGDROP_E_NOTREGISTERED;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.202]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHLWAPI_202(REFGUID pguidCmdGroup,ULONG cCmds, OLECMD *prgCmds)
|
||||
{
|
||||
FIXME("(%p,%ld,%p) - stub!\n", pguidCmdGroup, cCmds, prgCmds);
|
||||
return DRAGDROP_E_NOTREGISTERED;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.203]
|
||||
*
|
||||
*/
|
||||
VOID WINAPI SHLWAPI_203(LPCSTR lpszStr)
|
||||
{
|
||||
FIXME("(%s) - stub!\n", debugstr_a(lpszStr));
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1670,7 +2073,16 @@ DWORD WINAPI SHLWAPI_239(HINSTANCE hInstance, LPVOID p2, DWORD dw3)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.240]
|
||||
*
|
||||
* Calls ASCII or Unicode WindowProc for the given window.
|
||||
* Call The correct (ASCII/Unicode) default window procedure for a window.
|
||||
*
|
||||
* PARAMS
|
||||
* hWnd [I] Window to call the default proceedure for
|
||||
* uMessage [I] Message ID
|
||||
* wParam [I] WPARAM of message
|
||||
* lParam [I] LPARAM of message
|
||||
*
|
||||
* RETURNS
|
||||
* The result of calling the window proceedure.
|
||||
*/
|
||||
LRESULT CALLBACK SHLWAPI_240(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
|
@ -1738,42 +2150,84 @@ HRESULT WINAPI SHLWAPI_267 (
|
|||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.268]
|
||||
* NOTES
|
||||
* pInner is returned by SHLWAPI_267 as ppv
|
||||
*
|
||||
* Move a reference from one interface to another.
|
||||
*
|
||||
* PARAMS
|
||||
* lpDest [O] Destination to receive the reference
|
||||
* lppUnknown [O] Source to give up the reference to lpDest
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_268 (
|
||||
IUnknown * pUnk,
|
||||
IUnknown ** pInner)
|
||||
VOID WINAPI SHLWAPI_268(IUnknown *lpDest, IUnknown **lppUnknown)
|
||||
{
|
||||
DWORD ret = 0;
|
||||
TRACE("(%p,%p)\n", lpDest, lppUnknown);
|
||||
|
||||
TRACE("(pUnk=%p pInner=%p)\n",pUnk,pInner);
|
||||
|
||||
IUnknown_AddRef(pUnk);
|
||||
if (pInner && *pInner) {
|
||||
ret = IUnknown_Release(*pInner);
|
||||
*pInner = NULL;
|
||||
}
|
||||
TRACE("-- count=%lu\n",ret);
|
||||
return ret;
|
||||
if (*lppUnknown)
|
||||
{
|
||||
/* Copy Reference*/
|
||||
IUnknown_AddRef(lpDest);
|
||||
SHLWAPI_169(lppUnknown); /* Release existing interface */
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* @ [SHLWAPI.276]
|
||||
*
|
||||
* on first call process does following: other calls just returns 2
|
||||
* instance = LoadLibraryA("SHELL32.DLL");
|
||||
* func = GetProcAddress(instance, "DllGetVersion");
|
||||
* ret = RegOpenKeyExA(80000002, "Software\\Microsoft\\Internet Explorer",00000000,0002001f, newkey);
|
||||
* ret = RegQueryValueExA(newkey, "IntegratedBrowser",00000000,00000000,4052588c,40525890);
|
||||
* RegCloseKey(newkey);
|
||||
* FreeLibrary(instance);
|
||||
* return 2;
|
||||
* Determine if the browser is integrated into the shell, and set a registry
|
||||
* key accordingly.
|
||||
*
|
||||
* PARAMS
|
||||
* None.
|
||||
*
|
||||
* RETURNS
|
||||
* 1, If the browser is not integrated.
|
||||
* 2, If the browser is integrated.
|
||||
*
|
||||
* NOTES
|
||||
* The key HKLM\Software\Microsoft\Internet Explorer\IntegratedBrowser is
|
||||
* either set to TRUE, or removed depending on whether the browser is deemed
|
||||
* to be integrated.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_276 ()
|
||||
DWORD WINAPI SHLWAPI_276()
|
||||
{
|
||||
FIXME("()stub\n");
|
||||
return /* 0xabba1244 */ 2;
|
||||
static LPCSTR szIntegratedBrowser = "IntegratedBrowser";
|
||||
static DWORD dwState = 0;
|
||||
HKEY hKey;
|
||||
DWORD dwRet, dwData, dwSize;
|
||||
|
||||
if (dwState)
|
||||
return dwState;
|
||||
|
||||
/* If shell32 exports DllGetVersion(), the browser is integrated */
|
||||
GET_FUNC(pDllGetVersion, shell32, "DllGetVersion", 1);
|
||||
dwState = pDllGetVersion ? 2 : 1;
|
||||
|
||||
/* Set or delete the key accordinly */
|
||||
dwRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
|
||||
"Software\\Microsoft\\Internet Explorer", 0,
|
||||
KEY_ALL_ACCESS, &hKey);
|
||||
if (!dwRet)
|
||||
{
|
||||
dwRet = RegQueryValueExA(hKey, szIntegratedBrowser, 0, 0,
|
||||
(LPBYTE)&dwData, &dwSize);
|
||||
|
||||
if (!dwRet && dwState == 1)
|
||||
{
|
||||
/* Value exists but browser is not integrated */
|
||||
RegDeleteValueA(hKey, szIntegratedBrowser);
|
||||
}
|
||||
else if (dwRet && dwState == 2)
|
||||
{
|
||||
/* Browser is integrated but value does not exist */
|
||||
dwData = TRUE;
|
||||
RegSetValueExA(hKey, szIntegratedBrowser, 0, REG_DWORD,
|
||||
(LPBYTE)&dwData, sizeof(dwData));
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
return dwState;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -2450,19 +2904,19 @@ DWORD WINAPI SHLWAPI_436 (LPWSTR idstr, CLSID *id)
|
|||
/*************************************************************************
|
||||
* @ [SHLWAPI.437]
|
||||
*
|
||||
* NOTES
|
||||
* In the real shlwapi, One time initialisation calls GetVersionEx and reads
|
||||
* the registry to determine what O/S & Service Pack level is running, and
|
||||
* therefore which functions are available. Currently we always run as NT,
|
||||
* since this means that we don't need extra code to emulate Unicode calls,
|
||||
* they are forwarded directly to the appropriate API call instead.
|
||||
* Since the flags for whether to call or emulate Unicode are internal to
|
||||
* the dll, this function does not need a full implementation.
|
||||
* Determine if the OS supports a given feature.
|
||||
*
|
||||
* PARAMS
|
||||
* dwFeature [I] Feature requested (undocumented)
|
||||
*
|
||||
* RETURNS
|
||||
* TRUE If the feature is available.
|
||||
* FALSE If the feature is not available.
|
||||
*/
|
||||
DWORD WINAPI SHLWAPI_437 (DWORD functionToCall)
|
||||
DWORD WINAPI SHLWAPI_437 (DWORD feature)
|
||||
{
|
||||
FIXME("(0x%08lx)stub\n", functionToCall);
|
||||
return /* 0xabba1247 */ 0;
|
||||
FIXME("(0x%08lx) stub\n", feature);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -2529,3 +2983,41 @@ INT WINAPI GetMenuPosFromID(HMENU hMenu, UINT wID)
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHSkipJunction [SHLWAPI.@]
|
||||
*
|
||||
* Determine if a bind context can be bound to an object
|
||||
*
|
||||
* PARAMS
|
||||
* pbc [I] Bind context to check
|
||||
* pclsid [I] CLSID of object to be bound to
|
||||
*
|
||||
* RETURNS
|
||||
* TRUE: If it is safe to bind
|
||||
* FALSE: If pbc is invalid or binding would not be safe
|
||||
*
|
||||
*/
|
||||
BOOL WINAPI SHSkipJunction(IBindCtx *pbc, const CLSID *pclsid)
|
||||
{
|
||||
static WCHAR szSkipBinding[] = { 'S','k','i','p',' ',
|
||||
'B','i','n','d','i','n','g',' ','C','L','S','I','D','\0' };
|
||||
BOOL bRet = FALSE;
|
||||
|
||||
if (pbc)
|
||||
{
|
||||
IUnknown* lpUnk;
|
||||
|
||||
if (SUCCEEDED(IBindCtx_GetObjectParam(pbc, szSkipBinding, &lpUnk)))
|
||||
{
|
||||
CLSID clsid;
|
||||
|
||||
if (SUCCEEDED(SHLWAPI_175(lpUnk, &clsid)) &&
|
||||
IsEqualGUID(pclsid, &clsid))
|
||||
bRet = TRUE;
|
||||
|
||||
IUnknown_Release(lpUnk);
|
||||
}
|
||||
}
|
||||
return bRet;
|
||||
}
|
||||
|
|
|
@ -162,12 +162,12 @@ init SHLWAPI_LibMain
|
|||
160 stub @
|
||||
161 stub @
|
||||
162 stdcall @(str long) SHLWAPI_162
|
||||
163 stdcall @(ptr ptr ptr ptr ptr) SHLWAPI_163
|
||||
164 stdcall @(ptr ptr ptr ptr ptr ptr) SHLWAPI_164
|
||||
163 stdcall @(ptr ptr long ptr ptr) SHLWAPI_163
|
||||
164 stdcall @(ptr ptr long long ptr ptr) SHLWAPI_164
|
||||
165 stdcall @(long long long long) SHLWAPI_165
|
||||
166 stdcall @(ptr) SHLWAPI_166
|
||||
167 stdcall @(long ptr) SHLWAPI_167
|
||||
168 stub @
|
||||
168 stdcall @(ptr ptr long ptr ptr ptr) SHLWAPI_168
|
||||
169 stdcall @(long) SHLWAPI_169
|
||||
170 stdcall @(str) SHLWAPI_170
|
||||
171 stdcall @(ptr ptr) SHLWAPI_171
|
||||
|
@ -181,12 +181,12 @@ init SHLWAPI_LibMain
|
|||
179 stub @
|
||||
180 stdcall @(long) SHLWAPI_180
|
||||
181 stdcall @(long long long) SHLWAPI_181
|
||||
182 stub @
|
||||
182 stdcall @(long long long) SHLWAPI_182
|
||||
183 stdcall @(ptr) SHLWAPI_183
|
||||
184 stdcall @(ptr ptr long) SHLWAPI_184
|
||||
185 stub @
|
||||
186 stub @
|
||||
187 stub @
|
||||
187 stdcall @(ptr ptr) SHLWAPI_187
|
||||
188 stub @
|
||||
189 stdcall @(ptr ptr) SHLWAPI_189
|
||||
190 stub @
|
||||
|
@ -200,9 +200,9 @@ init SHLWAPI_LibMain
|
|||
198 stub @
|
||||
199 stdcall @(ptr ptr) SHLWAPI_199
|
||||
200 stub @
|
||||
201 stub @
|
||||
202 stub @
|
||||
203 stub @
|
||||
201 stdcall @(ptr long ptr long long ptr ptr) SHLWAPI_201
|
||||
202 stdcall @(ptr long ptr) SHLWAPI_202
|
||||
203 stdcall @(str) SHLWAPI_203
|
||||
204 stdcall @(long long) SHLWAPI_204
|
||||
205 stdcall @(long str str ptr ptr ptr) SHLWAPI_205
|
||||
206 stdcall @(long wstr wstr ptr ptr ptr) SHLWAPI_206
|
||||
|
@ -719,7 +719,7 @@ init SHLWAPI_LibMain
|
|||
@ stub SHRegisterValidateTemplate
|
||||
@ stdcall SHSetThreadRef (ptr) SHSetThreadRef
|
||||
@ stdcall SHReleaseThreadRef() SHReleaseThreadRef
|
||||
@ stub SHSkipJunction
|
||||
@ stdcall SHSkipJunction(ptr ptr) SHSkipJunction
|
||||
@ stdcall SHStrDupA (str ptr) SHStrDupA
|
||||
@ stdcall SHStrDupW (wstr ptr) SHStrDupW
|
||||
@ stub StrFormatByteSize64A
|
||||
|
|
Loading…
Reference in a new issue