windows-nt/Source/XPSP1/NT/base/fs/utils/ulib/inc/pipe.hxx

122 lines
1.5 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
pipe.hxx
Abstract:
This module defines the PIPE object.
Author:
Barry J. Gilhuly (W-Barry) June 27, 1991
Environment:
ULIB, User Mode
--*/
#if ! defined( _PIPE_ )
#define _PIPE_
DECLARE_CLASS( PIPE_STREAM );
DECLARE_CLASS( PIPE );
DECLARE_CLASS( WSTRING );
class PIPE : public OBJECT {
public:
DECLARE_CONSTRUCTOR( PIPE );
DECLARE_CAST_MEMBER_FUNCTION( PIPE );
BOOLEAN
Initialize(
IN LPSECURITY_ATTRIBUTES PipeAttributes DEFAULT NULL,
IN ULONG PipeSize DEFAULT 0,
IN PWSTRING PipeName DEFAULT NULL
);
PPIPE_STREAM
QueryReadStream(
);
PPIPE_STREAM
QueryWriteStream(
);
private:
PPIPE_STREAM
QueryPipeStream(
IN HANDLE hStream,
IN STREAMACCESS Access
);
VOID
Destroy(
);
BOOLEAN _fInitialized;
HANDLE _hReadPipe;
HANDLE _hWritePipe;
};
INLINE
PPIPE_STREAM
PIPE::QueryReadStream(
)
/*++
Routine Description:
Create a stream with read access to the PIPE.
Arguments:
None.
Return Value:
A pointer to the created stream if success. Otherwise, it returns
NULL.
--*/
{
return( QueryPipeStream( _hReadPipe, READ_ACCESS ) );
}
INLINE
PPIPE_STREAM
PIPE::QueryWriteStream(
)
/*++
Routine Description:
Create a stream with write access to the PIPE.
Arguments:
None.
Return Value:
A pointer to the created stream if success. Otherwise, it returns
NULL.
--*/
{
return( QueryPipeStream( _hWritePipe, WRITE_ACCESS ) );
}
#endif // _PIPE_