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

52 lines
1.2 KiB
C++

// Inproc.h
#pragma once
#include "NCDefs.h"
#include "Transport.h"
class CInprocClient : public CTransport, public IPostBuffer
{
public:
CInprocClient();
virtual ~CInprocClient();
// Overrideables
virtual IsReady();
virtual BOOL SendData(LPBYTE pBuffer, DWORD dwSize);
virtual void Deinit();
virtual BOOL InitCallback();
virtual void SendMsgReply(NC_SRVMSG_REPLY *pReply);
// Init function.
virtual BOOL Init(LPCWSTR szBasePipeName, LPCWSTR szBaseProviderName);
BOOL SignalProviderDisabled();
// IPostBuffer
virtual ULONG AddRef();
virtual ULONG Release();
virtual HRESULT PostBuffer(LPBYTE pData, DWORD dwSize);
protected:
HANDLE // Objects visible to P2 client but created by the server.
m_heventProviderReady,
// Other handles used for implementation
m_hthreadReady,
m_heventDone;
IPostBuffer *m_pSrvBuffer;
WCHAR m_szPipeName[MAX_PATH];
BOOL m_bDone;
HINSTANCE m_hProv;
void DeinitBuffer();
BOOL GetBuffer();
BOOL StartReadyThreadProc();
static DWORD WINAPI ProviderReadyThreadProc(CInprocClient *pThis);
};