global.cpp
上传用户:chinaliu11
上传日期:2022-03-10
资源大小:11842k
文件大小:1k
源码类别:

P2P编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "global.h"
  3. CString hwFormatMessage ( DWORD dwErrorCode )
  4. {
  5. CString csError;
  6. LPVOID pv;
  7.     FormatMessage (
  8. FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  9. NULL,
  10. dwErrorCode,
  11. MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
  12. (LPTSTR)&pv,
  13. 0,
  14. NULL);
  15. if(pv)
  16. {
  17. csError = (char*)pv;
  18. LocalFree ( pv );
  19. }
  20. return csError;
  21. }
  22. //
  23. // 等待线程退出
  24. //
  25. BOOL WaitForThreadEnd ( HANDLE *phThread, DWORD dwWaitTime /*=5000*/ )
  26. {
  27. BOOL bRet = TRUE;
  28. ASSERT ( phThread );
  29. if ( !(*phThread) ) return TRUE;
  30. if ( ::WaitForSingleObject ( *phThread, dwWaitTime ) == WAIT_TIMEOUT )
  31. {
  32. bRet = FALSE;
  33. ::TerminateThread ( *phThread, 0 );
  34. }
  35. ::CloseHandle ( *phThread );
  36. (*phThread) = NULL;
  37. return bRet;
  38. }
  39. BOOL WaitForThreadEnd ( HANDLE *pEvtTerminate, HANDLE *phThread, DWORD dwWaitTime /*=5000*/ )
  40. {
  41. if ( pEvtTerminate && HANDLE_IS_VALID(*pEvtTerminate) )
  42. ::SetEvent ( (*pEvtTerminate) );
  43. BOOL bRet = WaitForThreadEnd ( phThread, dwWaitTime );
  44. if ( pEvtTerminate && HANDLE_IS_VALID(*pEvtTerminate) )
  45. {
  46. ::CloseHandle ( *pEvtTerminate );
  47. (*pEvtTerminate) = NULL;
  48. }
  49. return bRet;
  50. }