source: trunk/src/kernel32/hmnpipe.cpp@ 3819

Last change on this file since 3819 was 3819, checked in by sandervl, 25 years ago

PD: added handlemanager support for named & unnamed pipes

File size: 8.4 KB
Line 
1/* $Id: hmnpipe.cpp,v 1.1 2000-07-12 18:21:43 sandervl Exp $ */
2/*
3 * Project Odin Software License can be found in LICENSE.TXT
4 *
5 * Win32 Named Pipes device access class
6 *
7 * Copyright 2000 Przemyslaw Dobrowolski <dobrawka@asua.org.pl>
8 *
9 * TODO: OVERLAPPED results!!!!
10 *
11 * PD: All my work for Odin I dedicate to my deceased mother.
12 *
13 */
14#include <odin.h>
15#include <os2win.h>
16#include <misc.h>
17#include "HMDevice.h"
18#include "HMFile.h"
19#include "HMNPipe.h"
20#include "oslibdos.h"
21#include <string.h>
22
23#define DBG_LOCALLOG DBG_hmnpipe
24#include "dbglocal.h"
25
26#undef DEBUG_LOCAL
27//#define DEBUG_LOCAL
28
29#ifdef DEBUG_LOCAL
30# define dprintfl(a) dprintf(a)
31#else
32inline void ignore_dprintf(...){}
33# define dprintfl(a) ignore_dprintf(a)
34#endif
35
36//******************************************************************************
37//******************************************************************************
38BOOL HMDeviceNamedPipeClass::PeekNamedPipe(PHMHANDLEDATA pHMHandleData,
39 LPVOID lpvBuffer,
40 DWORD cbBuffer,
41 LPDWORD lpcbRead,
42 LPDWORD lpcbAvail,
43 LPDWORD lpcbMessage)
44{
45 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::PeekNamedPipe %s(%08x)\n",
46 lpHMDeviceName, pHMHandleData));
47
48 return OSLibDosPeekNamedPipe(pHMHandleData->hHMHandle,
49 lpvBuffer,
50 cbBuffer,
51 lpcbRead,
52 lpcbAvail,
53 lpcbMessage);
54}
55
56//******************************************************************************
57//******************************************************************************
58DWORD HMDeviceNamedPipeClass::CreateNamedPipe(PHMHANDLEDATA pHMHandleData,
59 LPCTSTR lpName,
60 DWORD dwOpenMode,
61 DWORD dwPipeMode,
62 DWORD nMaxInstances,
63 DWORD nOutBufferSize,
64 DWORD nInBufferSize,
65 DWORD nDefaultTimeOut,
66 LPSECURITY_ATTRIBUTES lpSecurityAttributes)
67{
68 pHMHandleData->dwInternalType = HMTYPE_PIPE;
69
70 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::CreateNamedPipe %s\n",
71 lpName));
72
73
74 pHMHandleData->hHMHandle = OSLibDosCreateNamedPipe( lpName,
75 dwOpenMode,
76 dwPipeMode,
77 nMaxInstances,
78 nOutBufferSize,
79 nInBufferSize,
80 nDefaultTimeOut,
81 lpSecurityAttributes );
82
83
84 return (pHMHandleData->hHMHandle);
85}
86
87//******************************************************************************
88//******************************************************************************
89BOOL HMDeviceNamedPipeClass::CreatePipe(PHMHANDLEDATA pHMHandleDataRead,
90 PHMHANDLEDATA pHMHandleDataWrite,
91 LPSECURITY_ATTRIBUTES lpsa,
92 DWORD cbPipe)
93{
94 pHMHandleDataRead->dwInternalType = HMTYPE_PIPE;
95 pHMHandleDataWrite->dwInternalType = HMTYPE_PIPE;
96
97 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::CreatePipe"));
98
99 if(!OSLibDosCreatePipe(&pHMHandleDataRead->hHMHandle,
100 &pHMHandleDataWrite->hHMHandle,
101 lpsa,
102 cbPipe))
103 return TRUE;
104 else
105 return(FALSE);
106}
107
108
109//******************************************************************************
110//******************************************************************************
111BOOL HMDeviceNamedPipeClass::ConnectNamedPipe( PHMHANDLEDATA pHMHandleData,
112 LPOVERLAPPED lpOverlapped)
113{
114 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::ConnectNamedPipe %s(%08x) [%08x]\n",
115 lpHMDeviceName, pHMHandleData,lpOverlapped));
116
117 return OSLibDosConnectNamedPipe(pHMHandleData->hHMHandle,lpOverlapped);
118}
119
120//******************************************************************************
121//******************************************************************************
122BOOL HMDeviceNamedPipeClass::DisconnectNamedPipe(PHMHANDLEDATA pHMHandleData)
123{
124 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::DisconnectNamedPipe %s(%08x)\n",
125 lpHMDeviceName, pHMHandleData));
126
127 return OSLibDosDisconnectNamedPipe(pHMHandleData->hHMHandle);
128}
129
130//******************************************************************************
131//******************************************************************************
132BOOL HMDeviceNamedPipeClass::GetNamedPipeHandleState(PHMHANDLEDATA pHMHandleData,
133 LPDWORD lpState,
134 LPDWORD lpCurInstances,
135 LPDWORD lpMaxCollectionCount,
136 LPDWORD lpCollectDataTimeout,
137 LPTSTR lpUserName,
138 DWORD nMaxUserNameSize)
139{
140 dprintf(("KERNEL32: HMDeviceNamedPipeClass::GetNamedPipeHandleStateA (%s) (%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) NIY\n",
141 lpHMDeviceName,
142 lpState,
143 lpCurInstances,
144 lpMaxCollectionCount,
145 lpCollectDataTimeout,
146 lpUserName,
147 nMaxUserNameSize));
148
149 return (FALSE);
150}
151
152//******************************************************************************
153//******************************************************************************
154BOOL HMDeviceNamedPipeClass::GetNamedPipeInfo(PHMHANDLEDATA pHMHandleData,
155 LPDWORD lpFlags,
156 LPDWORD lpOutBufferSize,
157 LPDWORD lpInBufferSize,
158 LPDWORD lpMaxInstances)
159{
160
161 dprintf(("KERNEL32: HMDeviceNamedPipeClass::GetNamedPipeInfo (%s) (%08xh,%08xh,%08xh,%08xh) NIY\n",
162 lpHMDeviceName,
163 lpFlags,
164 lpOutBufferSize,
165 lpInBufferSize,
166 lpMaxInstances));
167
168 return (FALSE);
169}
170
171//******************************************************************************
172//******************************************************************************
173DWORD HMDeviceNamedPipeClass::TransactNamedPipe(PHMHANDLEDATA pHMHandleData,
174 LPVOID lpvWriteBuf,
175 DWORD cbWriteBuf,
176 LPVOID lpvReadBuf,
177 DWORD cbReadBuf,
178 LPDWORD lpcbRead,
179 LPOVERLAPPED lpo)
180{
181
182 dprintfl(("KERNEL32: HMDeviceNamedPipeClass::TransactNamedPipe %s(%08x) - [%08x,%08x,%08x,%08x,%08x,%08x]\n",
183 lpHMDeviceName, pHMHandleData,lpvWriteBuf,cbWriteBuf,lpvReadBuf,cbReadBuf,lpcbRead,lpo));
184
185 return(OSLibDosTransactNamedPipe( pHMHandleData->hHMHandle,
186 lpvWriteBuf,
187 cbWriteBuf,
188 lpvReadBuf,
189 cbReadBuf,
190 lpcbRead,
191 lpo));
192}
193
194BOOL HMDeviceNamedPipeClass::SetNamedPipeHandleState(PHMHANDLEDATA pHMHandleData,
195 LPDWORD lpdwMode,
196 LPDWORD lpcbMaxCollect,
197 LPDWORD lpdwCollectDataTimeout)
198{
199 dprintf(("KERNEL32: HMDeviceNamedPipeClass::SetNamedPipeInfo (%s) (%08xh,%08xh,%08xh) NIY\n",
200 lpdwMode,lpcbMaxCollect,lpdwCollectDataTimeout));
201
202 return (FALSE);
203}
204
205
206BOOL HMDeviceNamedPipeClass::GetOverlappedResult(PHMHANDLEDATA pHMHandleData,
207 LPOVERLAPPED arg2,
208 LPDWORD arg3,
209 BOOL arg4)
210{
211 return (FALSE);
212}
Note: See TracBrowser for help on using the repository browser.