2025-04-27 07:49:33 -04:00

116 lines
2.4 KiB
C++

/*++
Copyright (C) 1997-2001 Microsoft Corporation
Module Name:
ANONPIPE.H
Abstract:
Defines the functions used for anonpipe transport.
History:
a-davj 16-june-97 Created.
--*/
/////////////////////////////////////////////////////////////////////
//
//
//
/////////////////////////////////////////////////////////////////////
#ifndef _WBEMANONPIPE_
#define _WBEMANONPIPE_
//***************************************************************************
//
// CLASS NAME:
//
// CComLink_LPipe
//
// DESCRIPTION:
//
// ANONPIPE implementation of the CComLink.
//
//***************************************************************************
//***************************************************************************
//
// CLASS NAME:
//
// CComLink_LPipe
//
// DESCRIPTION:
//
// Unnamed pipe implementation of the CComLink.
//
//***************************************************************************
class CComLink_LPipe : public CComLink
{
friend DWORD LaunchReadPipeThread ( LPDWORD pParam ) ;
public:
CComLink_LPipe (
LinkType Type ,
HANDLE a_Read ,
HANDLE a_Write ,
HANDLE a_Term
) ;
// Destructor for Pipe
// Sends a COMLINK_MSG_NOTIFY_DESTRUCT to
// its partner, if any.
// Does a Release() on the CMsgHandler as well.
~CComLink_LPipe () ;
DWORD Call ( IN IOperation &a_Operation ) ;
DWORD UnLockedTransmit ( CTransportStream &a_WriteStream ) ;
DWORD Transmit ( CTransportStream &a_WriteStream ) ;
DWORD StrobeConnection () ;
DWORD ProbeConnection () ;
DWORD HandleCall ( IN IOperation &a_Operation ) ;
DWORD UnLockedShutdown () ;
DWORD Shutdown () ;
void UnLockedDropLink () ;
void DropLink () ;
CObjectSinkProxy* CreateObjectSinkProxy (IN IStubAddress& dwStubAddr,
IN IWbemServices* pServices);
private:
DWORD DoReading () ;
void ProcessRead ( PACKET_HEADER *ph , BYTE *pData , DWORD dwDataSize ) ;
/*
* Pipe Handles
*/
HANDLE m_Read ; // Handle used to read from PIPE
HANDLE m_Write ; // Handle used to write to PIPE
HANDLE m_Terminate ; // Handle used to inform of termination from server/client
/*
* Thread Handle of Reader thread
*/
HANDLE m_ReadThread; // Thread Handle created for Synchronous listening
HANDLE m_ReadThreadDoneEvent ; // Event Handle used to indicate thread has shutdown, based on hTermEvent.
} ;
#endif