shell32: Document the shell32 "mini-COM" functions.

This commit is contained in:
Mikołaj Zalewski 2006-09-08 21:11:01 +02:00 committed by Alexandre Julliard
parent 6286c4e70d
commit 8fcc0bdf78
2 changed files with 93 additions and 12 deletions

View File

@ -78,12 +78,6 @@ static const struct {
{NULL,NULL}
};
/*************************************************************************
* SHCoCreateInstance [SHELL32.102]
*
* NOTES
* exported by ordinal
*/
/* FIXME: this should be SHLWAPI.24 since we can't yet import by ordinal */
@ -103,8 +97,22 @@ DWORD WINAPI __SHGUIDToStringW (REFGUID guid, LPWSTR str)
}
/************************************************************************/
/*************************************************************************
* SHCoCreateInstance [SHELL32.102]
*
* Equivalent to CoCreateInstance. Under Windows 9x this function could sometimes
* use the shell32 built-in "mini-COM" without the need to load ole32.dll - see
* SHLoadOLE for details.
*
* Under wine if a "LoadWithoutCOM" value is present or the object resides in
* shell32.dll the function will load the object manually without the help of ole32
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* CoCreateInstace, SHLoadOLE
*/
HRESULT WINAPI SHCoCreateInstance(
LPCWSTR aclsid,
const CLSID *clsid,
@ -253,8 +261,16 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
/*************************************************************************
* SHCLSIDFromString [SHELL32.147]
*
* Under Windows 9x this was an ANSI version of CLSIDFromString. It also allowed
* to avoid dependency on ole32.dll (see SHLoadOLE for details).
*
* Under Windows NT/2000/XP this is equivalent to CLSIDFromString
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* CLSIDFromString, SHLoadOLE
*/
DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id)
{
@ -405,7 +421,9 @@ static const IMallocVtbl VT_Shell_IMalloc32 =
/*************************************************************************
* SHGetMalloc [SHELL32.@]
*
* Return the shell IMalloc interface.
* Equivalent to CoGetMalloc(MEMCTX_TASK, ...). Under Windows 9x this function
* could use the shell32 built-in "mini-COM" without the need to load ole32.dll -
* see SHLoadOLE for details.
*
* PARAMS
* lpmal [O] Destination for IMalloc interface.
@ -415,8 +433,12 @@ static const IMallocVtbl VT_Shell_IMalloc32 =
* Failure. An HRESULT error code.
*
* NOTES
* This function will use CoGetMalloc() if OLE32.DLL is already loaded.
* If not it uses an internal implementation as a fallback.
* wine contains an implementation of an allocator to use when ole32.dll is not
* loaded but it is never used as ole32 is imported by shlwapi which is imported by
* shell32
*
* SEE ALSO
* CoGetMalloc, SHLoadOLE
*/
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
{
@ -446,8 +468,15 @@ HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
/*************************************************************************
* SHAlloc [SHELL32.196]
*
* Equivalent to CoTaskMemAlloc. Under Windows 9x this function could use
* the shell32 built-in "mini-COM" without the need to load ole32.dll -
* see SHLoadOLE for details.
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* CoTaskMemAlloc, SHLoadOLE
*/
LPVOID WINAPI SHAlloc(DWORD len)
{
@ -464,8 +493,15 @@ LPVOID WINAPI SHAlloc(DWORD len)
/*************************************************************************
* SHFree [SHELL32.195]
*
* Equivalent to CoTaskMemFree. Under Windows 9x this function could use
* the shell32 built-in "mini-COM" without the need to load ole32.dll -
* see SHLoadOLE for details.
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* CoTaskMemFree, SHLoadOLE
*/
void WINAPI SHFree(LPVOID pv)
{

View File

@ -438,8 +438,15 @@ int WINAPIV ShellMessageBoxA(
/*************************************************************************
* SHRegisterDragDrop [SHELL32.86]
*
* Probably equivalent to RegisterDragDrop but under Windows 9x it could use the
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
* for details
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* RegisterDragDrop, SHLoadOLE
*/
HRESULT WINAPI SHRegisterDragDrop(
HWND hWnd,
@ -452,8 +459,15 @@ HRESULT WINAPI SHRegisterDragDrop(
/*************************************************************************
* SHRevokeDragDrop [SHELL32.87]
*
* Probably equivalent to RevokeDragDrop but under Windows 9x it could use the
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
* for details
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* RevokeDragDrop, SHLoadOLE
*/
HRESULT WINAPI SHRevokeDragDrop(HWND hWnd)
{
@ -464,8 +478,15 @@ HRESULT WINAPI SHRevokeDragDrop(HWND hWnd)
/*************************************************************************
* SHDoDragDrop [SHELL32.88]
*
* Probably equivalent to DoDragDrop but under Windows 9x it could use the
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
* for details
*
* NOTES
* exported by ordinal
*
* SEE ALSO
* DoDragDrop, SHLoadOLE
*/
HRESULT WINAPI SHDoDragDrop(
HWND hWnd,
@ -1054,12 +1075,20 @@ HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown)
/*************************************************************************
* SHFreeUnusedLibraries [SHELL32.123]
*
* Probably equivalent to CoFreeUnusedLibraries but under Windows 9x it could use
* the shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
* for details
*
* NOTES
* exported by name
* exported by ordinal
*
* SEE ALSO
* CoFreeUnusedLibraries, SHLoadOLE
*/
void WINAPI SHFreeUnusedLibraries (void)
{
FIXME("stub\n");
CoFreeUnusedLibraries();
}
/*************************************************************************
* DAD_AutoScroll [SHELL32.129]
@ -1284,9 +1313,25 @@ HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v)
{ FIXME("hwnd=%p 0x%04lx stub\n",u,v );
return 0;
}
/*************************************************************************
* SHLoadOLE [SHELL32.151]
*
* To reduce the memory usage of Windows 95 it's shell32 contained an
* internal implementation of a part of COM (see e.g. SHGetMalloc, SHCoCreateInstance,
* SHRegisterDragDrop etc.) that allowed to use in-process STA objects without
* the need to load OLE32.DLL. If OLE32.DLL was already loaded, the SH* function
* would just call the Co* functions.
*
* The SHLoadOLE was called when OLE32.DLL was being loaded to transfer all the
* informations from the shell32 "mini-COM" to ole32.dll.
*
* See http://blogs.msdn.com/oldnewthing/archive/2004/07/05/173226.aspx for a
* detailed description.
*
* Under wine ole32.dll is always loaded as it is imported by shlwapi.dll which is
* imported by shell32 and no "mini-COM" is used (except for the "LoadWithoutCOM"
* hack in SHCoCreateInstance)
*/
HRESULT WINAPI SHLoadOLE(LPARAM lParam)
{ FIXME("0x%04lx stub\n",lParam);