NT4/private/ole32/com/remote/sichnl.hxx
2020-09-30 17:12:29 +02:00

112 lines
3.2 KiB
C++

//+-------------------------------------------------------------------
//
// File: sichnl.hxx
//
// Contents: IChannelService data structures
//
// Functions:
//
// History: 14 April 1994 AlexMit Created
//
// Notes: This file contains data structures used when thread
// switching for the IChannelService interface.
//
//--------------------------------------------------------------------
#ifndef __SICHNL__
#define __SICHNL__
#include <olerem.h>
#include <channelb.hxx>
struct SGetContextHdl : STHREADCALLINFO
{
SGetContextHdl (TRANSMIT_FN fn,CALLCATEGORY callcat,DWORD tid=0)
: STHREADCALLINFO(fn, callcat, tid) { }
SGetContextHdl (DISPATCH_FN fn,CALLCATEGORY callcat,REFLID lid)
: STHREADCALLINFO(fn, callcat, lid) { }
virtual ~SGetContextHdl();
CRpcService *service;
// Client side only.
SEndPoint *psepClient;
};
struct SGetChannelId : STHREADCALLINFO
{
SGetChannelId (TRANSMIT_FN fn,CALLCATEGORY callcat,DWORD tid=0)
: STHREADCALLINFO(fn, callcat, tid) { psepClient = NULL; }
SGetChannelId (DISPATCH_FN fn,CALLCATEGORY callcat,REFLID lid)
: STHREADCALLINFO(fn, callcat, lid) { psepClient = NULL; }
virtual ~SGetChannelId();
#if DBG == 1
virtual STHREADCALLINFO *MakeAsyncCopy(STHREADCALLINFO *)
{ Win4Assert(!"GetChannelId cannot be async"); return NULL; }
#endif
CRpcService *service;
OID object_id;
DWORD flags;
DWORD channel_id;
DWORD dwClientTID;
// Client side only.
HAPT server;
SEndPoint *psepClient;
};
struct SReleaseChannel : STHREADCALLINFO
{
SReleaseChannel (TRANSMIT_FN fn,CALLCATEGORY callcat,DWORD tid=0)
: STHREADCALLINFO(fn, callcat, tid) { }
SReleaseChannel (DISPATCH_FN fn,CALLCATEGORY callcat,REFLID lid)
: STHREADCALLINFO(fn, callcat, lid) { }
virtual ~SReleaseChannel ();
virtual STHREADCALLINFO *MakeAsyncCopy(STHREADCALLINFO *);
ULONG count;
BOOL async;
DWORD channel_id;
// Client side only
CRpcService *service; // (NULL on server side)
protected:
// this ctor is used in conjunction with MakeAsyncCopy and sets up the vtable
// pointer; MakeAsyncCopy actually initializes the instance. A normal copy
// constructor isn't used because they aren't virtual.
SReleaseChannel(INIT_VTABLE i) : STHREADCALLINFO(i) { }
};
struct SDoChannelOperation : STHREADCALLINFO
{
SDoChannelOperation(TRANSMIT_FN fn,CALLCATEGORY callcat,DWORD tid=0)
: STHREADCALLINFO(fn, callcat, tid) { }
SDoChannelOperation(DISPATCH_FN fn,CALLCATEGORY callcat,REFLID lid)
: STHREADCALLINFO(fn, callcat, lid) { }
virtual ~SDoChannelOperation();
#if DBG == 1
virtual STHREADCALLINFO *MakeAsyncCopy(STHREADCALLINFO *)
{ Win4Assert(!"GetChannelId cannot be async"); return NULL; }
#endif
DWORD chop;
GUID guid;
DWORD channel_id;
// Client side only
CRpcService *service; // (NULL on server side)
HAPT hapt;
};
// Prototypes.
HRESULT ThreadGetChannelId ( STHREADCALLINFO *call );
HRESULT ThreadReleaseChannel ( STHREADCALLINFO *call );
HRESULT ThreadDoChannelOperation( STHREADCALLINFO *call );
#endif // __SICHNL__