class CSetPriority {
public:
  DWORD sp_dwProcessOld;
  int sp_iThreadOld;
  HANDLE sp_hThread;
  HANDLE sp_hProcess;
  CSetPriority(DWORD dwProcess, int iThread)
  {

    sp_hProcess = GetCurrentProcess();
    sp_hThread = GetCurrentThread();

    sp_dwProcessOld = GetPriorityClass(sp_hProcess);
    sp_iThreadOld = GetThreadPriority(sp_hThread);
    BOOL bSuccessProcess = SetPriorityClass(sp_hProcess, dwProcess);
    BOOL bSuccessThread = SetThreadPriority(sp_hThread, iThread);
    ASSERT(bSuccessProcess && bSuccessThread);
  }
  ~CSetPriority(void)
  {
    BOOL bSuccessProcess = SetPriorityClass(sp_hProcess, sp_dwProcessOld);
    BOOL bSuccessThread = SetThreadPriority(sp_hThread, sp_iThreadOld);
    ASSERT(bSuccessProcess && bSuccessThread);
  }
};
