|
|
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.