|
|
1.1 root 1: /*************************************************************************
2: **
3: ** OLE 2.0 Common Utilities
4: **
5: ** dbgutil.h
6: **
7: ** This file contains file contains functions to support debug output.
8: **
9: ** (c) Copyright Microsoft Corp. 1990 - 1992 All Rights Reserved
10: **
11: *************************************************************************/
12:
13: #define STRICT 1
14: #include "ole2ui.h"
15:
16: static int s_nDbgIndent = 0; // indent level for debug message
17: #if defined( _DEBUG )
18: static int s_nDbgLevel = 0; // default dbg level printed
19: #else
20: static int s_nDbgLevel = 0; // default dbg level printed
21: #endif
22:
23: STDAPI_(void) OleDbgPrint(
24: int nDbgLvl,
25: LPSTR lpszPrefix,
26: LPSTR lpszMsg,
27: int nIndent
28: )
29: {
30: if (nDbgLvl <= s_nDbgLevel)
31: OleDbgPrintAlways(lpszPrefix, lpszMsg, nIndent);
32: }
33:
34:
35: STDAPI_(void) OleDbgPrintAlways(LPSTR lpszPrefix, LPSTR lpszMsg, int nIndent)
36: {
37: int i;
38:
39: if (nIndent < 0)
40: OleDbgIndent(nIndent);
41:
42: if (lpszPrefix && *lpszPrefix != '\0') {
43: OutputDebugString("| ");
44: for (i = 0; i < s_nDbgIndent; i++)
45: OutputDebugString("----");
46:
47: OutputDebugString(lpszPrefix);
48: OutputDebugString(": ");
49: }
50:
51: OutputDebugString(lpszMsg);
52: if (nIndent > 0)
53: OleDbgIndent(nIndent);
54: }
55:
56: STDAPI_(void) OleDbgSetDbgLevel(int nDbgLvl)
57: {
58: s_nDbgLevel = nDbgLvl;
59: }
60:
61: STDAPI_(int) OleDbgGetDbgLevel( void )
62: {
63: return s_nDbgLevel;
64: }
65:
66: STDAPI_(void) OleDbgIndent(int n)
67: {
68: switch (n) {
69: case -1:
70: s_nDbgIndent--;
71: break;
72: case 1:
73: s_nDbgIndent++;
74: break;
75: case -2:
76: s_nDbgIndent = 0;
77: break;
78: }
79: }
80:
81:
82: STDAPI_(void) OleDbgPrintRefCnt(
83: int nDbgLvl,
84: LPSTR lpszPrefix,
85: LPSTR lpszMsg,
86: LPVOID lpObj,
87: ULONG refcnt
88: )
89: {
90: if (nDbgLvl <= s_nDbgLevel)
91: OleDbgPrintRefCntAlways(lpszPrefix, lpszMsg, lpObj, refcnt);
92: }
93:
94:
95: STDAPI_(void) OleDbgPrintRefCntAlways(
96: LPSTR lpszPrefix,
97: LPSTR lpszMsg,
98: LPVOID lpObj,
99: ULONG refcnt
100: )
101: {
102: char szBuf[80];
103:
104: wsprintf(szBuf, "[obj=(0x%lx) cnt=%ld] %s", lpObj, refcnt, lpszMsg);
105: OleDbgPrintAlways(lpszPrefix, szBuf, 0);
106: }
107:
108:
109: STDAPI_(void) OleDbgPrintRect(
110: int nDbgLvl,
111: LPSTR lpszPrefix,
112: LPSTR lpszMsg,
113: LPRECT lpRect
114: )
115: {
116: if (nDbgLvl <= s_nDbgLevel)
117: OleDbgPrintRectAlways(lpszPrefix, lpszMsg, lpRect);
118: }
119:
120:
121: STDAPI_(void) OleDbgPrintRectAlways(
122: LPSTR lpszPrefix,
123: LPSTR lpszMsg,
124: LPRECT lpRect
125: )
126: {
127: char szBuf[80];
128:
129: wsprintf(
130: szBuf,
131: "%s: (%d,%d)-(%d,%d) %dx%d\r\n",
132: lpszMsg,
133: lpRect->left,
134: lpRect->top,
135: lpRect->right,
136: lpRect->bottom,
137: (lpRect->right-lpRect->left),
138: (lpRect->bottom-lpRect->top)
139: );
140: OleDbgPrintAlways(lpszPrefix, szBuf, 0);
141: }
142:
143:
144: #define CASE_SCODE(sc) \
145: case sc: \
146: lstrcpy((LPSTR)szErrName, (LPSTR)#sc); \
147: break;
148:
149: STDAPI_(void) OleDbgPrintScodeAlways(LPSTR lpszPrefix, LPSTR lpszMsg, SCODE sc)
150: {
151: char szBuf[256];
152: char szErrName[40];
153:
154: switch (sc) {
155: CASE_SCODE(RPC_E_SERVER_DIED)
156:
157: /* SCODE's defined in SCODE.H */
158: CASE_SCODE(S_OK)
159: // same value as S_OK CASE_SCODE(S_TRUE)
160: CASE_SCODE(S_FALSE)
161: CASE_SCODE(E_UNEXPECTED)
162: CASE_SCODE(E_NOTIMPL)
163: CASE_SCODE(E_OUTOFMEMORY)
164: CASE_SCODE(E_INVALIDARG)
165: CASE_SCODE(E_NOINTERFACE)
166: CASE_SCODE(E_POINTER)
167: CASE_SCODE(E_HANDLE)
168: CASE_SCODE(E_ABORT)
169: CASE_SCODE(E_FAIL)
170: CASE_SCODE(E_ACCESSDENIED)
171:
172: /* SCODE's defined in DVOBJ.H */
173: CASE_SCODE(DATA_E_FORMATETC)
174: // same as DATA_E_FORMATETC CASE_SCODE(DV_E_FORMATETC)
175: CASE_SCODE(DATA_S_SAMEFORMATETC)
176: CASE_SCODE(VIEW_E_DRAW)
177: // same as VIEW_E_DRAW CASE_SCODE(E_DRAW)
178: CASE_SCODE(VIEW_S_ALREADY_FROZEN)
179: CASE_SCODE(CACHE_E_NOCACHE_UPDATED)
180: CASE_SCODE(CACHE_S_FORMATETC_NOTSUPPORTED)
181: CASE_SCODE(CACHE_S_SAMECACHE)
182: CASE_SCODE(CACHE_S_SOMECACHES_NOTUPDATED)
183:
184: /* SCODE's defined in OLE2.H */
185: CASE_SCODE(OLE_E_OLEVERB)
186: CASE_SCODE(OLE_E_ADVF)
187: CASE_SCODE(OLE_E_ENUM_NOMORE)
188: CASE_SCODE(OLE_E_ADVISENOTSUPPORTED)
189: CASE_SCODE(OLE_E_NOCONNECTION)
190: CASE_SCODE(OLE_E_NOTRUNNING)
191: CASE_SCODE(OLE_E_NOCACHE)
192: CASE_SCODE(OLE_E_BLANK)
193: CASE_SCODE(OLE_E_CLASSDIFF)
194: CASE_SCODE(OLE_E_CANT_GETMONIKER)
195: CASE_SCODE(OLE_E_CANT_BINDTOSOURCE)
196: CASE_SCODE(OLE_E_STATIC)
197: CASE_SCODE(OLE_E_PROMPTSAVECANCELLED)
198: CASE_SCODE(OLE_E_INVALIDRECT)
199: CASE_SCODE(OLE_E_WRONGCOMPOBJ)
200: CASE_SCODE(OLE_E_INVALIDHWND)
201: CASE_SCODE(DV_E_DVTARGETDEVICE)
202: CASE_SCODE(DV_E_STGMEDIUM)
203: CASE_SCODE(DV_E_STATDATA)
204: CASE_SCODE(DV_E_LINDEX)
205: CASE_SCODE(DV_E_TYMED)
206: CASE_SCODE(DV_E_CLIPFORMAT)
207: CASE_SCODE(DV_E_DVASPECT)
208: CASE_SCODE(DV_E_DVTARGETDEVICE_SIZE)
209: CASE_SCODE(DV_E_NOIVIEWOBJECT)
210: CASE_SCODE(OLE_S_STATIC)
211: CASE_SCODE(OLE_S_MAC_CLIPFORMAT)
212: CASE_SCODE(OLE_S_USEREG)
213: CASE_SCODE(CONVERT10_E_OLESTREAM_GET)
214: CASE_SCODE(CONVERT10_E_OLESTREAM_PUT)
215: CASE_SCODE(CONVERT10_E_OLESTREAM_FMT)
216: CASE_SCODE(CONVERT10_E_OLESTREAM_BITMAP_TO_DIB)
217: CASE_SCODE(CONVERT10_E_STG_FMT)
218: CASE_SCODE(CONVERT10_E_STG_NO_STD_STREAM)
219: CASE_SCODE(CONVERT10_E_STG_DIB_TO_BITMAP)
220: CASE_SCODE(CONVERT10_S_NO_PRESENTATION)
221: CASE_SCODE(CLIPBRD_E_CANT_OPEN)
222: CASE_SCODE(CLIPBRD_E_CANT_EMPTY)
223: CASE_SCODE(CLIPBRD_E_CANT_SET)
224: CASE_SCODE(CLIPBRD_E_BAD_DATA)
225: CASE_SCODE(CLIPBRD_E_CANT_CLOSE)
226: CASE_SCODE(DRAGDROP_E_NOTREGISTERED)
227: CASE_SCODE(DRAGDROP_E_ALREADYREGISTERED)
228: CASE_SCODE(DRAGDROP_E_INVALIDHWND)
229: CASE_SCODE(DRAGDROP_S_DROP)
230: CASE_SCODE(DRAGDROP_S_CANCEL)
231: CASE_SCODE(DRAGDROP_S_USEDEFAULTCURSORS)
232: CASE_SCODE(OLEOBJ_E_NOVERBS)
233: CASE_SCODE(OLEOBJ_S_INVALIDVERB)
234: CASE_SCODE(OLEOBJ_S_CANNOT_DOVERB_NOW)
235: CASE_SCODE(OLEOBJ_S_INVALIDHWND)
236: CASE_SCODE(INPLACE_E_NOTUNDOABLE)
237: CASE_SCODE(INPLACE_E_NOTOOLSPACE)
238: CASE_SCODE(INPLACE_S_TRUNCATED)
239:
240: /* SCODE's defined in STORAGE.H */
241: CASE_SCODE(STG_E_INVALIDFUNCTION)
242: CASE_SCODE(STG_E_FILENOTFOUND)
243: CASE_SCODE(STG_E_PATHNOTFOUND)
244: CASE_SCODE(STG_E_TOOMANYOPENFILES)
245: CASE_SCODE(STG_E_ACCESSDENIED)
246: CASE_SCODE(STG_E_INVALIDHANDLE)
247: CASE_SCODE(STG_E_INSUFFICIENTMEMORY)
248: CASE_SCODE(STG_E_INVALIDPOINTER)
249: CASE_SCODE(STG_E_NOMOREFILES)
250: CASE_SCODE(STG_E_DISKISWRITEPROTECTED)
251: CASE_SCODE(STG_E_SEEKERROR)
252: CASE_SCODE(STG_E_WRITEFAULT)
253: CASE_SCODE(STG_E_READFAULT)
254: CASE_SCODE(STG_E_LOCKVIOLATION)
255: CASE_SCODE(STG_E_FILEALREADYEXISTS)
256: CASE_SCODE(STG_E_INVALIDPARAMETER)
257: CASE_SCODE(STG_E_MEDIUMFULL)
258: CASE_SCODE(STG_E_ABNORMALAPIEXIT)
259: CASE_SCODE(STG_E_INVALIDHEADER)
260: CASE_SCODE(STG_E_INVALIDNAME)
261: CASE_SCODE(STG_E_UNKNOWN)
262: CASE_SCODE(STG_E_UNIMPLEMENTEDFUNCTION)
263: CASE_SCODE(STG_E_INVALIDFLAG)
264: CASE_SCODE(STG_E_INUSE)
265: CASE_SCODE(STG_E_NOTCURRENT)
266: CASE_SCODE(STG_E_REVERTED)
267: CASE_SCODE(STG_E_CANTSAVE)
268: CASE_SCODE(STG_E_OLDFORMAT)
269: CASE_SCODE(STG_E_OLDDLL)
270: CASE_SCODE(STG_E_SHAREREQUIRED)
271: #if !defined( WIN32 )
272: // BUGBUG32: scodes are not yet defined
273: CASE_SCODE(STG_E_NOTFILEBASEDSTORAGE)
274: CASE_SCODE(STG_E_EXTANTMARSHALLINGS)
275: #endif
276: CASE_SCODE(STG_S_CONVERTED)
277:
278: /* SCODE's defined in COMPOBJ.H */
279: CASE_SCODE(CO_E_NOTINITIALIZED)
280: CASE_SCODE(CO_E_ALREADYINITIALIZED)
281: CASE_SCODE(CO_E_CANTDETERMINECLASS)
282: CASE_SCODE(CO_E_APPNOTFOUND)
283: CASE_SCODE(CO_E_APPSINGLEUSE)
284: CASE_SCODE(CO_E_ERRORINAPP)
285: CASE_SCODE(CO_E_DLLNOTFOUND)
286: CASE_SCODE(CO_E_ERRORINDLL)
287: CASE_SCODE(CO_E_WRONGOSFORAPP)
288: CASE_SCODE(CO_E_OBJNOTREG)
289: CASE_SCODE(CO_E_OBJISREG)
290: CASE_SCODE(CO_E_OBJNOTCONNECTED)
291: CASE_SCODE(CO_E_APPDIDNTREG)
292: CASE_SCODE(CO_E_CLASSSTRING)
293: CASE_SCODE(CO_E_IIDSTRING)
294: CASE_SCODE(CLASS_E_NOAGGREGATION)
295: CASE_SCODE(REGDB_E_READREGDB)
296: CASE_SCODE(REGDB_E_WRITEREGDB)
297: CASE_SCODE(REGDB_E_KEYMISSING)
298: CASE_SCODE(REGDB_E_INVALIDVALUE)
299: CASE_SCODE(REGDB_E_CLASSNOTREG)
300: CASE_SCODE(REGDB_E_IIDNOTREG)
301: CASE_SCODE(RPC_E_FIRST)
302: CASE_SCODE(RPC_E_CALL_REJECTED)
303: CASE_SCODE(RPC_E_CALL_CANCELED)
304: CASE_SCODE(RPC_E_CANTPOST_INSENDCALL)
305: CASE_SCODE(RPC_E_CANTCALLOUT_INASYNCCALL)
306: CASE_SCODE(RPC_E_CANTCALLOUT_INEXTERNALCALL)
307: CASE_SCODE(RPC_E_CONNECTION_TERMINATED)
308: // CASE_SCODE(RPC_E_SERVER_DIED)
309: CASE_SCODE(RPC_E_CLIENT_DIED)
310: CASE_SCODE(RPC_E_INVALID_DATAPACKET)
311: CASE_SCODE(RPC_E_CANTTRANSMIT_CALL)
312: CASE_SCODE(RPC_E_CLIENT_CANTMARSHAL_DATA)
313: CASE_SCODE(RPC_E_CLIENT_CANTUNMARSHAL_DATA)
314: CASE_SCODE(RPC_E_SERVER_CANTMARSHAL_DATA)
315: CASE_SCODE(RPC_E_SERVER_CANTUNMARSHAL_DATA)
316: CASE_SCODE(RPC_E_INVALID_DATA)
317: CASE_SCODE(RPC_E_INVALID_PARAMETER)
318: CASE_SCODE(RPC_E_UNEXPECTED)
319:
320: /* SCODE's defined in MONIKER.H */
321: CASE_SCODE(MK_E_CONNECTMANUALLY)
322: CASE_SCODE(MK_E_EXCEEDEDDEADLINE)
323: CASE_SCODE(MK_E_NEEDGENERIC)
324: CASE_SCODE(MK_E_UNAVAILABLE)
325: CASE_SCODE(MK_E_SYNTAX)
326: CASE_SCODE(MK_E_NOOBJECT)
327: CASE_SCODE(MK_E_INVALIDEXTENSION)
328: CASE_SCODE(MK_E_INTERMEDIATEINTERFACENOTSUPPORTED)
329: CASE_SCODE(MK_E_NOTBINDABLE)
330: CASE_SCODE(MK_E_NOTBOUND)
331: CASE_SCODE(MK_E_CANTOPENFILE)
332: CASE_SCODE(MK_E_MUSTBOTHERUSER)
333: CASE_SCODE(MK_E_NOINVERSE)
334: CASE_SCODE(MK_E_NOSTORAGE)
335: CASE_SCODE(MK_S_US)
336: CASE_SCODE(MK_S_REDUCED_TO_SELF)
337: CASE_SCODE(MK_S_ME)
338: CASE_SCODE(MK_S_HIM)
339: CASE_SCODE(MK_S_MONIKERALREADYREGISTERED)
340:
341: default:
342: lstrcpy(szErrName, "UNKNOWN SCODE");
343: }
344:
345: wsprintf(szBuf, "%s %s (0x%lx)\n", lpszMsg, (LPSTR)szErrName, sc);
346: OleDbgPrintAlways(lpszPrefix, szBuf, 0);
347: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.