|
|
//
// Debug dump functions for common ADTs
//
// This file should be #included by your DLL. It is not part of
// stocklib.lib because it requires linking to certain guid libs,
// and DLLs like COMCTL32 do not do this. (Therefore, COMCTL32
// doesn't #include this file, but still links to stocklib.)
//
//
#include <intshcut.h> // For error values
#include <sherror.h>
#include <strsafe.h>
#ifdef DEBUG
/*
* macro for simplifying result to string translation, assumes result string * pointer pcsz */
#define STRING_CASE(val) case val: pcsz = TEXT(#val); break
//
// Debug value-to-string mapping functions
//
/*----------------------------------------------------------
Purpose: Return the string form of the clipboard format.
Returns: pointer to a static string Cond: -- */ LPCTSTR Dbg_GetCFName( UINT ucf) { LPCTSTR pcsz; static TCHAR s_szCFName[MAX_PATH];
switch (ucf) { STRING_CASE(CF_TEXT); STRING_CASE(CF_BITMAP); STRING_CASE(CF_METAFILEPICT); STRING_CASE(CF_SYLK); STRING_CASE(CF_DIF); STRING_CASE(CF_TIFF); STRING_CASE(CF_OEMTEXT); STRING_CASE(CF_DIB); STRING_CASE(CF_PALETTE); STRING_CASE(CF_PENDATA); STRING_CASE(CF_RIFF); STRING_CASE(CF_WAVE); STRING_CASE(CF_UNICODETEXT); STRING_CASE(CF_ENHMETAFILE); STRING_CASE(CF_HDROP); STRING_CASE(CF_LOCALE); STRING_CASE(CF_MAX); STRING_CASE(CF_OWNERDISPLAY); STRING_CASE(CF_DSPTEXT); STRING_CASE(CF_DSPBITMAP); STRING_CASE(CF_DSPMETAFILEPICT); STRING_CASE(CF_DSPENHMETAFILE);
default: if (! GetClipboardFormatName(ucf, s_szCFName, SIZECHARS(s_szCFName))) StringCchCopy(s_szCFName, ARRAYSIZE(s_szCFName), TEXT("UNKNOWN CLIPBOARD FORMAT")); pcsz = s_szCFName; break; }
ASSERT(pcsz);
return(pcsz); }
LPCTSTR Dbg_GetHRESULTName( HRESULT hr) { LPCTSTR pcsz; static TCHAR s_rgchHRESULT[] = TEXT("0x12345678");
switch (hr) { STRING_CASE(S_OK); STRING_CASE(S_FALSE);
STRING_CASE(DRAGDROP_S_CANCEL); STRING_CASE(DRAGDROP_S_DROP); STRING_CASE(DRAGDROP_S_USEDEFAULTCURSORS);
STRING_CASE(E_UNEXPECTED); STRING_CASE(E_NOTIMPL); STRING_CASE(E_OUTOFMEMORY); STRING_CASE(E_INVALIDARG); STRING_CASE(E_NOINTERFACE); STRING_CASE(E_POINTER); STRING_CASE(E_HANDLE); STRING_CASE(E_ABORT); STRING_CASE(E_FAIL); STRING_CASE(E_ACCESSDENIED);
STRING_CASE(CLASS_E_NOAGGREGATION);
STRING_CASE(CO_E_NOTINITIALIZED); STRING_CASE(CO_E_ALREADYINITIALIZED); STRING_CASE(CO_E_INIT_ONLY_SINGLE_THREADED);
STRING_CASE(DV_E_DVASPECT); STRING_CASE(DV_E_LINDEX); STRING_CASE(DV_E_TYMED); STRING_CASE(DV_E_FORMATETC);
STRING_CASE(E_FLAGS);
STRING_CASE(URL_E_INVALID_SYNTAX); STRING_CASE(URL_E_UNREGISTERED_PROTOCOL);
STRING_CASE(IS_E_EXEC_FAILED);
STRING_CASE(E_FILE_NOT_FOUND); STRING_CASE(E_PATH_NOT_FOUND);
default: StringCchPrintf(s_rgchHRESULT, ARRAYSIZE(s_rgchHRESULT), TEXT("%#lx"), hr); pcsz = s_rgchHRESULT; break; }
ASSERT(IS_VALID_STRING_PTR(pcsz, -1));
return(pcsz); }
/*----------------------------------------------------------
Purpose: Dump propvariant types
Returns: Cond: -- */ LPCTSTR Dbg_GetVTName( VARTYPE vt) { LPCTSTR pcsz; static TCHAR s_szT[] = TEXT("0x12345678");
switch (vt) { STRING_CASE(VT_EMPTY); STRING_CASE(VT_NULL); STRING_CASE(VT_I2); STRING_CASE(VT_I4); STRING_CASE(VT_R4); STRING_CASE(VT_R8); STRING_CASE(VT_CY); STRING_CASE(VT_DATE); STRING_CASE(VT_BSTR); STRING_CASE(VT_ERROR); STRING_CASE(VT_BOOL); STRING_CASE(VT_VARIANT); STRING_CASE(VT_UI1); STRING_CASE(VT_UI2); STRING_CASE(VT_UI4); STRING_CASE(VT_I8); STRING_CASE(VT_UI8); STRING_CASE(VT_LPSTR); STRING_CASE(VT_LPWSTR); STRING_CASE(VT_FILETIME); STRING_CASE(VT_BLOB); STRING_CASE(VT_STREAM); STRING_CASE(VT_STORAGE); STRING_CASE(VT_STREAMED_OBJECT); STRING_CASE(VT_STORED_OBJECT); STRING_CASE(VT_BLOB_OBJECT); STRING_CASE(VT_CLSID); STRING_CASE(VT_ILLEGAL); STRING_CASE(VT_CF);
default: StringCchPrintf(s_szT, ARRAYSIZE(s_szT), TEXT("%#lx"), vt); pcsz = s_szT; break; }
ASSERT(IS_VALID_STRING_PTR(pcsz, -1));
return(pcsz); }
#define STRING_RIID(val) { &val, TEXT(#val) }
//
// Alphabetical order, please.
//
struct { REFIID riid; LPCTSTR psz; } const c_mpriid[] = { #ifdef __IAddressList_INTERFACE_DEFINED__
STRING_RIID(IID_IAddressList), #endif
STRING_RIID(IID_IAdviseSink), #ifdef __IAddressList_INTERFACE_DEFINED__
STRING_RIID(IID_IAddressList), #endif
#ifdef __IAugmentedShellFolder_INTERFACE_DEFINED__
STRING_RIID(IID_IAugmentedShellFolder), #endif
#ifdef __IAugmentedShellFolder2_INTERFACE_DEFINED__
STRING_RIID(IID_IAugmentedShellFolder2), #endif
#ifdef __IAuthenticate_INTERFACE_DEFINED__
STRING_RIID(IID_IAuthenticate), #endif
#ifdef __IBandSiteHelper_INTERFACE_DEFINED__
STRING_RIID(IID_IBandSiteHelper), #endif
#ifdef __IBandProxy_INTERFACE_DEFINED__
STRING_RIID(IID_IBandProxy), #endif
#ifdef __IBindStatusCallback_INTERFACE_DEFINED__
STRING_RIID(IID_IBindStatusCallback), #endif
#ifdef __IBrowserBand_INTERFACE_DEFINED__
STRING_RIID(IID_IBrowserBand), #endif
#ifdef __IBrowserService_INTERFACE_DEFINED__
STRING_RIID(IID_IBrowserService), #endif
#ifdef __IBrowserService2_INTERFACE_DEFINED__
STRING_RIID(IID_IBrowserService2), #endif
STRING_RIID(IID_IConnectionPoint), #ifdef __IConnectionPointCB_INTERFACE_DEFINED__
STRING_RIID(IID_IConnectionPointCB), #endif
STRING_RIID(IID_IConnectionPointContainer), STRING_RIID(IID_IContextMenu), STRING_RIID(IID_IContextMenu2), #ifdef __IContextMenuCB_INTERFACE_DEFINED__
STRING_RIID(IID_IContextMenuCB), #endif
#ifdef __IContextMenuSire_INTERFACE_DEFINED__
STRING_RIID(IID_IContextMenuSite), #endif
STRING_RIID(IID_IDataObject), STRING_RIID(IID_IDeskBand), STRING_RIID(IID_IDispatch), #ifdef __IDocHostUIHandler_INTERFACE_DEFINED__
STRING_RIID(IID_IDocHostUIHandler), #endif
STRING_RIID(IID_IDockingWindowFrame), STRING_RIID(IID_IDockingWindow), STRING_RIID(IID_IDockingWindowSite), #ifdef __IDocNavigate_INTERFACE_DEFINED__
STRING_RIID(IID_IDocNavigate), #endif
STRING_RIID(IID_IDocViewSite), STRING_RIID(IID_IDropTarget), #ifdef __IDropTargetBackground_INTERFACE_DEFINED__
STRING_RIID(IID_IDropTargetBackground), #endif
#ifdef __IEFrameAuto_INTERFACE_DEFINED__
STRING_RIID(IID_IEFrameAuto), #endif
STRING_RIID(IID_IEnumUnknown), STRING_RIID(IID_IErrorInfo), #ifdef __IExpDispSupport_INTERFACE_DEFINED__
STRING_RIID(IID_IExpDispSupport), #endif
#ifdef __IExpDispSupportOC_INTERFACE_DEFINED__
STRING_RIID(IID_IExpDispSupportOC), #endif
#ifdef __IExplorerToolbar_INTERFACE_DEFINED__
STRING_RIID(IID_IExplorerToolbar), #endif
STRING_RIID(IID_IExtractIcon), STRING_RIID(IID_IExternalConnection), #ifdef __FavoriteMenu_INTERFACE_DEFINED__
STRING_RIID(IID_FavoriteMenu), #endif
#ifdef __IHistSFPrivate_INTERFACE_DEFINED__
STRING_RIID(IID_IHistSFPrivate), #endif
#ifdef __IHlink_INTERFACE_DEFINED__
STRING_RIID(IID_IHlink), #endif
#ifdef __IHlinkFrame_INTERFACE_DEFINED__
STRING_RIID(IID_IHlinkFrame), #endif
#ifdef __IHlinkSite_INTERFACE_DEFINED__
STRING_RIID(IID_IHlinkSite), #endif
#ifdef __IHlinkTarget_INTERFACE_DEFINED__
STRING_RIID(IID_IHlinkTarget), #endif
#ifdef __IHttpNegotiate_INTERFACE_DEFINED__
STRING_RIID(IID_IHttpNegotiate), #endif
#ifdef __IHttpSecurity_INTERFACE_DEFINED__
STRING_RIID(IID_IHttpSecurity), #endif
STRING_RIID(IID_IInputObject), STRING_RIID(IID_IInputObjectSite), #ifdef __IIsWebBrowserSB_INTERFACE_DEFINED__
STRING_RIID(IID_IIsWebBrowserSB), #endif
STRING_RIID(IID_IMenuBand), #ifdef __IMRU_INTERFACE_DEFINED__
STRING_RIID(IID_IMRU), #endif
#ifdef __INavigationStack_INTERFACE_DEFINED__
STRING_RIID(IID_INavigationStack), #endif
#ifdef __INavigationStackItem_INTERFACE_DEFINED__
STRING_RIID(IID_INavigationStackItem), #endif
STRING_RIID(IID_INewShortcutHook), #ifdef __IObjectCache_INTERFACE_DEFINED__
STRING_RIID(IID_IObjectCache), #endif
#ifdef __IObjectSafety_INTERFACE_DEFINED__
STRING_RIID(IID_IObjectSafety), #endif
STRING_RIID(IID_IOleClientSite), STRING_RIID(IID_IOleCommandTarget), STRING_RIID(IID_IOleContainer), STRING_RIID(IID_IOleControl), STRING_RIID(IID_IOleControlSite), STRING_RIID(IID_IOleDocument), STRING_RIID(IID_IOleDocumentSite), STRING_RIID(IID_IOleDocumentView), STRING_RIID(IID_IOleInPlaceActiveObject), STRING_RIID(IID_IOleInPlaceFrame), STRING_RIID(IID_IOleInPlaceSite), STRING_RIID(IID_IOleInPlaceObject), STRING_RIID(IID_IOleInPlaceUIWindow), STRING_RIID(IID_IOleObject), STRING_RIID(IID_IOleWindow), STRING_RIID(IID_IPersist), STRING_RIID(IID_IPersistFolder), #ifdef __IPersistMoniker_INTERFACE_DEFINED__
STRING_RIID(IID_IPersistMoniker), #endif
STRING_RIID(IID_IPersistPropertyBag), STRING_RIID(IID_IPersistStorage), STRING_RIID(IID_IPersistStream), STRING_RIID(IID_IPersistStreamInit), #ifdef __IPersistString_INTERFACE_DEFINED__
STRING_RIID(IID_IPersistString), #endif
STRING_RIID(IID_IProvideClassInfo), STRING_RIID(IID_IPropertyNotifySink), STRING_RIID(IID_IPropertySetStorage), STRING_RIID(IID_IPropertyStorage), #ifdef __IProxyShellFolder_INTERFACE_DEFINED__
STRING_RIID(IID_IProxyShellFolder), #endif
STRING_RIID(IID_IServiceProvider), #ifdef __ISetWinHandler_INTERFACE_DEFINED__
STRING_RIID(IID_ISetWinHandler), #endif
STRING_RIID(IID_IShellBrowser), STRING_RIID(IID_IShellChangeNotify), STRING_RIID(IID_IShellDetails), #ifdef __IShellDetails2_INTERFACE_DEFINED__
STRING_RIID(IID_IShellDetails2), #endif
STRING_RIID(IID_IShellExtInit), STRING_RIID(IID_IShellFolder), STRING_RIID(IID_IShellIcon), STRING_RIID(IID_IShellLink), STRING_RIID(IID_IShellLinkDataList), STRING_RIID(IID_IShellMenu), STRING_RIID(IID_IShellMenuCallback), STRING_RIID(IID_IShellPropSheetExt), #ifdef __IShellService_INTERFACE_DEFINED__
STRING_RIID(IID_IShellService), #endif
STRING_RIID(IID_IShellView), STRING_RIID(IID_IShellView2), #ifdef __ITargetEmbedding_INTERFACE_DEFINED__
STRING_RIID(IID_ITargetEmbedding), #endif
#ifdef __ITargetFrame2_INTERFACE_DEFINED__
STRING_RIID(IID_ITargetFrame2), #endif
#ifdef __ITargetFramePriv_INTERFACE_DEFINED__
STRING_RIID(IID_ITargetFramePriv), #endif
STRING_RIID(IID_ITravelEntry), STRING_RIID(IID_ITravelLog), STRING_RIID(IID_IUniformResourceLocator), STRING_RIID(IID_IUnknown), STRING_RIID(IID_IViewObject), STRING_RIID(IID_IViewObject2), STRING_RIID(IID_IWebBrowser), STRING_RIID(IID_IWebBrowser2), STRING_RIID(IID_IWebBrowserApp), #ifdef __IWinEventHandler_INTERFACE_DEFINED__
STRING_RIID(IID_IWinEventHandler), #endif
};
struct { IID iid; TCHAR szGuid[GUIDSTR_MAX]; } s_guid[50] = {0};
LPCTSTR Dbg_GetREFIIDName( REFIID riid) { int i;
// search the known list
for (i = 0; i < ARRAYSIZE(c_mpriid); i++) { if (IsEqualIID(riid, c_mpriid[i].riid)) return c_mpriid[i].psz; }
// get a display name for the the first few unknown requests
for (i = 0; i < ARRAYSIZE(s_guid); i++) { if (TEXT('{') /*}*/ == s_guid[i].szGuid[0]) { if (IsEqualIID(riid, &s_guid[i].iid)) return s_guid[i].szGuid; } else { s_guid[i].iid = *riid; SHStringFromGUID(riid, s_guid[i].szGuid, ARRAYSIZE(s_guid[0].szGuid)); return s_guid[i].szGuid; } }
return TEXT("Unknown REFIID"); }
//***
// NOTE
// must be called *after* Dbg_GetREFIIDName (since that is what creates entry)
void * Dbg_GetREFIIDAtom( REFIID riid) { int i;
for (i = 0; i < ARRAYSIZE(c_mpriid); i++) { if (IsEqualIID(riid, c_mpriid[i].riid)) return (void *) c_mpriid[i].riid; }
// get a display name for the the first few unknown requests
for (i = 0; i < ARRAYSIZE(s_guid); i++) { if (TEXT('{') /*}*/ == s_guid[i].szGuid[0]) { if (IsEqualIID(riid, &s_guid[i].iid)) return (void *) &s_guid[i].iid; } else { return NULL; } }
return NULL; }
#endif // DEBUG
|