util.c
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 4k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. //----------------------------------------------------------------------------
  2. //
  3. //----------------------------------------------------------------------------
  4. #include "smtidy.h"
  5. #include "util.h"
  6. #define INITGUID
  7. #include <initguid.h>
  8. #pragma data_seg(".text")
  9. #include <coguid.h>
  10. #include <oleguid.h>
  11. #pragma data_seg()
  12. //----------------------------------------------------------------------------
  13. BOOL Cursor_Wait(HCURSOR *phcur)
  14. {
  15.     Assert(phcur);
  16.     ShowCursor(TRUE);
  17.     *phcur = SetCursor(LoadCursor(NULL, IDC_WAIT));
  18.     
  19.     return TRUE;
  20. }
  21. //----------------------------------------------------------------------------
  22. BOOL Cursor_UnWait(HCURSOR hCur)
  23. {
  24.     Assert(hCur);
  25.     SetCursor(hCur);
  26.     ShowCursor(FALSE);
  27.     
  28.     return TRUE;
  29. }
  30. //----------------------------------------------------------------------------
  31. HRESULT PASCAL ICoCreateInstance(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv)
  32. {
  33.     LPCLASSFACTORY pcf;
  34.     HRESULT hres = SHDllGetClassObject(rclsid, &IID_IClassFactory, &pcf);
  35.     if (SUCCEEDED(hres))
  36.     {
  37. hres = pcf->lpVtbl->CreateInstance(pcf, NULL, riid, ppv);
  38. pcf->lpVtbl->Release(pcf);
  39.     }
  40.     return hres;
  41. }
  42. //----------------------------------------------------------------------------
  43. // Alloc a copy of the given string.
  44. BOOL WINAPI Sz_AllocCopy(LPCTSTR pszSrc, LPTSTR *ppszDst)
  45. {
  46.     BOOL fRet = FALSE;
  47.     
  48.     if (pszSrc && ppszDst)
  49.     {
  50.         if (LAlloc(Sz_Cb(pszSrc), ppszDst))
  51.         {
  52.             lstrcpy(*ppszDst, pszSrc);
  53.             fRet = TRUE;
  54.         }
  55.     }
  56.         
  57.     return fRet;
  58. }
  59. #ifdef DEBUG
  60. //----------------------------------------------------------------------------
  61. void WINAPI AssertFailed(LPCTSTR pszFile, int line)
  62. {
  63.     LPCTSTR psz;
  64.     for (psz = pszFile+lstrlen(pszFile); psz!=pszFile; psz=AnsiPrev(pszFile, psz))
  65.     {
  66.         if ((AnsiPrev(pszFile, psz)!= (psz-2)) && *(psz - 1) == '\')
  67.         break;
  68.     }
  69.     Dbg(TEXT("Assertion failed in %s on line %d."), psz, line);
  70.     DebugBreak();
  71. }
  72. //----------------------------------------------------------------------------
  73. void __cdecl _Dbg(LPCSTR pszMsg, ...)
  74. {
  75.     char sz[1024];
  76.     va_list ArgList;
  77.     va_start (ArgList, pszMsg);    
  78.     wvsprintf(sz, pszMsg, ArgList);
  79.     va_end (ArgList);
  80.     OutputDebugString(sz);
  81.     OutputDebugString("rn");
  82. }
  83. #else
  84. #ifndef NO_LOGGING
  85. //----------------------------------------------------------------------------
  86. HANDLE g_hFile = INVALID_HANDLE_VALUE;
  87. //----------------------------------------------------------------------------
  88. BOOL WINAPI _Dbg_OpenLog(void)
  89. {
  90.     BOOL fRet = FALSE;
  91.     
  92.     if (g_hFile == INVALID_HANDLE_VALUE)
  93.     {   
  94.         TCHAR sz[MAX_PATH];
  95.         GetWindowsDirectory(sz, ARRAYSIZE(sz));
  96.         PathAppend(sz, TEXT("smwiz.log"));
  97.         g_hFile = CreateFile(sz, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  98.         if (g_hFile != INVALID_HANDLE_VALUE)
  99.             fRet = TRUE;
  100.     }
  101.     return fRet;
  102. }
  103. //----------------------------------------------------------------------------
  104. BOOL WINAPI _Dbg_CloseLog(void)
  105. {
  106.     BOOL fRet = FALSE;
  107.     
  108.     if (g_hFile != INVALID_HANDLE_VALUE)
  109.     {   
  110.         CloseHandle(g_hFile);
  111.         g_hFile = INVALID_HANDLE_VALUE;
  112.         fRet = TRUE;
  113.     }
  114.     return fRet;
  115. }
  116. //----------------------------------------------------------------------------
  117. void __cdecl _Dbg(LPCTSTR pszMsg, ...)
  118. {
  119.     TCHAR sz[1024];
  120.     va_list ArgList;
  121.     va_start (ArgList, pszMsg);    
  122.     wvsprintf(sz, pszMsg, ArgList);
  123.     va_end (ArgList);
  124.     lstrcat(sz, TEXT("rn"));
  125.     if (g_hFile != INVALID_HANDLE_VALUE)
  126.     {
  127.         DWORD dwWritten;
  128.         WriteFile(g_hFile, sz, lstrlen(sz), &dwWritten, NULL);
  129.     }
  130. }
  131. #endif
  132. #endif