common.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 1k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. // common.h
  2. #include "debug.h"
  3. // to avoid CRT in debug
  4. #pragma intrinsic(memcpy)
  5. #pragma intrinsic(memcmp)
  6. #pragma intrinsic(abs)
  7. #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
  8. #define StrToOleStrN(pwsz, cchWideChar,  psz,  cchMultiByte) MultiByteToWideChar(CP_ACP, 0, psz, cchMultiByte, pwsz, cchWideChar)
  9. #define OleStrToStrN(psz,  cchMultiByte, pwsz, cchWideChar)  WideCharToMultiByte(CP_ACP, 0, pwsz, cchWideChar, psz, cchMultiByte, NULL, NULL)
  10. #define QueryInterface(punk, iid, pobj) (punk)->lpVtbl->QueryInterface(punk, iid, pobj)
  11. #define AddRef(punk) (punk)->lpVtbl->AddRef(punk)
  12. #define Release(punk) (punk)->lpVtbl->Release(punk)
  13. #ifndef IToClass
  14. #define _IOffset(class, itf)         ((UINT)(UINT_PTR)&(((class *)0)->itf))
  15. #define IToClass(class, itf, pitf)   ((class  *)(((LPSTR)pitf)-_IOffset(class, itf)))
  16. #endif
  17. #ifdef _DEBUG
  18. #define ReleaseLast(punk)   Assert(Release(punk) == 0)
  19. #else
  20. #define ReleaseLast(punk)   Release(punk)
  21. #endif