Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1585 lines
41 KiB

//
// Copyright (c) 2000 Microsoft Corporation
//
cpp_quote("/* Copyright (c) 2000-2001 Microsoft Corporation */")
//
// RTCCore.idl : IDL source for RTCCore.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (RTCCore.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
import "control.odl";
// Types
typedef enum RTC_AUDIO_DEVICE
{
RTCAD_SPEAKER,
RTCAD_MICROPHONE
} RTC_AUDIO_DEVICE;
typedef enum RTC_VIDEO_DEVICE
{
RTCVD_RECEIVE,
RTCVD_PREVIEW
} RTC_VIDEO_DEVICE;
typedef enum RTC_EVENT
{
RTCE_CLIENT,
RTCE_REGISTRATION_STATE_CHANGE,
RTCE_SESSION_STATE_CHANGE,
RTCE_SESSION_OPERATION_COMPLETE,
RTCE_PARTICIPANT_STATE_CHANGE,
RTCE_MEDIA,
RTCE_INTENSITY,
RTCE_MESSAGING,
RTCE_BUDDY,
RTCE_WATCHER,
RTCE_PROFILE
} RTC_EVENT;
typedef enum RTC_LISTEN_MODE
{
RTCLM_NONE,
RTCLM_DYNAMIC,
RTCLM_BOTH
} RTC_LISTEN_MODE;
typedef enum RTC_CLIENT_EVENT_TYPE
{
RTCCET_VOLUME_CHANGE,
RTCCET_DEVICE_CHANGE,
RTCCET_NETWORK_QUALITY_CHANGE,
RTCCET_ASYNC_CLEANUP_DONE
} RTC_CLIENT_EVENT_TYPE;
typedef enum RTC_TERMINATE_REASON
{
RTCTR_NORMAL,
RTCTR_DND,
RTCTR_BUSY,
RTCTR_REJECT,
RTCTR_TIMEOUT,
RTCTR_SHUTDOWN
} RTC_TERMINATE_REASON;
typedef enum RTC_REGISTRATION_STATE
{
RTCRS_NOT_REGISTERED,
RTCRS_REGISTERING,
RTCRS_REGISTERED,
RTCRS_REJECTED,
RTCRS_UNREGISTERING,
RTCRS_ERROR,
RTCRS_LOGGED_OFF,
RTCRS_LOCAL_PA_LOGGED_OFF,
RTCRS_REMOTE_PA_LOGGED_OFF
} RTC_REGISTRATION_STATE;
typedef enum RTC_SESSION_STATE
{
RTCSS_IDLE,
RTCSS_INCOMING,
RTCSS_ANSWERING,
RTCSS_INPROGRESS,
RTCSS_CONNECTED,
RTCSS_DISCONNECTED
} RTC_SESSION_STATE;
typedef enum RTC_PARTICIPANT_STATE
{
RTCPS_IDLE,
RTCPS_PENDING,
RTCPS_INCOMING,
RTCPS_ANSWERING,
RTCPS_INPROGRESS,
RTCPS_ALERTING,
RTCPS_CONNECTED,
RTCPS_DISCONNECTING,
RTCPS_DISCONNECTED
} RTC_PARTICIPANT_STATE;
typedef enum RTC_WATCHER_STATE
{
RTCWS_UNKNOWN,
RTCWS_OFFERING,
RTCWS_ALLOWED,
RTCWS_BLOCKED
} RTC_WATCHER_STATE;
typedef enum RTC_OFFER_WATCHER_MODE
{
RTCOWM_OFFER_WATCHER_EVENT,
RTCOWM_AUTOMATICALLY_ADD_WATCHER
} RTC_OFFER_WATCHER_MODE;
typedef enum RTC_PRIVACY_MODE
{
RTCPM_BLOCK_LIST_EXCLUDED,
RTCPM_ALLOW_LIST_ONLY
} RTC_PRIVACY_MODE;
typedef enum RTC_SESSION_TYPE
{
RTCST_PC_TO_PC,
RTCST_PC_TO_PHONE,
RTCST_PHONE_TO_PHONE,
RTCST_IM
} RTC_SESSION_TYPE;
typedef enum RTC_PRESENCE_STATUS
{
RTCXS_PRESENCE_OFFLINE,
RTCXS_PRESENCE_ONLINE,
RTCXS_PRESENCE_AWAY,
RTCXS_PRESENCE_IDLE,
RTCXS_PRESENCE_BUSY,
RTCXS_PRESENCE_BE_RIGHT_BACK,
RTCXS_PRESENCE_ON_THE_PHONE,
RTCXS_PRESENCE_OUT_TO_LUNCH
} RTC_PRESENCE_STATUS;
typedef enum RTC_MEDIA_EVENT_TYPE
{
RTCMET_STOPPED,
RTCMET_STARTED,
RTCMET_FAILED
} RTC_MEDIA_EVENT_TYPE;
typedef enum RTC_MEDIA_EVENT_REASON
{
RTCMER_NORMAL,
RTCMER_HOLD,
RTCMER_TIMEOUT,
RTCMER_BAD_DEVICE
} RTC_MEDIA_EVENT_REASON;
typedef enum RTC_MESSAGING_EVENT_TYPE
{
RTCMSET_MESSAGE,
RTCMSET_STATUS,
} RTC_MESSAGING_EVENT_TYPE;
typedef enum RTC_MESSAGING_USER_STATUS
{
RTCMUS_IDLE,
RTCMUS_TYPING
} RTC_MESSAGING_USER_STATUS;
typedef enum RTC_DTMF
{
RTC_DTMF_0,
RTC_DTMF_1,
RTC_DTMF_2,
RTC_DTMF_3,
RTC_DTMF_4,
RTC_DTMF_5,
RTC_DTMF_6,
RTC_DTMF_7,
RTC_DTMF_8,
RTC_DTMF_9,
RTC_DTMF_STAR,
RTC_DTMF_POUND,
RTC_DTMF_A,
RTC_DTMF_B,
RTC_DTMF_C,
RTC_DTMF_D,
RTC_DTMF_FLASH
} RTC_DTMF;
typedef enum RTC_PROVIDER_URI
{
RTCPU_URIHOMEPAGE,
RTCPU_URIHELPDESK,
RTCPU_URIPERSONALACCOUNT,
RTCPU_URIDISPLAYDURINGCALL,
RTCPU_URIDISPLAYDURINGIDLE
} RTC_PROVIDER_URI;
typedef enum RTC_RING_TYPE
{
RTCRT_PHONE,
RTCRT_MESSAGE,
RTCRT_RINGBACK
} RTC_RING_TYPE;
typedef enum RTC_T120_APPLET
{
RTCTA_WHITEBOARD,
RTCTA_APPSHARING
} RTC_T120_APPLET;
typedef enum RTC_PORT_TYPE
{
RTCPT_AUDIO_RTP,
RTCPT_AUDIO_RTCP
} RTC_PORT_TYPE;
cpp_quote("#define RTCCS_FORCE_PROFILE 0x00000001")
cpp_quote("#define RTCCS_FAIL_ON_REDIRECT 0x00000002")
// Media Types
cpp_quote("#define RTCMT_AUDIO_SEND 0x00000001")
cpp_quote("#define RTCMT_AUDIO_RECEIVE 0x00000002")
cpp_quote("#define RTCMT_VIDEO_SEND 0x00000004")
cpp_quote("#define RTCMT_VIDEO_RECEIVE 0x00000008")
cpp_quote("#define RTCMT_T120_SENDRECV 0x00000010")
cpp_quote("#define RTCMT_ALL_RTP ( \\")
cpp_quote(" RTCMT_AUDIO_SEND | \\")
cpp_quote(" RTCMT_AUDIO_RECEIVE | \\")
cpp_quote(" RTCMT_VIDEO_SEND | \\")
cpp_quote(" RTCMT_VIDEO_RECEIVE ) ")
cpp_quote("#define RTCMT_ALL ( \\")
cpp_quote(" RTCMT_ALL_RTP | \\")
cpp_quote(" RTCMT_T120_SENDRECV ) ")
// Session Info
cpp_quote("#define RTCSI_PC_TO_PC 0x00000001")
cpp_quote("#define RTCSI_PC_TO_PHONE 0x00000002")
cpp_quote("#define RTCSI_PHONE_TO_PHONE 0x00000004")
cpp_quote("#define RTCSI_IM 0x00000008")
// Transports
cpp_quote("#define RTCTR_UDP 0x00000001")
cpp_quote("#define RTCTR_TCP 0x00000002")
cpp_quote("#define RTCTR_TLS 0x00000004")
// Registration Flags
cpp_quote("#define RTCRF_REGISTER_INVITE_SESSIONS 0x00000001")
cpp_quote("#define RTCRF_REGISTER_MESSAGE_SESSIONS 0x00000002")
cpp_quote("#define RTCRF_REGISTER_PRESENCE 0x00000004")
cpp_quote("#define RTCRF_REGISTER_ALL 0x00000007")
// Event Filters
cpp_quote("#define RTCEF_CLIENT 0x00000001")
cpp_quote("#define RTCEF_REGISTRATION_STATE_CHANGE 0x00000002")
cpp_quote("#define RTCEF_SESSION_STATE_CHANGE 0x00000004")
cpp_quote("#define RTCEF_SESSION_OPERATION_COMPLETE 0x00000008")
cpp_quote("#define RTCEF_PARTICIPANT_STATE_CHANGE 0x00000010")
cpp_quote("#define RTCEF_MEDIA 0x00000020")
cpp_quote("#define RTCEF_INTENSITY 0x00000040")
cpp_quote("#define RTCEF_MESSAGING 0x00000080")
cpp_quote("#define RTCEF_BUDDY 0x00000100")
cpp_quote("#define RTCEF_WATCHER 0x00000200")
cpp_quote("#define RTCEF_PROFILE 0x00000400")
cpp_quote("#define RTCEF_ALL 0x000007FF")
// Forward Definitions
interface IRTCClient;
interface IRTCClientPresence;
interface IRTCClientProvisioning;
interface IRTCProfile;
interface IRTCSession;
interface IRTCParticipant;
interface IRTCEventNotification;
interface IRTCEnumProfiles;
interface IRTCEnumParticipants;
interface IRTCCollection;
interface IRTCEnumBuddies;
interface IRTCBuddy;
interface IRTCEnumWatchers;
interface IRTCWatcher;
[
object,
uuid(07829e45-9a34-408e-a011-bddf13487cd1),
helpstring("IRTCClient Interface"),
pointer_default(unique)
]
interface IRTCClient : IUnknown
{
// initialize, shutdown
[helpstring("method Initialize")]
HRESULT Initialize();
[helpstring("method Shutdown")]
HRESULT Shutdown();
[helpstring("method PrepareForShutdown")]
HRESULT PrepareForShutdown();
// events
[propput, helpstring("property EventFilter")]
HRESULT EventFilter(
[in] long lFilter
);
[propget, helpstring("property EventFilter")]
HRESULT EventFilter(
[out, retval] long * plFilter
);
// media preferences/capabilities
[helpstring("method SetPreferredMediaTypes")]
HRESULT SetPreferredMediaTypes(
[in] long lMediaTypes,
[in] VARIANT_BOOL fPersistent
);
[propget, helpstring("property PreferredMediaTypes")]
HRESULT PreferredMediaTypes(
[out, retval] long * plMediaTypes
);
[propget, helpstring("property MediaCapabilities")]
HRESULT MediaCapabilities(
[out, retval] long * plMediaTypes
);
// sessions
[helpstring("method CreateSession")]
HRESULT CreateSession(
[in] RTC_SESSION_TYPE enType,
[in] BSTR bstrLocalPhoneURI,
[in] IRTCProfile * pProfile,
[in] long lFlags,
[out, retval] IRTCSession ** ppSession
);
// listen mode
[propput, helpstring("property ListenForIncomingSessions")]
HRESULT ListenForIncomingSessions(
[in] RTC_LISTEN_MODE enListen
);
[propget, helpstring("property ListenForIncomingSessions")]
HRESULT ListenForIncomingSessions(
[out, retval] RTC_LISTEN_MODE * penListen
);
// addresses & ports
[propget, helpstring("property NetworkAddresses")]
HRESULT NetworkAddresses(
[in] VARIANT_BOOL fTCP,
[in] VARIANT_BOOL fExternal,
[out, retval] VARIANT * pvAddresses
);
// audio control
[propput, helpstring("property Volume")]
HRESULT Volume(
[in] RTC_AUDIO_DEVICE enDevice,
[in] long lVolume
);
[propget, helpstring("property Volume")]
HRESULT Volume(
[in] RTC_AUDIO_DEVICE enDevice,
[out, retval] long * plVolume
);
[propput, helpstring("property AudioMuted")]
HRESULT AudioMuted(
[in] RTC_AUDIO_DEVICE enDevice,
[in] VARIANT_BOOL fMuted
);
[propget, helpstring("property AudioMuted")]
HRESULT AudioMuted(
[in] RTC_AUDIO_DEVICE enDevice,
[out, retval] VARIANT_BOOL * pfMuted
);
// video window
[propget, helpstring("property IVideoWindow")]
HRESULT IVideoWindow(
[in] RTC_VIDEO_DEVICE enDevice,
[out, retval] IVideoWindow ** ppIVideoWindow
);
// audio/video settings
[propput, helpstring("property PreferredAudioDevice")]
HRESULT PreferredAudioDevice(
[in] RTC_AUDIO_DEVICE enDevice,
[in] BSTR bstrDeviceName
);
[propget, helpstring("property PreferredAudioDevice")]
HRESULT PreferredAudioDevice(
[in] RTC_AUDIO_DEVICE enDevice,
[out, retval] BSTR * pbstrDeviceName
);
[propput, helpstring("property PreferredVolume")]
HRESULT PreferredVolume(
[in] RTC_AUDIO_DEVICE enDevice,
[in] long lVolume
);
[propget, helpstring("property PreferredVolume")]
HRESULT PreferredVolume(
[in] RTC_AUDIO_DEVICE enDevice,
[out, retval] long * plVolume
);
[propput, helpstring("property PreferredAEC")]
HRESULT PreferredAEC(
[in] VARIANT_BOOL bEnable
);
[propget, helpstring("property PreferredAEC")]
HRESULT PreferredAEC(
[out, retval] VARIANT_BOOL * pbEnabled
);
[propput, helpstring("property PreferredVideoDevice")]
HRESULT PreferredVideoDevice(
[in] BSTR bstrDeviceName
);
[propget, helpstring("property PreferredVideoDevice")]
HRESULT PreferredVideoDevice(
[out, retval] BSTR * pbstrDeviceName
);
// active media
[propget, helpstring("property ActiveMedia")]
HRESULT ActiveMedia(
[out, retval] long * plMediaType
);
// Network quality
[propput, helpstring("property MaxBitrate")]
HRESULT MaxBitrate(
[in] long lMaxBitrate
);
[propget, helpstring("property MaxBitrate")]
HRESULT MaxBitrate(
[out, retval] long * plMaxBitrate
);
[propput, helpstring("property TemporalSpatialTradeOff")]
HRESULT TemporalSpatialTradeOff(
[in] long lValue
);
[propget, helpstring("property TemporalSpatialTradeOff")]
HRESULT TemporalSpatialTradeOff(
[out, retval] long * plValue
);
[propget, helpstring("property NetworkQuality")]
HRESULT NetworkQuality(
[out, retval] long * plNetworkQuality
);
// T120 applet control
[helpstring("method StartT120Applet")]
HRESULT StartT120Applet(
[in] RTC_T120_APPLET enApplet
);
[helpstring("method StopT120Applets")]
HRESULT StopT120Applets();
[propget, helpstring("property IsT120AppletRunning")]
HRESULT IsT120AppletRunning(
[in] RTC_T120_APPLET enApplet,
[out, retval] VARIANT_BOOL * pfRunning
);
// local user info
[propget, helpstring("property LocalUserURI")]
HRESULT LocalUserURI(
[out, retval] BSTR * pbstrUserURI
);
[propput, helpstring("property LocalUserURI")]
HRESULT LocalUserURI(
[in] BSTR bstrUserURI
);
[propget, helpstring("property LocalUserName")]
HRESULT LocalUserName(
[out, retval] BSTR * pbstrUserName
);
[propput, helpstring("property LocalUserName")]
HRESULT LocalUserName(
[in] BSTR bstrUserName
);
// other
[helpstring("method PlayRing")]
HRESULT PlayRing(
[in] RTC_RING_TYPE enType,
[in] VARIANT_BOOL bPlay
);
[helpstring("method SendDTMF")]
HRESULT SendDTMF(
[in] RTC_DTMF enDTMF
);
[helpstring("method InvokeTuningWizard")]
HRESULT InvokeTuningWizard(
[in] OAHWND hwndParent
);
[propget, helpstring("property IsTuned")]
HRESULT IsTuned(
[out, retval] VARIANT_BOOL * pfTuned
);
}
[
object,
uuid(11c3cbcc-0744-42d1-968a-51aa1bb274c6),
helpstring("IRTCClientPresence Interface"),
pointer_default(unique)
]
interface IRTCClientPresence : IUnknown
{
// enable
[helpstring("method EnablePresence")]
HRESULT EnablePresence(
[in] VARIANT_BOOL fUseStorage,
[in] VARIANT varStorage
);
// snapshots & import/export
[helpstring("method Export")]
HRESULT Export(
[in] VARIANT varStorage
);
[helpstring("method Import")]
HRESULT Import(
[in] VARIANT varStorage,
[in] VARIANT_BOOL fReplaceAll
);
// buddies
[hidden, helpstring("method EnumerateBuddies")]
HRESULT EnumerateBuddies(
[out, retval] IRTCEnumBuddies ** ppEnum
);
[propget, helpstring("property Buddies")]
HRESULT Buddies(
[out, retval] IRTCCollection ** ppCollection
);
[propget, helpstring("property Buddy")]
HRESULT Buddy(
[in] BSTR bstrPresentityURI,
[out, retval] IRTCBuddy **ppBuddy
);
[helpstring("method AddBuddy")]
HRESULT AddBuddy(
[in] BSTR bstrPresentityURI,
[in] BSTR bstrUserName,
[in] BSTR bstrData,
[in] VARIANT_BOOL fPersistent,
[in] IRTCProfile * pProfile,
[in] long lFlags,
[out, retval] IRTCBuddy **ppBuddy
);
[helpstring("method RemoveBuddy")]
HRESULT RemoveBuddy(
[in] IRTCBuddy *pBuddy
);
// watchers
[hidden, helpstring("method EnumerateWatchers")]
HRESULT EnumerateWatchers(
[out, retval] IRTCEnumWatchers ** ppEnum
);
[propget, helpstring("property Watchers")]
HRESULT Watchers(
[out, retval] IRTCCollection ** ppCollection
);
[propget, helpstring("property Watcher")]
HRESULT Watcher(
[in] BSTR bstrPresentityURI,
[out, retval] IRTCWatcher **ppWatcher
);
[helpstring("method AddWatcher")]
HRESULT AddWatcher(
[in] BSTR bstrPresentityURI,
[in] BSTR bstrUserName,
[in] BSTR bstrData,
[in] VARIANT_BOOL fBlocked,
[in] VARIANT_BOOL fPersistent,
[out, retval] IRTCWatcher **ppWatcher
);
[helpstring("method RemoveWatcher")]
HRESULT RemoveWatcher(
[in] IRTCWatcher *pWatcher
);
[helpstring("method SetLocalPresenceInfo")]
HRESULT SetLocalPresenceInfo(
[in] RTC_PRESENCE_STATUS enStatus,
[in] BSTR bstrNotes
);
// policies
[propget, helpstring("property OfferWatcherMode")]
HRESULT OfferWatcherMode(
[out, retval] RTC_OFFER_WATCHER_MODE * penMode
);
[propput, helpstring("property OfferWatcherMode")]
HRESULT OfferWatcherMode(
[in] RTC_OFFER_WATCHER_MODE enMode
);
[propget, helpstring("property PrivacyMode")]
HRESULT PrivacyMode(
[out, retval] RTC_PRIVACY_MODE * penMode
);
[propput, helpstring("property PrivacyMode")]
HRESULT PrivacyMode(
[in] RTC_PRIVACY_MODE enMode
);
}
[
object,
uuid(B9F5CF06-65B9-4a80-A0E6-73CAE3EF3822),
helpstring("IRTCClientProvisioning Interface"),
pointer_default(unique)
]
interface IRTCClientProvisioning : IUnknown
{
[helpstring("method CreateProfile")]
HRESULT CreateProfile(
[in] BSTR bstrProfileXML,
[out, retval] IRTCProfile ** ppProfile
);
[helpstring("method EnableProfile")]
HRESULT EnableProfile(
[in] IRTCProfile * pProfile,
[in] long lRegisterFlags
);
[helpstring("method DisableProfile")]
HRESULT DisableProfile(
[in] IRTCProfile * pProfile
);
[hidden, helpstring("method EnumerateProfiles")]
HRESULT EnumerateProfiles(
[out, retval] IRTCEnumProfiles ** ppEnum
);
[propget, helpstring("property Profiles")]
HRESULT Profiles(
[out, retval] IRTCCollection ** ppCollection
);
[helpstring("method GetProfile")]
HRESULT GetProfile(
[in] BSTR bstrUserAccount,
[in] BSTR bstrUserPassword,
[in] BSTR bstrUserURI,
[in] BSTR bstrServer,
[in] long lTransport,
[in] long lCookie
);
[propget, helpstring("property SessionCapabilities")]
HRESULT SessionCapabilities(
[out, retval] long * plSupportedSessions);
};
[
object,
uuid(d07eca9e-4062-4dd4-9e7d-722a49ba7303),
helpstring("IRTCProfile Interface"),
pointer_default(unique)
]
interface IRTCProfile : IUnknown
{
[propget, helpstring("property Key")]
HRESULT Key(
[out, retval] BSTR * pbstrKey);
[propget, helpstring("property Name")]
HRESULT Name(
[out, retval] BSTR * pbstrName);
[propget, helpstring("property XML")]
HRESULT XML(
[out, retval] BSTR * pbstrXML);
// Provider
[propget, helpstring("property ProviderName")]
HRESULT ProviderName(
[out, retval] BSTR * pbstrName);
[propget, helpstring("property ProviderURI")]
HRESULT ProviderURI(
[in] RTC_PROVIDER_URI enURI,
[out, retval] BSTR * pbstrURI);
[propget, helpstring("property ProviderData")]
HRESULT ProviderData(
[out, retval] BSTR * pbstrData);
// Client
[propget, helpstring("property ClientName")]
HRESULT ClientName(
[out, retval] BSTR * pbstrName);
[propget, helpstring("property ClientBanner")]
HRESULT ClientBanner(
[out, retval] VARIANT_BOOL * pfBanner);
[propget, helpstring("property ClientMinVer")]
HRESULT ClientMinVer(
[out, retval] BSTR * pbstrMinVer);
[propget, helpstring("property ClientCurVer")]
HRESULT ClientCurVer(
[out, retval] BSTR * pbstrCurVer);
[propget, helpstring("property ClientUpdateURI")]
HRESULT ClientUpdateURI(
[out, retval] BSTR * pbstrUpdateURI);
[propget, helpstring("property ClientData")]
HRESULT ClientData(
[out, retval] BSTR * pbstrData);
// User
[propget, helpstring("property UserURI")]
HRESULT UserURI(
[out, retval] BSTR * pbstrUserURI);
[propget, helpstring("property UserName")]
HRESULT UserName(
[out, retval] BSTR * pbstrUserName);
[propget, helpstring("property UserAccount")]
HRESULT UserAccount(
[out, retval] BSTR * pbstrUserAccount);
[helpstring("method SetCredentials")]
HRESULT SetCredentials(
[in] BSTR bstrUserURI,
[in] BSTR bstrUserAccount,
[in] BSTR bstrPassword);
// Server
[propget, helpstring("property SessionCapabilities")]
HRESULT SessionCapabilities(
[out, retval] long * plSupportedSessions);
// Registration
[propget, helpstring("property State")]
HRESULT State(
[out, retval] RTC_REGISTRATION_STATE * penState);
};
[
object,
uuid(387c8086-99be-42fb-9973-7c0fc0ca9fa8),
helpstring("IRTCSession Interface"),
pointer_default(unique)
]
interface IRTCSession : IUnknown
{
// properties
[propget, helpstring("property Client")]
HRESULT Client(
[out, retval] IRTCClient **ppClient
);
[propget, helpstring("property State")]
HRESULT State(
[out, retval] RTC_SESSION_STATE * penState
);
[propget, helpstring("property Type")]
HRESULT Type(
[out, retval] RTC_SESSION_TYPE * penType
);
[propget, helpstring("property Profile")]
HRESULT Profile(
[out, retval] IRTCProfile ** ppProfile
);
[propget, helpstring("property Participants")]
HRESULT Participants(
[out, retval] IRTCCollection ** ppCollection
);
// call control
[helpstring("method Answer")]
HRESULT Answer();
[helpstring("method Terminate")]
HRESULT Terminate(
[in] RTC_TERMINATE_REASON enReason
);
[helpstring("method Redirect")]
HRESULT Redirect(
[in] RTC_SESSION_TYPE enType,
[in] BSTR bstrLocalPhoneURI,
[in] IRTCProfile * pProfile,
[in] long lFlags
);
[helpstring("method AddParticipant")]
HRESULT AddParticipant(
[in] BSTR bstrAddress,
[in] BSTR bstrName,
[out, retval] IRTCParticipant ** ppParticipant
);
[helpstring("method RemoveParticipant")]
HRESULT RemoveParticipant(
[in] IRTCParticipant * pParticipant
);
[hidden, helpstring("method EnumerateParticipants")]
HRESULT EnumerateParticipants(
[out, retval] IRTCEnumParticipants ** ppEnum
);
[propget, helpstring("property CanAddParticipants")]
HRESULT CanAddParticipants(
[out, retval] VARIANT_BOOL * pfCanAdd
);
// redirection context control
[propget, helpstring("property RedirectedUserURI")]
HRESULT RedirectedUserURI(
[out, retval] BSTR * pbstrUserURI
);
[propget, helpstring("property RedirectedUserName")]
HRESULT RedirectedUserName(
[out, retval] BSTR * pbstrUserName
);
[helpstring("method NextRedirectedUser")]
HRESULT NextRedirectedUser();
// instant messaging
[helpstring("method SendMessage")]
HRESULT SendMessage(
[in] BSTR bstrMessageHeader,
[in] BSTR bstrMessage,
[in] long lCookie
);
[helpstring("method SendMessageStatus")]
HRESULT SendMessageStatus(
[in] RTC_MESSAGING_USER_STATUS enUserStatus,
[in] long lCookie
);
// stream & custom media control
[helpstring("method AddStream")]
HRESULT AddStream(
[in] long lMediaType,
[in] long lCookie
);
[helpstring("method RemoveStream")]
HRESULT RemoveStream(
[in] long lMediaType,
[in] long lCookie
);
// keys
[propput, helpstring("property EncryptionKey")]
HRESULT EncryptionKey(
[in] long lMediaType,
[in] BSTR EncryptionKey
);
};
[
object,
uuid(ae86add5-26b1-4414-af1d-b94cd938d739),
helpstring("IRTCParticipant Interface"),
pointer_default(unique)
]
interface IRTCParticipant : IUnknown
{
[propget, helpstring("property UserURI")]
HRESULT UserURI(
[out, retval] BSTR * pbstrUserURI
);
[propget, helpstring("property Name")]
HRESULT Name(
[out, retval] BSTR * pbstrName
);
[propget, helpstring("property Removable")]
HRESULT Removable(
[out, retval] VARIANT_BOOL * pfRemovable
);
[propget, helpstring("property State")]
HRESULT State(
[out, retval] RTC_PARTICIPANT_STATE * penState
);
[propget, helpstring("property Session")]
HRESULT Session(
[out, retval] IRTCSession ** ppSession
);
};
[
object,
uuid(D6D5AB3B-770E-43e8-800A-79B062395FCA),
dual,
helpstring("IRTCProfileEvent"),
pointer_default(unique)
]
interface IRTCProfileEvent : IDispatch
{
[propget, id(1), helpstring("property Profile")]
HRESULT Profile( [out, retval] IRTCProfile ** ppProfile );
[propget, id(2), helpstring("property Cookie")]
HRESULT Cookie( [out, retval] long * plCookie );
[propget, id(3), helpstring("property StatusCode")]
HRESULT StatusCode( [out, retval] long * plStatusCode );
}
[
object,
uuid(2b493b7a-3cba-4170-9c8b-76a9dacdd644),
dual,
helpstring("IRTCClientEvent"),
pointer_default(unique)
]
interface IRTCClientEvent : IDispatch
{
[propget, id(1), helpstring("property EventType")]
HRESULT EventType( [out, retval] RTC_CLIENT_EVENT_TYPE * penEventType );
[propget, id(2), helpstring("property Client")]
HRESULT Client( [out, retval] IRTCClient **ppClient );
}
[
object,
uuid(62d0991b-50ab-4f02-b948-ca94f26f8f95),
dual,
helpstring("IRTCRegistrationStateChangeEvent"),
pointer_default(unique)
]
interface IRTCRegistrationStateChangeEvent : IDispatch
{
[propget, id(1), helpstring("property Profile")]
HRESULT Profile( [out, retval] IRTCProfile ** ppProfile );
[propget, id(2), helpstring("property State")]
HRESULT State( [out, retval] RTC_REGISTRATION_STATE * penState );
[propget, id(3), helpstring("property StatusCode")]
HRESULT StatusCode( [out, retval] long * plStatusCode );
[propget, id(4), helpstring("property StatusText")]
HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
}
[
object,
uuid(b5bad703-5952-48b3-9321-7f4500521506),
dual,
helpstring("IRTCSessionStateChangeEvent"),
pointer_default(unique)
]
interface IRTCSessionStateChangeEvent : IDispatch
{
[propget, id(1), helpstring("property Session")]
HRESULT Session( [out, retval] IRTCSession ** ppSession );
[propget, id(2), helpstring("property State")]
HRESULT State( [out, retval] RTC_SESSION_STATE * penState );
[propget, id(3), helpstring("property StatusCode")]
HRESULT StatusCode( [out, retval] long * plStatusCode );
[propget, id(4), helpstring("property StatusText")]
HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
}
[
object,
uuid(a6bff4c0-f7c8-4d3c-9a41-3550f78a95b0),
dual,
helpstring("IRTCSessionOperationCompleteEvent"),
pointer_default(unique)
]
interface IRTCSessionOperationCompleteEvent : IDispatch
{
[propget, id(1), helpstring("property Session")]
HRESULT Session( [out, retval] IRTCSession ** ppSession );
[propget, id(2), helpstring("property Cookie")]
HRESULT Cookie( [out, retval] long * plCookie );
[propget, id(3), helpstring("property StatusCode")]
HRESULT StatusCode( [out, retval] long * plStatusCode );
[propget, id(4), helpstring("property StatusText")]
HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
}
[
object,
uuid(09bcb597-f0fa-48f9-b420-468cea7fde04),
dual,
helpstring("IRTCParticipantStateChangeEvent"),
pointer_default(unique)
]
interface IRTCParticipantStateChangeEvent : IDispatch
{
[propget, id(1), helpstring("property Participant")]
HRESULT Participant( [out, retval] IRTCParticipant ** ppParticipant );
[propget, id(2), helpstring("property State")]
HRESULT State( [out, retval] RTC_PARTICIPANT_STATE * penState );
[propget, id(3), helpstring("property StatusCode")]
HRESULT StatusCode( [out, retval] long * plStatusCode );
}
[
object,
uuid(099944fb-bcda-453e-8c41-e13da2adf7f3),
dual,
helpstring("IRTCMediaEvent"),
pointer_default(unique)
]
interface IRTCMediaEvent : IDispatch
{
[propget, id(1), helpstring("property MediaType")]
HRESULT MediaType( [out, retval] long * pMediaType );
[propget, id(2), helpstring("property EventType")]
HRESULT EventType( [out, retval] RTC_MEDIA_EVENT_TYPE * penEventType );
[propget, id(3), helpstring("property EventReason")]
HRESULT EventReason( [out, retval] RTC_MEDIA_EVENT_REASON * penEventReason );
}
[
object,
uuid(4c23bf51-390c-4992-a41d-41eec05b2a4b),
dual,
helpstring("IRTCIntensityEvent"),
pointer_default(unique)
]
interface IRTCIntensityEvent : IDispatch
{
[propget, id(1), helpstring("property Level")]
HRESULT Level( [out, retval] long * plLevel );
[propget, id(2), helpstring("property Min")]
HRESULT Min( [out, retval] long * plMin );
[propget, id(3), helpstring("property Max")]
HRESULT Max( [out, retval] long * plMax );
[propget, id(4), helpstring("property Direction")]
HRESULT Direction( [out, retval] RTC_AUDIO_DEVICE * penDirection );
}
[
object,
uuid(d3609541-1b29-4de5-a4ad-5aebaf319512),
dual,
helpstring("IRTCMessagingEvent"),
pointer_default(unique)
]
interface IRTCMessagingEvent : IDispatch
{
[propget, id(1), helpstring("property Session")]
HRESULT Session( [out, retval] IRTCSession ** ppSession );
[propget, id(2), helpstring("property Participant")]
HRESULT Participant( [out, retval] IRTCParticipant ** ppParticipant );
[propget, id(3), helpstring("property Type")]
HRESULT EventType( [out, retval] RTC_MESSAGING_EVENT_TYPE * penEventType );
[propget, id(4), helpstring("property Message")]
HRESULT Message( [out, retval] BSTR * pbstrMessage );
[propget, id(5), helpstring("property MessageHeader")]
HRESULT MessageHeader( [out, retval] BSTR * pbstrMessageHeader );
[propget, id(6), helpstring("property UserStatus")]
HRESULT UserStatus( [out, retval] RTC_MESSAGING_USER_STATUS * penUserStatus );
}
[
object,
uuid(f36d755d-17e6-404e-954f-0fc07574c78d),
dual,
helpstring("IRTCBuddyEvent"),
pointer_default(unique)
]
interface IRTCBuddyEvent : IDispatch
{
[propget, id(1), helpstring("property Buddy")]
HRESULT Buddy( [out, retval] IRTCBuddy ** ppBuddy );
}
[
object,
uuid(f30d7261-587a-424f-822c-312788f43548),
dual,
helpstring("IRTCWatcherEvent"),
pointer_default(unique)
]
interface IRTCWatcherEvent : IDispatch
{
[propget, id(1), helpstring("property Watcher")]
HRESULT Watcher( [out, retval] IRTCWatcher ** ppWatcher );
}
[
object,
uuid(EC7C8096-B918-4044-94F1-E4FBA0361D5C),
helpstring("IRTCCollection interface"),
dual
]
interface IRTCCollection : IDispatch
{
[propget, helpstring("Returns number of items in collection.")]
HRESULT Count(
[out, retval] long * lCount
);
[propget, id(DISPID_VALUE),
helpstring("Given an index, returns an item in the collection.")]
HRESULT Item(
[in] long Index,
[out, retval] VARIANT * pVariant
);
[propget, restricted, id(DISPID_NEWENUM),
helpstring("returns an enumerator for the collection.")]
HRESULT _NewEnum(
[out, retval] IUnknown ** ppNewEnum
);
}
[
object,
uuid(fcd56f29-4a4f-41b2-ba5c-f5bccc060bf6),
hidden,
helpstring("IRTCEnumParticipants interface"),
pointer_default(unique)
]
interface IRTCEnumParticipants : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt)] IRTCParticipant ** ppElements,
[in,out,ptr] ULONG * pceltFetched
);
HRESULT Reset( void );
HRESULT Skip (
[in] ULONG celt
);
HRESULT Clone (
[out, retval] IRTCEnumParticipants ** ppEnum
);
}
[
object,
uuid(29b7c41c-ed82-4bca-84ad-39d5101b58e3),
hidden,
helpstring("IRTCEnumProfiles interface"),
pointer_default(unique)
]
interface IRTCEnumProfiles : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt)] IRTCProfile ** ppElements,
[in,out,ptr] ULONG * pceltFetched
);
HRESULT Reset( void );
HRESULT Skip (
[in] ULONG celt
);
HRESULT Clone (
[out, retval] IRTCEnumProfiles ** ppEnum
);
}
[
object,
uuid(f7296917-5569-4b3b-b3af-98d1144b2b87),
hidden,
helpstring("IRTCEnumBuddies interface"),
pointer_default(unique)
]
interface IRTCEnumBuddies : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt)] IRTCBuddy ** ppElements,
[in,out,ptr] ULONG * pceltFetched
);
HRESULT Reset( void );
HRESULT Skip (
[in] ULONG celt
);
HRESULT Clone (
[out, retval] IRTCEnumBuddies ** ppEnum
);
}
[
object,
uuid(a87d55d7-db74-4ed1-9ca4-77a0e41b413e),
hidden,
helpstring("IRTCEnumWatchers interface"),
pointer_default(unique)
]
interface IRTCEnumWatchers : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt)] IRTCWatcher ** ppElements,
[in,out,ptr] ULONG * pceltFetched
);
HRESULT Reset( void );
HRESULT Skip (
[in] ULONG celt
);
HRESULT Clone (
[out, retval] IRTCEnumWatchers ** ppEnum
);
}
[
object,
uuid(8b22f92c-cd90-42db-a733-212205c3e3df),
helpstring("IRTCPresenceContact Interface"),
pointer_default(unique)
]
interface IRTCPresenceContact : IUnknown
{
[propget, helpstring("property PresentityURI")]
HRESULT PresentityURI(
[out, retval] BSTR * pbstrPresentityURI
);
[propput, helpstring("property PresentityURI")]
HRESULT PresentityURI(
[in] BSTR bstrPresentityURI
);
[propget, helpstring("property Name")]
HRESULT Name(
[out, retval] BSTR * pbstrName
);
[propput, helpstring("property Name")]
HRESULT Name(
[in] BSTR bstrName
);
[propget, helpstring("property Data")]
HRESULT Data(
[out, retval] BSTR * pbstrData
);
[propput, helpstring("property Data")]
HRESULT Data(
[in] BSTR bstrData
);
[propget, helpstring("property Persistent")]
HRESULT Persistent(
[out, retval] VARIANT_BOOL *pfPersistent
);
[propput, helpstring("property Persistent")]
HRESULT Persistent(
[in] VARIANT_BOOL fPersistent
);
};
[
object,
uuid(fcb136c8-7b90-4e0c-befe-56edf0ba6f1c),
helpstring("IRTCBuddy Interface"),
pointer_default(unique)
]
interface IRTCBuddy : IRTCPresenceContact
{
[propget, helpstring("property Status")]
HRESULT Status(
[out, retval] RTC_PRESENCE_STATUS * penStatus
);
[propget, helpstring("property Notes")]
HRESULT Notes(
[out, retval] BSTR * pbstrNotes
);
};
[
object,
uuid(c7cedad8-346b-4d1b-ac02-a2088df9be4f),
helpstring("IRTCWatcher Interface"),
pointer_default(unique)
]
interface IRTCWatcher : IRTCPresenceContact
{
[propget, helpstring("property State")]
HRESULT State(
[out, retval] RTC_WATCHER_STATE * penState
);
[propput, helpstring("property State")]
HRESULT State(
[in] RTC_WATCHER_STATE enState
);
};
[
object,
uuid(13fa24c7-5748-4b21-91f5-7397609ce747),
helpstring("IRTCEventNotification Interface"),
oleautomation,
pointer_default(unique)
]
interface IRTCEventNotification : IUnknown
{
[id(1), helpstring("method Event")]
HRESULT Event(
[in] RTC_EVENT RTCEvent,
[in] IDispatch * pEvent
);
}
[
uuid(176ddfbe-fec0-4d55-bc87-84cff1ef7f91),
helpstring("IRTCDispatchEventNotification Interface")
]
dispinterface IRTCDispatchEventNotification
{
properties:
methods:
[id(1), helpstring("method Event")]
HRESULT Event(
[in] RTC_EVENT RTCEvent,
[in] IDispatch * pEvent
);
};
[
object,
uuid(DA77C14B-6208-43ca-8DDF-5B60A0A69FAC),
helpstring("IRTCPortManager Interface"),
oleautomation,
pointer_default(unique)
]
interface IRTCPortManager : IUnknown
{
[id(1), helpstring("method GetMapping")]
HRESULT GetMapping(
[in] BSTR bstrRemoteAddress,
[in] RTC_PORT_TYPE enPortType,
[in, out] BSTR * pbstrInternalLocalAddress,
[in, out] long * plInternalLocalPort,
[in, out] BSTR * pbstrExternalLocalAddress,
[in, out] long * plExternalLocalPort
);
[id(2), helpstring("method UpdateRemoteAddress")]
HRESULT UpdateRemoteAddress(
[in] BSTR bstrRemoteAddress,
[in] BSTR bstrInternalLocalAddress,
[in] long lInternalLocalPort,
[in] BSTR bstrExternalLocalAddress,
[in] long lExternalLocalPort
);
[id(3), helpstring("method ReleaseMapping")]
HRESULT ReleaseMapping(
[in] BSTR bstrInternalLocalAddress,
[in] long lInternalLocalPort,
[in] BSTR bstrExternalLocalAddress,
[in] long lExternalLocalAddress
);
}
[
object,
uuid(a072f1d6-0286-4e1f-85f2-17a2948456ec),
helpstring("IRTCSessionPortManagement Interface"),
pointer_default(unique)
]
interface IRTCSessionPortManagement : IUnknown
{
HRESULT SetPortManager(
[in] IRTCPortManager * pPortManager
);
};
[
uuid(cd260094-de10-4aee-ac73-ef87f6e12683),
version(1.0),
helpstring("RTCCore 1.0 Type Library")
]
library RTCCORELib
{
importlib("stdole32.tlb");
interface IRTCProfile;
interface IRTCSession;
interface IRTCParticipant;
interface IRTCEnumProfiles;
interface IRTCEnumParticipants;
interface IRTCCollection;
interface IRTCEnumBuddies;
interface IRTCBuddy;
interface IRTCEnumWatchers;
interface IRTCWatcher;
interface IRTCEventNotification;
interface IRTCClientEvent;
interface IRTCRegistrationStateChangeEvent;
interface IRTCSessionStateChangeEvent;
interface IRTCSessionOperationCompleteEvent;
interface IRTCParticipantStateChangeEvent;
interface IRTCMediaEvent;
interface IRTCIntensityEvent;
interface IRTCMessagingEvent;
interface IRTCBuddyEvent;
interface IRTCWatcherEvent;
interface IRTCPortManager;
interface IRTCSessionPortManagement;
dispinterface IRTCDispatchEventNotification;
[
uuid(7a42ea29-a2b7-40c4-b091-f6f024aa89be),
helpstring("RTCClient Class")
]
coclass RTCClient
{
[default] interface IRTCClient;
interface IRTCClientPresence;
interface IRTCClientProvisioning;
[default, source] dispinterface IRTCDispatchEventNotification;
[defaultvtable, source] interface IRTCEventNotification;
};
};