#ifndef _IGCCAPP_H_ #define _IGCCAPP_H_ #include #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_