windows-nt/Source/XPSP1/NT/termsrv/remdsk/rds/h/igccapp.h
2020-09-26 16:20:57 +08:00

334 lines
8.5 KiB
C

#ifndef _IGCCAPP_H_
#define _IGCCAPP_H_
#include <basetyps.h>
#include "gcc.h"
#define GCCAPI_(_type_) virtual _type_ __stdcall
#define GCCAPI GCCAPI_(GCCError)
typedef struct
{
GCCSessionKey *pSessionKey;
BOOL fEnrollActively;
UserID nUserID;
BOOL fConductingCapable;
MCSChannelType nStartupChannelType;
ULONG cNonCollapsedCaps;
GCCNonCollCap **apNonCollapsedCaps;
ULONG cCollapsedCaps;
GCCAppCap **apCollapsedCaps;
BOOL fEnroll;
}
GCCEnrollRequest, *PGCCEnrollRequest;
typedef struct
{
ULONG cNodes;
GCCNodeID *aNodeIDs;
}
GCCSimpleNodeList, *PGCCSimpleNodeList;
typedef struct
{
ULONG cApes;
GCCAppProtocolEntity **apApes;
}
GCCAppProtEntityList, *PGCCAppProtEntityList;
typedef struct
{
GCCConfID nConfID;
ULONG cRosters;
GCCAppRoster **apAppRosters;
GCCResult nResult;
LPVOID pReserved; // do not touch
}
GCCAppRosterInquireConfirm, *PGCCAppRosterInquireConfirm;
typedef struct
{
GCCConfID nConfID;
GCCConfName ConfName;
LPSTR pszConfModifier;
LPWSTR pwszConfDescriptor;
GCCConfRoster *pConfRoster;
GCCResult nResult;
}
GCCConfRosterInquireConfirm, *PGCCConfRosterInquireConfirm;
typedef struct
{
GCCConfID nConfID;
BOOL fPermissionGranted;
}
GCCAppPermissionToEnrollInd, *PGCCAppPermissionToEnrollInd;
typedef struct
{
GCCConfID nConfID;
// GCCSessionKey *pSessionKey;
GCCSessionID sidMyself;
GCCEntityID eidMyself;
GCCNodeID nidMyself;
GCCResult nResult;
GCCRequestTag nReqTag;
}
GCCAppEnrollConfirm, *PGCCAppEnrollConfirm;
typedef struct
{
GCCConfID nConfID;
// GCCAppProtEntityList *pApeList;
GCCResult nResult;
GCCRequestTag nReqTag;
}
GCCAppInvokeConfirm, *PGCCAppInvokeConfirm;
typedef struct
{
GCCConfID nConfID;
GCCAppProtEntityList ApeList;
GCCNodeID nidInvoker;
}
GCCAppInvokeInd, *PGCCAppInvokeInd;
typedef struct
{
GCCConfID nConfID;
ULONG cRosters;
GCCAppRoster **apAppRosters;
LPVOID pReserved; // do not touch
}
GCCAppRosterReportInd, *PGCCAppRosterReportInd;
typedef struct
{
GCCConfID nConfID;
GCCRegistryKey *pRegKey;
GCCRegistryItem *pRegItem;
GCCRegistryEntryOwner EntryOwner;
GCCModificationRights eRights;
GCCResult nResult;
BOOL fDeliveryEnabled; // for monitor confirm only
}
GCCRegistryConfirm, *PGCCRegistryConfirm;
typedef struct
{
GCCConfID nConfID;
ULONG nFirstHandle;
ULONG cHandles;
GCCResult nResult;
}
GCCRegAllocateHandleConfirm, *PGCCRegAllocateHandleConfirm;
typedef struct
{
GCCConfID nConfID;
BOOL fConducted;
GCCNodeID nidConductor;
BOOL fGranted;
GCCResult nResult;
}
GCCConductorInquireConfirm, *PGCCConductorInquireConfirm;
typedef struct
{
GCCConfID nConfID;
BOOL fThisNodeIsGranted;
GCCSimpleNodeList Granted;
GCCSimpleNodeList Waiting;
LPVOID pReserved; // do not touch
}
GCCConductorPermitGrantInd, *PGCCConductorPermitGrantInd;
typedef struct
{
GCCConfID nConfID;
GCCNodeID nidConductor;
}
GCCConductorAssignInd, *PGCCConductorAssignInd;
typedef struct
{
GCCConfID nConfID;
}
GCCConductorReleaseInd, *PConductorReleaseInd;
/*
* GCCAppSapMsg
* This structure defines the callback message that is passed from GCC to
* a user application when an indication or confirm occurs.
*/
typedef struct
{
GCCMessageType eMsgType;
LPVOID pAppData;
LPVOID reserved1; // reserved
GCCConfID nConfID; // reserved
union
{
GCCAppPermissionToEnrollInd AppPermissionToEnrollInd;
GCCAppEnrollConfirm AppEnrollConfirm;
GCCAppRosterInquireConfirm AppRosterInquireConfirm;
GCCAppRosterReportInd AppRosterReportInd;
GCCConfRosterInquireConfirm ConfRosterInquireConfirm;
GCCAppInvokeConfirm AppInvokeConfirm;
GCCAppInvokeInd AppInvokeInd;
GCCRegistryConfirm RegistryConfirm;
GCCRegAllocateHandleConfirm RegAllocHandleConfirm;
GCCConductorInquireConfirm ConductorInquireConfirm;
GCCConductorPermitGrantInd ConductorPermitGrantInd;
GCCConductorAssignInd ConductorAssignInd;
GCCConductorReleaseInd ConductorReleaseInd;
};
}
GCCAppSapMsg, *PGCCAppSapMsg;
typedef void (CALLBACK *LPFN_APP_SAP_CB) (GCCAppSapMsg *);
#undef INTERFACE
#define INTERFACE IGCCAppSap
DECLARE_INTERFACE(IGCCAppSap)
{
STDMETHOD_(void, ReleaseInterface) (THIS) PURE;
/* application roster services */
STDMETHOD_(GCCError, AppEnroll) (THIS_
IN GCCConfID,
IN GCCEnrollRequest *,
OUT PGCCRequestTag)
PURE;
STDMETHOD_(GCCError, AppInvoke) (THIS_
IN GCCConfID,
IN GCCAppProtEntityList *,
IN GCCSimpleNodeList *,
OUT PGCCRequestTag)
PURE;
// to acquire one or all full-refresh app roster.
// can be called by both app sap and control sap.
STDMETHOD_(GCCError, AppRosterInquire) (THIS_
IN GCCConfID,
IN GCCSessionKey *,
OUT GCCAppSapMsg **)
PURE;
STDMETHOD_(void, FreeAppSapMsg) (THIS_
IN GCCAppSapMsg *)
PURE;
/* conference roster service */
STDMETHOD_(BOOL, IsThisNodeTopProvider) (THIS_
IN GCCConfID)
PURE;
STDMETHOD_(GCCNodeID, GetTopProvider) (THIS_
IN GCCConfID)
PURE;
// to acquire a full-refresh conf roster.
STDMETHOD_(GCCError, ConfRosterInquire) (THIS_
IN GCCConfID,
OUT GCCAppSapMsg **)
PURE;
/* registry services */
STDMETHOD_(GCCError, RegisterChannel) (THIS_
IN GCCConfID,
IN GCCRegistryKey *,
IN ChannelID)
PURE;
STDMETHOD_(GCCError, RegistryAssignToken) (THIS_
IN GCCConfID,
IN GCCRegistryKey *)
PURE;
STDMETHOD_(GCCError, RegistrySetParameter) (THIS_
IN GCCConfID,
IN GCCRegistryKey *,
IN LPOSTR,
IN GCCModificationRights)
PURE;
STDMETHOD_(GCCError, RegistryRetrieveEntry) (THIS_
IN GCCConfID,
IN GCCRegistryKey *)
PURE;
STDMETHOD_(GCCError, RegistryDeleteEntry) (THIS_
IN GCCConfID,
IN GCCRegistryKey *)
PURE;
STDMETHOD_(GCCError, RegistryMonitor) (THIS_
IN GCCConfID,
IN BOOL fEnableDelivery,
IN GCCRegistryKey *)
PURE;
STDMETHOD_(GCCError, RegistryAllocateHandle) (THIS_
IN GCCConfID,
IN ULONG cHandles)
PURE;
/* conductorship services */
STDMETHOD_(GCCError, ConductorInquire) (THIS_
IN GCCConfID)
PURE;
};
//
// GCC Application Service Access Point exports
//
#ifdef __cplusplus
extern "C" {
#endif
GCCError WINAPI GCC_CreateAppSap(
OUT IGCCAppSap **,
IN LPVOID, // user defined data
IN LPFN_APP_SAP_CB);
#ifdef __cplusplus
}
#endif
#endif // _IGCCAPP_H_