windows-nt/Source/XPSP1/NT/net/upnp/inc/upthread.h
2020-09-26 16:20:57 +08:00

64 lines
1.4 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000.
//
// File: U P T H R E A D . H
//
// Contents: Threading support code
//
// Notes:
//
// Author: mbend 29 Sep 2000
//
//----------------------------------------------------------------------------
#pragma once
class CWorkItem
{
public:
CWorkItem();
virtual ~CWorkItem();
HRESULT HrStart(BOOL bDeleteOnComplete);
protected:
virtual DWORD DwRun() = 0;
virtual ULONG GetFlags();
private:
CWorkItem(const CWorkItem &);
CWorkItem & operator=(const CWorkItem &);
BOOL m_bDeleteOnComplete;
static DWORD WINAPI DwThreadProc(void * pvParam);
};
class CThreadBase
{
public:
CThreadBase();
virtual ~CThreadBase();
HRESULT HrStart(BOOL bDeleteOnComplete, BOOL bCreateSuspended);
HRESULT HrGetExitCodeThread(DWORD * pdwExitCode);
HRESULT HrResumeThread();
HRESULT HrSuspendThread();
HANDLE GetThreadHandle();
DWORD GetThreadId();
HRESULT HrWait(DWORD dwTimeoutInMillis, BOOL * pbTimedOut);
protected:
virtual DWORD DwRun() = 0;
private:
CThreadBase(const CThreadBase &);
CThreadBase & operator=(const CThreadBase &);
HANDLE m_hThread;
DWORD m_dwThreadId;
BOOL m_bDeleteOnComplete;
static DWORD WINAPI DwThreadProc(void * pvParam);
};