utilities.cpp
上传用户:hcyyun520
上传日期:2019-05-14
资源大小:365k
文件大小:2k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. // Utilities.cpp
  2. #include "pch.h"
  3. #include "wavetsp.h"
  4. #if defined(_DEBUG) && defined(DEBUGTSP)
  5. static
  6. void DumpParams(FUNC_INFO* pInfo, ParamDirection dir)
  7. {
  8.     TSPTRACE("  %s parameters:n", (dir == dirIn ? "in" : "out"));
  9.     FUNC_PARAM* begin = &pInfo->rgParams[0];
  10.     FUNC_PARAM* end = &pInfo->rgParams[pInfo->dwNumParams];
  11.     for( FUNC_PARAM* pParam = begin; pParam != end; ++pParam )
  12.     {
  13.         if( pParam->dir == dir )
  14.         {
  15.             switch( pParam->pt )
  16.             {
  17.             case ptString:
  18.             {
  19.                 char    sz[MAX_PATH+1] = "<NULL>";
  20.                 if( pParam->dwVal )
  21.                 {
  22.                     wcstombs(sz, (const wchar_t*)pParam->dwVal, MAX_PATH);
  23.                     sz[MAX_PATH] = 0;
  24.                 }
  25.                 TSPTRACE("    %s= 0x%lx '%s'n", pParam->pszVal, pParam->dwVal, sz);
  26.             }
  27.             break;
  28.             case ptDword:
  29.             default:
  30.                 if( dir == dirIn )
  31.                 {
  32.                     TSPTRACE("    %s= 0x%lxn", pParam->pszVal, pParam->dwVal);
  33.                 }
  34.                 else
  35.                 {
  36.                     TSPTRACE("    %s= 0x%lx '0x%lx'n", pParam->pszVal, pParam->dwVal, (pParam->dwVal ? *(DWORD*)pParam->dwVal : 0));
  37.                 }
  38.             break;
  39.             }
  40.         }
  41.     }
  42. }
  43. void Prolog(FUNC_INFO* pInfo)
  44. {
  45.     char    sz[MAX_PATH+1];
  46.     GetModuleFileName(0, sz, MAX_PATH);
  47.     TSPTRACE("%s() from %sn", pInfo->pszFuncName, sz);
  48.     DumpParams(pInfo, dirIn);
  49. }
  50. LONG Epilog(FUNC_INFO* pInfo, LONG tr)
  51. {
  52.     DumpParams(pInfo, dirOut);
  53.     TSPTRACE("%s() returning 0x%xnn", pInfo->pszFuncName, tr);
  54.     return tr;
  55. }
  56. void TspTrace(LPCSTR pszFormat, ...)
  57. {
  58.     char    buf[128];
  59.     va_list ap;
  60.     
  61.     va_start(ap, pszFormat);
  62.     wvsprintf(buf, pszFormat, ap);
  63.     OutputDebugString(buf);
  64. #define _DEBUGTOFILE
  65. #ifdef _DEBUGTOFILE
  66.     HANDLE  hFile = CreateFile("c:\wavetsp.out", GENERIC_WRITE,
  67.                                0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  68.     SetFilePointer(hFile, 0, 0, FILE_END);
  69.     DWORD   err = GetLastError();
  70.     DWORD   nBytes;
  71.     WriteFile(hFile, buf, strlen(buf), &nBytes, 0);
  72.     CloseHandle(hFile);
  73. #endif
  74.     va_end(ap);
  75. }
  76. #endif  // _DEBUG