source: trunk/src/kernel32/hmsemaphore.h@ 7029

Last change on this file since 7029 was 6084, checked in by sandervl, 24 years ago

semaphore updates

File size: 4.7 KB
Line 
1/* $Id: hmsemaphore.h,v 1.5 2001-06-23 16:59:28 sandervl Exp $ */
2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 * Win32 Unified Handle Manager for OS/2
6 * 1999/06/17 PH Patrick Haller (phaller@gmx.net)
7 */
8
9#ifndef _HM_DEVICE_SEMAPHORE_H_
10#define _HM_DEVICE_SEMAPHORE_H_
11
12
13/*****************************************************************************
14 * Remark *
15 *****************************************************************************
16 */
17
18
19/*****************************************************************************
20 * Includes *
21 *****************************************************************************/
22
23#include "HMDevice.h"
24#include "HMOpen32.h"
25
26#ifdef USE_OS2SEMAPHORES
27typedef struct {
28 LONG currentCount;
29 LONG maximumCount;
30 LONG refCount;
31 ULONG hev;
32} SEM_INFO, *PSEM_INFO;
33#endif
34
35
36/*****************************************************************************
37 * Structures *
38 *****************************************************************************/
39
40#ifdef USE_OS2SEMAPHORES
41class HMDeviceSemaphoreClass : public HMDeviceHandler
42#else
43class HMDeviceSemaphoreClass : public HMDeviceOpen32Class
44#endif
45{
46public:
47#ifdef USE_OS2SEMAPHORES
48 HMDeviceSemaphoreClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {}
49#else
50 HMDeviceSemaphoreClass(LPCSTR lpDeviceName) : HMDeviceOpen32Class(lpDeviceName) {}
51#endif
52
53 /* this is a handler method for calls to CreateSemaphore() */
54 virtual DWORD CreateSemaphore (PHMHANDLEDATA pHMHandleData,
55 LPSECURITY_ATTRIBUTES lpsa,
56 LONG lInitialCount,
57 LONG lMaximumCount,
58 LPCTSTR lpszSemaphoreName);
59
60 /* this is a handler method for calls to OpenSemaphore() */
61 virtual DWORD OpenSemaphore (PHMHANDLEDATA pHMHandleData,
62 BOOL fInheritHandle,
63 LPCTSTR lpszSemaphoreName);
64
65#ifdef USE_OS2SEMAPHORES
66 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
67
68 virtual BOOL DuplicateHandle(PHMHANDLEDATA pHMHandleData, HANDLE srcprocess,
69 PHMHANDLEDATA pHMSrcHandle,
70 HANDLE destprocess,
71 PHANDLE desthandle,
72 DWORD fdwAccess,
73 BOOL fInherit,
74 DWORD fdwOptions,
75 DWORD fdwOdinOptions);
76
77 /* this is a handler method for calls to WaitForSingleObject */
78 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData,
79 DWORD dwTimeout);
80
81 /* this is a handler method for calls to WaitForSingleObjectEx */
82 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData,
83 DWORD dwTimeout,
84 BOOL fAlertable);
85
86 virtual DWORD MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData,
87 DWORD nCount,
88 PHANDLE pHandles,
89 BOOL fWaitAll,
90 DWORD dwMilliseconds,
91 DWORD dwWakeMask);
92
93 virtual DWORD WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData,
94 DWORD cObjects,
95 PHANDLE lphObjects,
96 BOOL fWaitAll,
97 DWORD dwTimeout);
98
99#endif
100
101 /* this is a handle method for calls to ReleaseSemaphore() */
102 virtual BOOL ReleaseSemaphore(PHMHANDLEDATA pHMHandleData,
103 LONG cReleaseCount,
104 LPLONG lpPreviousCount);
105};
106
107
108DWORD HMSemWaitForMultipleObjects (DWORD cObjects,
109 PHANDLE lphObjects,
110 BOOL fWaitAll,
111 DWORD dwTimeout);
112
113DWORD HMSemMsgWaitForMultipleObjects (DWORD cObjects,
114 PHANDLE lphObjects,
115 BOOL fWaitAll,
116 DWORD dwTimeout,
117 DWORD dwWakeMask);
118
119void FixSemName(char *lpszSemaphoreName);
120
121#endif /* _HM_DEVICE_SEMAPHORE_H_ */
122
Note: See TracBrowser for help on using the repository browser.