|
|
1.1 root 1:
2: STDAPI_(BOOL) IsValidPtrIn( const void FAR* pv, UINT cb );
3: STDAPI_(BOOL) IsValidPtrOut( void FAR* pv, UINT cb );
4: STDAPI_(BOOL) IsValidInterface( void FAR* pv );
5: STDAPI_(BOOL) IsValidIid( REFIID riid );
6:
7:
8: #ifdef _DEBUG
9:
10: //** POINTER IN validation macros:
11: #define VDATEPTRIN( pv, TYPE ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) \
12: return (FnAssert(#pv,"Invalid in ptr", _szAssertFile, __LINE__),ResultFromScode(E_INVALIDARG))
13: #define GEN_VDATEPTRIN( pv, TYPE, retval ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) \
14: return (FnAssert(#pv,"Invalid in ptr", _szAssertFile, __LINE__), retval)
15: #define VOID_VDATEPTRIN( pv, TYPE ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) {\
16: FnAssert(#pv,"Invalid in ptr", _szAssertFile, __LINE__); return; }
17:
18: //** POINTER OUT validation macros:
19: #define VDATEPTROUT( pv, TYPE ) if (!IsValidPtrOut( (pv), sizeof(TYPE))) \
20: return (FnAssert(#pv,"Invalid out ptr", _szAssertFile, __LINE__),ResultFromScode(E_INVALIDARG))
21: #define GEN_VDATEPTROUT( pv, TYPE, retval ) if (!IsValidPtrOut( (pv), sizeof(TYPE))) \
22: return (FnAssert(#pv,"Invalid out ptr", _szAssertFile, __LINE__), retval)
23:
24: //** INTERFACE validation macro:
25: #define GEN_VDATEIFACE( pv, retval ) if (!IsValidInterface(pv)) \
26: return (FnAssert(#pv,"Invalid interface", _szAssertFile, __LINE__), retval)
27: #define VDATEIFACE( pv ) if (!IsValidInterface(pv)) \
28: return (FnAssert(#pv,"Invalid interface", _szAssertFile, __LINE__),ResultFromScode(E_INVALIDARG))
29: #define VOID_VDATEIFACE( pv ) if (!IsValidInterface(pv)) {\
30: FnAssert(#pv,"Invalid interface", _szAssertFile, __LINE__); return; }
31:
32: //** INTERFACE ID validation macro:
33: #define VDATEIID( iid ) if (!IsValidIid( iid )) \
34: return (FnAssert(#iid,"Invalid iid", _szAssertFile, __LINE__),ResultFromScode(E_INVALIDARG))
35: #define GEN_VDATEIID( iid, retval ) if (!IsValidIid( iid )) {\
36: FnAssert(#iid,"Invalid iid", _szAssertFile, __LINE__); return retval; }
37: #else
38:
39:
40:
41: // --assertless macros for non-debug case
42: //** POINTER IN validation macros:
43: #define VDATEPTRIN( pv, TYPE ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) \
44: return (ResultFromScode(E_INVALIDARG))
45: #define GEN_VDATEPTRIN( pv, TYPE, retval ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) \
46: return (retval)
47: #define VOID_VDATEPTRIN( pv, TYPE ) if (!IsValidPtrIn( (pv), sizeof(TYPE))) {\
48: return; }
49:
50: //** POINTER OUT validation macros:
51: #define VDATEPTROUT( pv, TYPE ) if (!IsValidPtrOut( (pv), sizeof(TYPE))) \
52: return (ResultFromScode(E_INVALIDARG))
53:
54: #define GEN_VDATEPTROUT( pv, TYPE, retval ) if (!IsValidPtrOut( (pv), sizeof(TYPE))) \
55: return (retval)
56:
57: //** INTERFACE validation macro:
58: #define VDATEIFACE( pv ) if (!IsValidInterface(pv)) \
59: return (ResultFromScode(E_INVALIDARG))
60: #define VOID_VDATEIFACE( pv ) if (!IsValidInterface(pv)) \
61: return;
62: #define GEN_VDATEIFACE( pv, retval ) if (!IsValidInterface(pv)) \
63: return (retval)
64:
65: //** INTERFACE ID validation macro:
66: #define VDATEIID( iid ) if (!IsValidIid( iid )) \
67: return (ResultFromScode(E_INVALIDARG))
68: #define GEN_VDATEIID( iid, retval ) if (!IsValidIid( iid )) \
69: return retval;
70:
71: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.