xref: /AOO41X/main/sal/osl/w32/pipeimpl.h (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir #ifndef _PIPEIMPL_H_
2*cdf0e10cSrcweir #define _PIPEIMPL_H_
3*cdf0e10cSrcweir 
4*cdf0e10cSrcweir #ifndef _WINDOWS_
5*cdf0e10cSrcweir # ifdef _MSC_VER
6*cdf0e10cSrcweir #   pragma warning(push,1) /* disable warnings within system headers */
7*cdf0e10cSrcweir # endif
8*cdf0e10cSrcweir #	include <windows.h>
9*cdf0e10cSrcweir # ifdef _MSC_VER
10*cdf0e10cSrcweir #   pragma warning(pop)
11*cdf0e10cSrcweir # endif
12*cdf0e10cSrcweir #endif
13*cdf0e10cSrcweir 
14*cdf0e10cSrcweir #ifndef _INC_MALLOC
15*cdf0e10cSrcweir #	include <malloc.h>
16*cdf0e10cSrcweir #endif
17*cdf0e10cSrcweir 
18*cdf0e10cSrcweir #ifndef _INC_TCHAR
19*cdf0e10cSrcweir #	ifdef UNICODE
20*cdf0e10cSrcweir #		define _UNICODE
21*cdf0e10cSrcweir #	endif
22*cdf0e10cSrcweir #	include <tchar.h>
23*cdf0e10cSrcweir #endif
24*cdf0e10cSrcweir 
25*cdf0e10cSrcweir #define EXPORT_PIPE_API
26*cdf0e10cSrcweir 
27*cdf0e10cSrcweir //============================================================================
28*cdf0e10cSrcweir //	Helper functions
29*cdf0e10cSrcweir //============================================================================
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir // Because the value of an invalid HANDLE returned by API functions differs
32*cdf0e10cSrcweir // between different functions and differs on different Windows platforms,
33*cdf0e10cSrcweir // this function checks wether the handle has a meaningfull value.
34*cdf0e10cSrcweir #ifndef __cplusplus
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #define IsValidHandle( handle ) ((DWORD)(handle) + 1 > 1)
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir #else
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir inline bool IsValidHandle( HANDLE handle )
41*cdf0e10cSrcweir {
42*cdf0e10cSrcweir 	return INVALID_HANDLE_VALUE != handle && NULL != handle;
43*cdf0e10cSrcweir }
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir extern "C" {
46*cdf0e10cSrcweir 
47*cdf0e10cSrcweir #endif	// __cplusplus
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir EXPORT_PIPE_API HANDLE WINAPI CreateSimplePipeA( LPCSTR lpName );
51*cdf0e10cSrcweir EXPORT_PIPE_API HANDLE WINAPI CreateSimplePipeW( LPCWSTR lpName );
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir #ifdef UNICODE
54*cdf0e10cSrcweir #define CreateSimplePipe	CreateSimplePipeW
55*cdf0e10cSrcweir #else
56*cdf0e10cSrcweir #define CreateSimplePipe	CreateSimplePipeA
57*cdf0e10cSrcweir #endif
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir EXPORT_PIPE_API HANDLE WINAPI OpenSimplePipeA( LPCSTR lpName );
60*cdf0e10cSrcweir EXPORT_PIPE_API HANDLE WINAPI OpenSimplePipeW( LPCWSTR lpName );
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir #ifdef UNICODE
63*cdf0e10cSrcweir #define OpenSimplePipe	OpenSimplePipeW
64*cdf0e10cSrcweir #else
65*cdf0e10cSrcweir #define OpenSimplePipe	OpenSimplePipeA
66*cdf0e10cSrcweir #endif
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir EXPORT_PIPE_API HANDLE WINAPI AcceptSimplePipeConnection( HANDLE hPipe );
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir EXPORT_PIPE_API BOOL WINAPI WaitForSimplePipeA( LPCSTR lpName, DWORD dwTimeOut );
71*cdf0e10cSrcweir EXPORT_PIPE_API BOOL WINAPI WaitForSimplePipeW( LPCWSTR lpName, DWORD dwTimeOut );
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir #ifdef UNICODE
74*cdf0e10cSrcweir #define WaitForSimplePipe	WaitForSimplePipeW
75*cdf0e10cSrcweir #else
76*cdf0e10cSrcweir #define WaitForSimplePipe	WaitForSimplePipeA
77*cdf0e10cSrcweir #endif
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir EXPORT_PIPE_API BOOL WINAPI WriteSimplePipe( HANDLE hPipe, LPCVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten, BOOL bWait );
81*cdf0e10cSrcweir EXPORT_PIPE_API BOOL WINAPI ReadSimplePipe( HANDLE hPipe, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesRead, BOOL bWait );
82*cdf0e10cSrcweir EXPORT_PIPE_API BOOL WINAPI CloseSimplePipe( HANDLE hPipe );
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir #ifdef __cplusplus
85*cdf0e10cSrcweir }	// extern "C"
86*cdf0e10cSrcweir #endif
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir #endif	// _PIPEIMPL_H_
89