Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1998.
//
// File: waitmult.hxx
//
// Contents: Encapsulates a Win32 WaitForMultipleObjects
//
// History: 04-Aug-94 DwightKr Created
//
//--------------------------------------------------------------------------
#pragma once
//+-------------------------------------------------------------------------
//
// Class: CWaitForMultipleObjects
//
// Purpose: Constructor
//
// History: 07-Jun-94 DwightKr Created
//
//--------------------------------------------------------------------------
class CWaitForMultipleObjects { public :
inline CWaitForMultipleObjects(ULONG cMaxHandles); ~CWaitForMultipleObjects() { delete [] _pHandles; }
inline void AddEvent( HANDLE hEvent ); inline HANDLE Get( DWORD i ) const; inline DWORD Wait( DWORD dwTimeout );
void ResetCount() { _cNumHandles = 0; }
private:
HANDLE * _pHandles; // Doesn't own handles in _pHandles
ULONG _cMaxHandles; ULONG _cNumHandles; };
//+-------------------------------------------------------------------------
//
// Method: CWaitForMultipleObjects::CWaitForMultipleObjects, public
//
// Purpose: Constructor
//
// History: 07-Jun-94 DwightKr Created
//
//--------------------------------------------------------------------------
inline CWaitForMultipleObjects::CWaitForMultipleObjects( ULONG cMaxHandles ) : _cMaxHandles(cMaxHandles), _cNumHandles(0), _pHandles(0) { _pHandles = new HANDLE[_cMaxHandles]; }
//+-------------------------------------------------------------------------
//
// Method: CWaitForMultipleObjects::AddEvent, public
//
// Purpose: Adds an handle to be waited on
//
// Arguments: [hEvent] -- Handle to add
//
// History: 07-Jun-94 DwightKr Created
//
//--------------------------------------------------------------------------
inline void CWaitForMultipleObjects::AddEvent( HANDLE hEvent ) { Win4Assert( _cNumHandles < _cMaxHandles ); _pHandles[ _cNumHandles ] = hEvent; _cNumHandles++; }
//+-------------------------------------------------------------------------
//
// Method: CWaitForMultipleObjects::Wait, public
//
// Purpose: Waits for one of the handles to be signalled, or timeout
//
// History: 07-Jun-94 DwightKr Created
//
//--------------------------------------------------------------------------
inline DWORD CWaitForMultipleObjects::Wait( DWORD dwTimeout ) { return WaitForMultipleObjects( _cNumHandles, _pHandles, FALSE, dwTimeout ); }
//+-------------------------------------------------------------------------
//
// Method: CWaitForMultipleObjects::Get, public
//
// Synopsis: Retrieves the I-th handle
//
// Arguments: [i] -- i
//
// Returns: The I-th handle
//
// History: 23-Jun-98 KyleP Created
//
//--------------------------------------------------------------------------
inline HANDLE CWaitForMultipleObjects::Get( DWORD i ) const { Win4Assert( i < _cNumHandles ); return _pHandles[ i ]; }
|