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.
|
|
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#ifndef __AFXMT_H__
#define __AFXMT_H__
#ifndef __AFX_H__
#include <afx.h>
#endif
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, off)
#endif
#ifndef _AFX_FULLTYPEINFO
#pragma component(mintypeinfo, on)
#endif
#ifdef _AFX_PACKING
#pragma pack(push, _AFX_PACKING)
#endif
/////////////////////////////////////////////////////////////////////////////
// AFXMT - MFC Multithreaded Extensions (Syncronization Objects)
// Classes declared in this file
//CObject
class CSyncObject; class CSemaphore; class CMutex; class CEvent; class CCriticalSection;
class CSingleLock; class CMultiLock;
#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
/////////////////////////////////////////////////////////////////////////////
// Basic synchronization object
class CSyncObject : public CObject { DECLARE_DYNAMIC(CSyncObject)
// Constructor
public: CSyncObject(LPCTSTR pstrName);
// Attributes
public: operator HANDLE() const; HANDLE m_hObject;
// Operations
virtual BOOL Lock(DWORD dwTimeout = INFINITE); virtual BOOL Unlock() = 0; virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */) { return TRUE; }
// Implementation
public: virtual ~CSyncObject(); #ifdef _DEBUG
CString m_strName; virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
friend class CSingleLock; friend class CMultiLock; };
/////////////////////////////////////////////////////////////////////////////
// CSemaphore
class CSemaphore : public CSyncObject { DECLARE_DYNAMIC(CSemaphore)
// Constructor
public: CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1, LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL);
// Implementation
public: virtual ~CSemaphore(); virtual BOOL Unlock(); virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL); };
/////////////////////////////////////////////////////////////////////////////
// CMutex
class CMutex : public CSyncObject { DECLARE_DYNAMIC(CMutex)
// Constructor
public: CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
// Implementation
public: virtual ~CMutex(); BOOL Unlock(); };
/////////////////////////////////////////////////////////////////////////////
// CEvent
class CEvent : public CSyncObject { DECLARE_DYNAMIC(CEvent)
// Constructor
public: CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
// Operations
public: BOOL SetEvent(); BOOL PulseEvent(); BOOL ResetEvent(); BOOL Unlock();
// Implementation
public: virtual ~CEvent(); };
/////////////////////////////////////////////////////////////////////////////
// CCriticalSection
class CCriticalSection : public CSyncObject { DECLARE_DYNAMIC(CCriticalSection)
// Constructor
public: CCriticalSection();
// Attributes
public: operator CRITICAL_SECTION*(); CRITICAL_SECTION m_sect;
// Operations
public: BOOL Unlock(); BOOL Lock(); BOOL Lock(DWORD dwTimeout);
// Implementation
public: virtual ~CCriticalSection(); };
/////////////////////////////////////////////////////////////////////////////
// CSingleLock
class CSingleLock { // Constructors
public: CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
// Operations
public: BOOL Lock(DWORD dwTimeOut = INFINITE); BOOL Unlock(); BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL); BOOL IsLocked();
// Implementation
public: ~CSingleLock();
protected: CSyncObject* m_pObject; HANDLE m_hObject; BOOL m_bAcquired; };
/////////////////////////////////////////////////////////////////////////////
// CMultiLock
class CMultiLock { // Constructor
public: CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
// Operations
public: DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE, DWORD dwWakeMask = 0); BOOL Unlock(); BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL); BOOL IsLocked(DWORD dwItem);
// Implementation
public: ~CMultiLock();
protected: HANDLE m_hPreallocated[8]; BOOL m_bPreallocated[8];
CSyncObject* const * m_ppObjectArray; HANDLE* m_pHandleArray; BOOL* m_bLockedArray; DWORD m_dwCount; };
/////////////////////////////////////////////////////////////////////////////
// Inline function declarations
#ifdef _AFX_PACKING
#pragma pack(pop)
#endif
#ifdef _AFX_ENABLE_INLINES
#define _AFXMT_INLINE AFX_INLINE
#include <afxmt.inl>
#undef _AFXMT_INLINE
#endif
#undef AFX_DATA
#define AFX_DATA
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, on)
#endif
#ifndef _AFX_FULLTYPEINFO
#pragma component(mintypeinfo, off)
#endif
#endif // __AFXMT_H__
/////////////////////////////////////////////////////////////////////////////
|