//+--------------------------------------------------------------------------- // // Copyright 1995 - 1997 Microsoft Corporation. All Rights Reserved. // // Contents: Conferencing Services Object interfaces // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright 1995-1997 Microsoft Corporation. All Rights Reserved.") cpp_quote("//") cpp_quote("// File: imsconf3.h") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; interface INmManager; interface INmManagerNotify; interface INmMember; interface INmCall; interface INmCallNotify; interface INmConference; interface INmConferenceNotify; interface INmChannelData; interface INmChannelDataNotify; interface IEnumNmMember; cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("//") cpp_quote("// Constants") cpp_quote("") cpp_quote("#define NO_LISTEN_PORT 0") cpp_quote("#define DEFAULT_LISTEN_PORT 522") cpp_quote("#define NMMANAGER_SERVICE 0x0001") cpp_quote("#define NMMANAGER_SERVER 0x0002") cpp_quote("#define NMMANAGER_CLIENT 0x0004") cpp_quote("HRESULT WINAPI CreateNmManager(INmManager ** ppMan);") cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Error Codes") cpp_quote("") cpp_quote("#define NM_E(e) (0x81000000UL | (ULONG) (e))") cpp_quote("") cpp_quote("enum {") cpp_quote("") cpp_quote("// Call specific error codes") cpp_quote("//") cpp_quote(" NM_CALLERR_NOT_INITIALIZED = NM_E(0x0100),") // Local system not initialized cpp_quote(" NM_CALLERR_NAME_RESOLUTION = NM_E(0x0102),") // Name resolution failed cpp_quote(" NM_CALLERR_PASSWORD = NM_E(0x0103),") // Invalid conference password cpp_quote(" NM_CALLERR_CONFERENCE_NAME = NM_E(0x0104),") // Problem with the conference name cpp_quote(" NM_CALLERR_IN_CONFERENCE = NM_E(0x0105),") // Remote system is in a conference cpp_quote(" NM_CALLERR_NOT_FOUND = NM_E(0x0106),") // User/Address not found cpp_quote(" NM_CALLERR_MCU = NM_E(0x0107),") // Can't invite MCU into existing conference cpp_quote(" NM_CALLERR_REJECTED = NM_E(0x0108),") // Remote system rejected the request cpp_quote(" NM_CALLERR_INVALID_IPADDRESS = NM_E(0x01F2),") // Tried ip type with invalid ip address cpp_quote(" NM_CALLERR_HOST_RESOLUTION_FAILED = NM_E(0x01F3),") // Tried computer type with unreachable host name cpp_quote(" NM_CALLERR_NO_ADDRESS = NM_E(0x01F6),") // No address component cpp_quote(" NM_CALLERR_INVALID_ADDRESS = NM_E(0x01F7),") // Invalid address component cpp_quote(" NM_CALLERR_PARAM_ERROR = NM_E(0x01FA),") // Error in parameter syntax cpp_quote(" NM_CALLERR_SECURITY_MISMATCH = NM_E(0x01FB),") // Desired security didnt match policy or current conference cpp_quote(" NM_CALLERR_UNESCAPE_ERROR = NM_E(0x01FC),") // Parse error during unescaping cpp_quote(" NM_CALLERR_ALREADY_CALLING = NM_E(0x01FD),") // Already calling this person cpp_quote(" NM_CALLERR_LOOPBACK = NM_E(0x01FE),") // Called Local Machine cpp_quote(" NM_CALLERR_UNKNOWN = NM_E(0x01FF),") // Unknown call error cpp_quote("") cpp_quote("// other error codes") cpp_quote("//") cpp_quote(" NM_E_NOT_INITIALIZED = NM_E(0x0200),") // INmManager not Initialized cpp_quote(" NM_E_NO_T120_CONFERENCE = NM_E(0x0202),") // Not in a T.120 data conference cpp_quote(" NM_E_NOT_ACTIVE = NM_E(0x0203),") // NetMeeting is not running cpp_quote(" NM_E_USER_CANCELED_SETUP = NM_E(0x0205),") // User canceled NetMeeting setup wizard cpp_quote(" NM_E_ALREADY_RUNNING = NM_E(0x0206),") // This means that NetMeeting is already running cpp_quote(" NM_E_SHARING_NOT_AVAILABLE = NM_E(0x0207),") // This means that NetMeeting is already running cpp_quote("};") cpp_quote("") cpp_quote("") cpp_quote("// INmChannelDataNotify.DataReceived dwFlags") cpp_quote("#define NM_DF_BROADCAST 0x00000010") // data was broadcast to everyone cpp_quote("#define NM_DF_PRIVATE 0x00000020") // data was private cpp_quote("#define NM_DF_SEGMENT_END 0x00000040") // end of data block cpp_quote("#define NM_DF_SEGMENT_BEGIN 0x00000080") // start of data block cpp_quote("// INmChannelData.SendData dwFlags") cpp_quote("// NOTE THESE ARE THE MCSSenDataMasks values") cpp_quote("#define DATA_TOP_PRIORITY 0x0001") cpp_quote("#define DATA_HIGH_PRIORITY 0x0002") cpp_quote("#define DATA_MEDIUM_PRIORITY 0x0004") cpp_quote("#define DATA_LOW_PRIORITY 0x0008") cpp_quote("#define DATA_UNIFORM_SEND 0x0010") cpp_quote("#define DATA_NORMAL_SEND 0x0020") typedef enum tagNmConferenceState{ NM_CONFERENCE_IDLE = 0, NM_CONFERENCE_WAITING = 1, NM_CONFERENCE_INITIALIZING = 2, NM_CONFERENCE_ACTIVE = 3, } NM_CONFERENCE_STATE; typedef enum tagNM_ADDR_TYPE{ NM_ADDR_IP = 1, NM_ADDR_MACHINENAME = 2, } NM_ADDR_TYPE; typedef enum tagNmCallState{ NM_CALL_INVALID = 0, NM_CALL_INIT = 1, NM_CALL_RING = 2, NM_CALL_SEARCH = 3, NM_CALL_WAIT = 4, NM_CALL_ACCEPTED = 5, NM_CALL_REJECTED = 6, NM_CALL_CANCELED = 7, } NM_CALL_STATE; typedef enum tagNmMemberNotify{ NM_MEMBER_ADDED = 0, NM_MEMBER_REMOVED = 1, NM_MEMBER_UPDATED = 2, } NM_MEMBER_NOTIFY; typedef enum tagConfn{ // Call control CONFN_CALL_IGNORED = 0x000403, CONFN_CALL_FAILED = 0x000404, CONFN_CALL_IN_CONFERENCE = 0x000405, } CONFN; //-------------------------------------------------------------------------- // INmManager Interface [ object, uuid(0855E276-E230-428e-ACB9-8F2C7CD42848), pointer_default(unique) ] interface INmManager : IUnknown { HRESULT Initialize( [in] BSTR szName, [in] DWORD_PTR pCredentials, [in] DWORD port, [in] DWORD flags); HRESULT Call( [out] INmCall **ppCall, // Can be NULL [in] DWORD dwFlags, [in] NM_ADDR_TYPE addrType, [in] BSTR bstrAddr, [in] BSTR bstrConference, [in] BSTR bstrPassword); HRESULT CreateConference( [out] INmConference **ppConference, // Can be NULL [in] BSTR bstrName, [in] BSTR bstrPassword, [in] BOOL fSecure); } //-------------------------------------------------------------------------- // INmManagerNotify Interface [ object, uuid(EC7A4454-9DB5-4f35-BC98-F04376CA984D), pointer_default(unique) ] interface INmManagerNotify : IUnknown { typedef [unique] INmManagerNotify *LPNMMANAGERNOTIFY; HRESULT NmUI( [in] CONFN uNotify); HRESULT ConferenceCreated( [in] INmConference *pConference); HRESULT CallCreated( [in] INmCall *pCall); } //-------------------------------------------------------------------------- // INmCall Interface [ object, uuid(F0E5EE14-8112-4af3-A0D3-94C9F43FABC4), pointer_default(unique) ] interface INmCall : IUnknown { typedef [unique] INmCall *LPNMCALL; HRESULT IsIncoming( void); HRESULT GetState( [out] NM_CALL_STATE *pState); HRESULT GetAddress( [out] BSTR *pbstrAddr); HRESULT GetConference( [out] INmConference **ppConference); HRESULT Accept( void); HRESULT Reject( void); HRESULT Cancel( void); } //-------------------------------------------------------------------------- // INmCallNotify Interface [ object, uuid(4C04DBFC-E935-411d-87B4-028148B6B60C), pointer_default(unique) ] interface INmCallNotify : IUnknown { HRESULT NmUI( [in] CONFN uNotify); HRESULT StateChanged( [in] NM_CALL_STATE uState); HRESULT Failed( [in] ULONG uError); HRESULT Accepted( [in] INmConference *pConference); HRESULT CallError( [in] UINT cns); HRESULT RemoteConference( [in] BOOL fMCU, [in] BSTR *pwszConfNames, [in, out] BSTR *pbstrConfToJoin); HRESULT RemotePassword( [in] BSTR bstrConference, [in, out] BSTR *pbstrPassword, [in] BYTE *pb, [in] DWORD cb); } //-------------------------------------------------------------------------- // INmConference Interface [ object, uuid(1BFBB75A-FBE3-4e7f-94C4-629A346F31F5), pointer_default(unique) ] interface INmConference : IUnknown { typedef [unique] INmConference *LPNMCONFERENCE; HRESULT GetName( [out] BSTR *pbstrName); HRESULT GetID( [out] ULONG *puID); HRESULT GetState( [out] NM_CONFERENCE_STATE *pState); HRESULT GetTopProvider( [out] INmMember **ppMember); HRESULT EnumMember( [out] IEnumNmMember **ppEnum); HRESULT GetMemberCount( [out] ULONG * puCount); HRESULT FindMember( [in] ULONG gccID, [out] INmMember ** ppMember); HRESULT IsHosting( void); HRESULT Host( void); HRESULT Leave( void); HRESULT LaunchRemote( [in] REFGUID rguid, [in] INmMember *pMember); HRESULT CreateDataChannel( [out] INmChannelData **ppChannel, [in] REFGUID rguid); } //-------------------------------------------------------------------------- // INmConferenceNotify Interface [ object, uuid(3FA17F19-EB23-419b-85CA-882AA1ACF62D), pointer_default(unique) ] interface INmConferenceNotify : IUnknown { HRESULT NmUI( [in] CONFN uNotify); HRESULT StateChanged( [in] NM_CONFERENCE_STATE uState); HRESULT MemberChanged( [in] NM_MEMBER_NOTIFY uNotify, [in] INmMember *pMember); } //-------------------------------------------------------------------------- // INmMember Interface [ object, uuid(315D16C6-7854-4690-9C71-1358978E70DC), pointer_default(unique) ] interface INmMember : IUnknown { HRESULT GetName( [out] BSTR *pbstrName); HRESULT GetID( [out] ULONG *puID); HRESULT GetConference( [out] INmConference **ppConference); HRESULT IsSelf( void); HRESULT IsMCU( void); HRESULT Eject( void); } cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Enumerator Definitions") //-------------------------------------------------------------------------- // IEnumNmMember Interface [ object, uuid(F246195B-FF07-4016-BB36-E0DBD4CF62FE), pointer_default(unique) ] interface IEnumNmMember : IUnknown { [local] HRESULT Next( [in] ULONG cMember, [out] INmMember **rgpMember, [out] ULONG *pcFetched); [call_as(Next)] HRESULT RemoteNext( [in] ULONG cMember, [out, size_is(cMember), length_is(*pcFetched) ] INmMember **rgpMember, [out] ULONG *pcFetched, [out] ULONG *pcItems, [in] BOOL bGetNumberRemaining); HRESULT Skip( [in] ULONG cMember); HRESULT Reset(); HRESULT Clone( [out] IEnumNmMember **ppEnum); } //-------------------------------------------------------------------------- // INmChannelData Interface [ object, uuid(00DA3B21-2C7D-479a-8F43-5D0BF3E552EA), pointer_default(unique) ] interface INmChannelData : IUnknown { HRESULT IsActive( void); HRESULT SetActive( [in] BOOL fActive); HRESULT GetConference( [out] INmConference **ppConference); HRESULT EnumMember( [out] IEnumNmMember **ppEnum); HRESULT GetMemberCount( [out] ULONG * puCount); HRESULT GetGuid( [out] GUID *pguid); HRESULT SendData( [in] INmMember *pMember, [in] ULONG uSize, [in, size_is(uSize)] byte *pvBuffer, [in] ULONG uOptions); HRESULT RegistryAllocateHandle( [in] ULONG numberOfHandlesRequested); } //-------------------------------------------------------------------------- // INmChannelDataNotify Interface [ object, uuid(BD8CED3B-6953-4375-9252-9F7C87EC2804), pointer_default(unique) ] interface INmChannelDataNotify : IUnknown { HRESULT NmUI( [in] CONFN uNotify); HRESULT MemberChanged( [in] NM_MEMBER_NOTIFY uNotify, [in] INmMember *pMember); HRESULT DataSent( [in] INmMember *pMember, [in] ULONG uSize, [in, size_is(uSize)] byte *pvBuffer); HRESULT DataReceived( [in] INmMember *pMember, [in] ULONG uSize, [in, size_is(uSize)] byte *pvBuffer, [in] ULONG dwFlags); HRESULT AllocateHandleConfirm( [in] ULONG handle_value, [in] ULONG chandles); }