|
|
import "oaidl.idl"; import "ocidl.idl";
#define UUID_IAppletSession e65dc590-a4d9-11d2-b724-00104bc51339 #define UUID_IAppletSessionNotify f7c10ec0-a4d9-11d2-b724-00104bc51339
#define UUID_IApplet 07970b30-a4da-11d2-b724-00104bc51339 #define UUID_IAppletNotify 16153670-a4da-11d2-b724-00104bc51339
#include "nmapptyp.h"
/* ------ octet string ------ */
typedef struct tagAppletOctetString { ULONG cbStrSize; [size_is(cbStrSize)] BYTE* pbValue; } AppletOctetString;
typedef struct tagAppletLongString { ULONG nStrLen; [size_is(nStrLen)] ULONG *pnValue; } AppletLongString;
/* ------ object, session, and registry keys ------ */
typedef struct tagAppletObjectKey { AppletKeyType eType; AppletLongString lstrObjectID; AppletOctetString ostrH221NonStdID; } AppletObjectKey;
typedef struct tagAppletSessionKey { AppletObjectKey AppletProtocolKey; AppletSessionID nSessionID; } AppletSessionKey;
typedef struct tagAppletRegistryKey { AppletSessionKey SessionKey; AppletOctetString ostrResourceID; } AppletRegistryKey;
/* ------ registry request ------ */
typedef struct tagAppletRegistryRequest { AppletRegistryCommand eCommand; AppletRegistryKey RegistryKey; // register channel AppletChannelID nChannelID; // set parameter AppletOctetString ostrParamValue; AppletModificationRights eParamModifyRights; // allocate handle ULONG cHandles; } AppletRegistryRequest;
/* ------ channel request ------ */
typedef struct tagAppletChannelRequest { AppletChannelCommand eCommand; AppletChannelID nChannelID; ULONG cUsers; [size_is(cUsers)] AppletUserID *aUsers; } AppletChannelRequest;
/* ------ token request ------ */
typedef struct tagAppletTokenRequest { AppletTokenCommand eCommand; AppletTokenID nTokenID; AppletUserID uidGiveTo; HRESULT hrGiveResponse; } AppletTokenRequest;
/* ------ capability ------ */
typedef struct tagAppletCapabilityID { AppletCapIDType eType; AppletObjectKey nNonStdCap; ULONG nStdCap; } AppletCapabilityID;
typedef struct tagAppletCapability { AppletCapabilityID CapID; AppletCapabilityClass CapClass; ULONG cEntities; } AppletCapability;
typedef struct tagAppletCapability2 { AppletCapabilityID CapID; AppletOctetString *pCapData; } AppletCapability2;
typedef struct tagAppletProtocolEntity { AppletSessionKey SessionKey; AppletChannelType eStartupChannelType; BOOL fMustBeInvoked; ULONG cExpectedCapabilities; [size_is(cExpectedCapabilities)] AppletCapability **apExpectedCapabilities; } AppletProtocolEntity;
// // T120 Applet Session Callback //
typedef struct tagAppletRecord { AppletNodeID nNodeID; AppletEntityID nEntityID; BOOL fEnrolledActively; BOOL fConductingCapable; AppletChannelType eStartupChannelType; AppletUserID nAppletUserID; ULONG cCapabilities; [size_is(cCapabilities)] AppletCapability2 **apCapabilities; } AppletRecord;
typedef struct tagAppletRoster { AppletSessionKey SessionKey; BOOL fRosterChanged; ULONG nInstanceNumber; BOOL fNodesAdded; BOOL fNodesRemoved; BOOL fCapabilitiesChanged; ULONG cRecords; [size_is(cRecords)] AppletRecord **apAppletRecords; ULONG cCapabilities; [size_is(cCapabilities)] AppletCapability **apCapabilities; } AppletRoster;
typedef struct tagAppletRegistryItem { AppletRegistryItemType ItemType; // channel AppletChannelID nChannelID; // token AppletTokenID nTokenID; // parameter AppletOctetString ostrParamValue; } AppletRegistryItem;
typedef struct tagAppletRegistryEntryOwner { BOOL fEntryOwned; AppletNodeID nOwnerNodeID; AppletEntityID nOwnerEntityID; } AppletRegistryEntryOwner;
typedef struct tagAppletSessionRequest { // session specific AppletSessionKey SessionKey; // applet enroll AppletChannelType nStartupChannelType; // collapsed capability ULONG cCollapsedCaps; [size_is(cCollapsedCaps)] AppletCapability **apCollapsedCaps; // non-collapsing capability ULONG cNonCollapsedCaps; [size_is(cNonCollapsedCaps)] AppletCapability2 **apNonCollapsedCaps; // static channels ULONG cStaticChannels; [size_is(cStaticChannels)] AppletChannelID *aStaticChannels; // dynamic channels ULONG cDynamicChannels; [size_is(cDynamicChannels)] AppletRegistryKey *aChannelRegistryKeys; } AppletSessionRequest;
[ object, uuid(UUID_IAppletSessionNotify), pointer_default(unique) ] interface IAppletSessionNotify : IUnknown { HRESULT JoinSessionConfirm( [in] HRESULT hrResult, [in] AppletUserID uidMyself, [in] AppletNodeID nidMyself, [in] AppletSessionID sidMyself, [in] AppletEntityID eidMyself, [in] ULONG cDynamicChannels, [in,size_is(cDynamicChannels)] AppletChannelID aDynamicChannels[]);
HRESULT LeaveSessionIndication( [in] AppletReason eReason, [in] AppletUserID uidLeave);
HRESULT SendDataIndication( [in] BOOL fUniformSend, [in] AppletUserID uidInitiator, [in] AppletChannelID nChannelID, [in] AppletPriority eDataPriority, [in] AppletOctetString Data);
HRESULT RosterReportIndication( [in] ULONG cRosters, [in,size_is(cRosters)] AppletRoster **apAppRosters);
HRESULT InquireRosterConfirm( [in] HRESULT hrResult, [in] ULONG cRosters, [in,size_is(cRosters)] AppletRoster **apAppRosters);
HRESULT InvokeAppletConfirm( [in] AppletRequestTag nReqTag, [in] HRESULT hrResult);
HRESULT RegistryConfirm( [in] AppletRegistryCommand eCommand, [in] HRESULT hrResult, [in] AppletRegistryKey *pRegistryKey, [in] AppletRegistryItem *pRegistryItem, [in] AppletRegistryEntryOwner *pEntryOwner, [in] AppletModificationRights eRights);
HRESULT AllocateHandleConfirm( [in] HRESULT hrResult, [in] ULONG nFirstHandle, [in] ULONG cHandles);
HRESULT ChannelConfirm( [in] AppletChannelCommand eCommand, [in] HRESULT hrResult, [in] AppletChannelID nChannelID);
HRESULT ChannelIndication( [in] AppletChannelCommand eCommand, [in] AppletChannelID nChannelID, [in] AppletReason eReason, [in] AppletUserID uidManager);
HRESULT TokenConfirm( [in] AppletTokenCommand eCommand, [in] HRESULT hrResult, [in] AppletTokenID nTokenID);
HRESULT TestTokenConfirm( [in] AppletTokenID nTokenID, [in] AppletTokenStatus eStatus);
HRESULT TokenIndication( [in] AppletTokenCommand eCommand, [in] AppletReason eReason, [in] AppletTokenID nTokenID, [in] AppletUserID uidInitiator); };
[ object, uuid(UUID_IAppletSession), pointer_default(unique) ] interface IAppletSession : IUnknown { /* ------ Basic Info ------ */
HRESULT GetConfID([out] AppletConfID *pnConfID);
HRESULT IsThisNodeTopProvider([out] BOOL *pfTopProvider);
/* ------ Join Conference ------ */
HRESULT Join([in] AppletSessionRequest *pRequest);
HRESULT Leave(void);
/* ------ Send Data ------ */
HRESULT SendData( [in] BOOL fUniformSend, [in] AppletChannelID nChannelID, [in] AppletPriority ePriority, [in] ULONG cbBufSize, [in,size_is(cbBufSize)] BYTE *pBuffer);
/* ------ Invoke Applet ------ */
HRESULT InvokeApplet( [out] AppletRequestTag *pnReqTag, [in] AppletProtocolEntity *pAPE, [in] ULONG cNodes, [in,size_is(cNodes)] AppletNodeID aNodeIDs[]);
/* ------ Inquiry ------ */
HRESULT InquireRoster([in] AppletSessionKey *pSessionKey);
/* ------ Registry Services ------ */
HRESULT RegistryRequest([in] AppletRegistryRequest *pRequest);
/* ------ Channel Services ------ */
HRESULT ChannelRequest([in] AppletChannelRequest *pRequest);
/* ------ Token Services ------ */
HRESULT TokenRequest([in] AppletTokenRequest *pRequest);
/* ------ Notification registration / unregistration------ */
HRESULT Advise( [in] IAppletSessionNotify *pNotify, [out] DWORD *pdwCookie);
HRESULT UnAdvise([in] DWORD dwCookie);
};
[ object, uuid(UUID_IAppletNotify), pointer_default(unique) ] interface IAppletNotify : IUnknown { HRESULT PermitToJoinSessionIndication( [in] AppletConfID nConfID, [in] BOOL fPermissionGranted);
HRESULT AutoJoinSessionIndication( [in] IAppletSession *pSession, [in] HRESULT hrResult, [in] AppletUserID uidMyself, [in] AppletNodeID nidMyself, [in] AppletSessionID sidMyself, [in] AppletEntityID eidMyself, [in] ULONG cDynamicChannels, [in,size_is(cDynamicChannels)] AppletChannelID aDynamicChannels[]); };
[ object, uuid(UUID_IApplet), pointer_default(unique) ] interface IApplet : IUnknown { /* ------ Initialization ------ */
HRESULT Initialize(void);
/* ------ Auto Join ------ */
HRESULT RegisterAutoJoin([in] AppletSessionRequest *pRequest);
HRESULT UnregisterAutoJoin(void);
/* ------ Session ------ */
HRESULT CreateSession( [out] IAppletSession **ppSession, [in] AppletConfID nConfID);
/* ------ Notification registration / unregistration------ */
HRESULT Advise( [in] IAppletNotify *pNotify, [out] DWORD *pdwCookie);
HRESULT UnAdvise([in] DWORD dwCookie);
};
// These version numbers should match the version attribute in the library definitoen below cpp_quote("enum { NmApplet_Ver_Major = 1};") cpp_quote("enum { NmApplet_Ver_Minor = 0};") [ uuid(8C3ADF96-CCFE-11d2-AD10-00C04F72DD47), version(1.0), helpstring("NmApplet 1.0 Type Library") ] library NmApplet { importlib("stdole2.tlb");
[ uuid(8C3ADF99-CCFE-11d2-AD10-00C04F72DD47), helpstring("NetMeeting Applet") ] coclass NmApplet { [default] interface IApplet; }; };
|