479 lines
13 KiB
Plaintext
479 lines
13 KiB
Plaintext
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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);
|
|
}
|
|
|