[ROSAUTOTEST] Cache the result of GetLastError().
[reactos.git] / modules / rostests / rosautotest / CPipe.h
1 /*
2 * PROJECT: ReactOS Automatic Testing Utility
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Class that manages an unidirectional anonymous byte stream pipe
5 * COPYRIGHT: Copyright 2015 Thomas Faber (thomas.faber@reactos.org)
6 * Copyright 2019 Colin Finck (colin@reactos.org)
7 */
8
9 class CPipe
10 {
11 private:
12 static LONG m_lPipeCount;
13
14 OVERLAPPED m_ReadOverlapped;
15 HANDLE m_hReadPipe;
16 HANDLE m_hWritePipe;
17
18 public:
19 CPipe();
20 ~CPipe();
21
22 void CloseReadPipe();
23 void CloseWritePipe();
24
25 bool Peek(PVOID Buffer, DWORD BufferSize, PDWORD BytesRead, PDWORD TotalBytesAvailable);
26 DWORD Read(PVOID Buffer, DWORD NumberOfBytesToRead, PDWORD NumberOfBytesRead, DWORD TimeoutMilliseconds);
27 bool Write(LPCVOID Buffer, DWORD NumberOfBytesToWrite, PDWORD NumberOfBytesWritten);
28
29 friend class CPipedProcess;
30 };