rtccore.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:40k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //
  2. // Copyright (c) 2000  Microsoft Corporation
  3. //
  4. cpp_quote("/* Copyright (c) 2000-2001  Microsoft Corporation  */")
  5. //
  6. // RTCCore.idl : IDL source for RTCCore.dll
  7. //
  8. // This file will be processed by the MIDL tool to
  9. // produce the type library (RTCCore.tlb) and marshalling code.
  10. import "oaidl.idl";
  11. import "ocidl.idl";
  12. import "control.odl";
  13. // Types
  14.     
  15. typedef enum RTC_AUDIO_DEVICE
  16. {
  17.     RTCAD_SPEAKER,
  18.     RTCAD_MICROPHONE
  19. } RTC_AUDIO_DEVICE;
  20. typedef enum RTC_VIDEO_DEVICE
  21. {
  22.     RTCVD_RECEIVE,
  23.     RTCVD_PREVIEW
  24. } RTC_VIDEO_DEVICE;
  25. typedef enum RTC_EVENT
  26. {   
  27.     RTCE_CLIENT,
  28.     RTCE_REGISTRATION_STATE_CHANGE, 
  29.     RTCE_SESSION_STATE_CHANGE,
  30.     RTCE_SESSION_OPERATION_COMPLETE,
  31.     RTCE_PARTICIPANT_STATE_CHANGE,
  32.     RTCE_MEDIA,
  33.     RTCE_INTENSITY,
  34.     RTCE_MESSAGING,
  35.     RTCE_BUDDY,
  36.     RTCE_WATCHER,
  37.     RTCE_PROFILE
  38. } RTC_EVENT;
  39. typedef enum RTC_LISTEN_MODE
  40. {
  41.     RTCLM_NONE,
  42.     RTCLM_DYNAMIC,
  43.     RTCLM_BOTH
  44. } RTC_LISTEN_MODE;
  45. typedef enum RTC_CLIENT_EVENT_TYPE
  46. {
  47.     RTCCET_VOLUME_CHANGE,
  48.     RTCCET_DEVICE_CHANGE,
  49.     RTCCET_NETWORK_QUALITY_CHANGE,
  50.     RTCCET_ASYNC_CLEANUP_DONE
  51. } RTC_CLIENT_EVENT_TYPE;
  52. typedef enum RTC_TERMINATE_REASON
  53. {
  54.     RTCTR_NORMAL,
  55.     RTCTR_DND,
  56.     RTCTR_BUSY,
  57.     RTCTR_REJECT,
  58.     RTCTR_TIMEOUT,
  59.     RTCTR_SHUTDOWN
  60. } RTC_TERMINATE_REASON;
  61. typedef enum RTC_REGISTRATION_STATE
  62. {
  63.     RTCRS_NOT_REGISTERED,
  64.     RTCRS_REGISTERING,
  65.     RTCRS_REGISTERED,
  66.     RTCRS_REJECTED,
  67.     RTCRS_UNREGISTERING,
  68.     RTCRS_ERROR,
  69.     RTCRS_LOGGED_OFF,
  70.     RTCRS_LOCAL_PA_LOGGED_OFF,
  71.     RTCRS_REMOTE_PA_LOGGED_OFF
  72. } RTC_REGISTRATION_STATE;
  73. typedef enum RTC_SESSION_STATE
  74. {
  75.     RTCSS_IDLE,
  76.     RTCSS_INCOMING,
  77.     RTCSS_ANSWERING,
  78.     RTCSS_INPROGRESS,
  79.     RTCSS_CONNECTED,
  80.     RTCSS_DISCONNECTED
  81. } RTC_SESSION_STATE;
  82. typedef enum RTC_PARTICIPANT_STATE
  83. {
  84.     RTCPS_IDLE,
  85.     RTCPS_PENDING,
  86.     RTCPS_INCOMING,
  87.     RTCPS_ANSWERING,
  88.     RTCPS_INPROGRESS,
  89.     RTCPS_ALERTING,
  90.     RTCPS_CONNECTED,
  91.     RTCPS_DISCONNECTING,
  92.     RTCPS_DISCONNECTED
  93. } RTC_PARTICIPANT_STATE;
  94. typedef enum RTC_WATCHER_STATE
  95. {
  96.     RTCWS_UNKNOWN,
  97.     RTCWS_OFFERING,
  98.     RTCWS_ALLOWED,
  99.     RTCWS_BLOCKED
  100. } RTC_WATCHER_STATE;
  101. typedef enum RTC_OFFER_WATCHER_MODE
  102. {
  103.     RTCOWM_OFFER_WATCHER_EVENT,
  104.     RTCOWM_AUTOMATICALLY_ADD_WATCHER
  105. } RTC_OFFER_WATCHER_MODE;
  106. typedef enum RTC_PRIVACY_MODE
  107. {
  108.     RTCPM_BLOCK_LIST_EXCLUDED,
  109.     RTCPM_ALLOW_LIST_ONLY
  110. } RTC_PRIVACY_MODE;
  111. typedef enum RTC_SESSION_TYPE
  112. {
  113.     RTCST_PC_TO_PC,
  114.     RTCST_PC_TO_PHONE,
  115.     RTCST_PHONE_TO_PHONE,
  116.     RTCST_IM
  117.     
  118. } RTC_SESSION_TYPE;
  119. typedef enum RTC_PRESENCE_STATUS
  120. {
  121.     RTCXS_PRESENCE_OFFLINE,
  122.     RTCXS_PRESENCE_ONLINE,
  123.     RTCXS_PRESENCE_AWAY,
  124.     RTCXS_PRESENCE_IDLE,
  125.     RTCXS_PRESENCE_BUSY,
  126.     RTCXS_PRESENCE_BE_RIGHT_BACK,
  127.     RTCXS_PRESENCE_ON_THE_PHONE,
  128.     RTCXS_PRESENCE_OUT_TO_LUNCH
  129. } RTC_PRESENCE_STATUS;
  130. typedef enum RTC_MEDIA_EVENT_TYPE
  131. {
  132.     RTCMET_STOPPED,
  133.     RTCMET_STARTED,
  134.     RTCMET_FAILED
  135. } RTC_MEDIA_EVENT_TYPE;
  136. typedef enum RTC_MEDIA_EVENT_REASON
  137. {
  138.     RTCMER_NORMAL,
  139.     RTCMER_HOLD,
  140.     RTCMER_TIMEOUT,
  141.     RTCMER_BAD_DEVICE
  142. } RTC_MEDIA_EVENT_REASON;
  143. typedef enum RTC_MESSAGING_EVENT_TYPE
  144. {
  145.     RTCMSET_MESSAGE,
  146.     RTCMSET_STATUS,
  147. } RTC_MESSAGING_EVENT_TYPE;
  148. typedef enum RTC_MESSAGING_USER_STATUS
  149. {
  150.     RTCMUS_IDLE,
  151.     RTCMUS_TYPING
  152. } RTC_MESSAGING_USER_STATUS;
  153. typedef enum RTC_DTMF
  154. {
  155.     RTC_DTMF_0,
  156.     RTC_DTMF_1,
  157.     RTC_DTMF_2,
  158.     RTC_DTMF_3,
  159.     RTC_DTMF_4,
  160.     RTC_DTMF_5,
  161.     RTC_DTMF_6,
  162.     RTC_DTMF_7,
  163.     RTC_DTMF_8,
  164.     RTC_DTMF_9,
  165.     RTC_DTMF_STAR,
  166.     RTC_DTMF_POUND,
  167.     RTC_DTMF_A,
  168.     RTC_DTMF_B,
  169.     RTC_DTMF_C,
  170.     RTC_DTMF_D,
  171.     RTC_DTMF_FLASH
  172. } RTC_DTMF;
  173. typedef enum RTC_PROVIDER_URI
  174. {
  175.     RTCPU_URIHOMEPAGE,
  176.     RTCPU_URIHELPDESK,
  177.     RTCPU_URIPERSONALACCOUNT,
  178.     RTCPU_URIDISPLAYDURINGCALL,
  179.     RTCPU_URIDISPLAYDURINGIDLE
  180. } RTC_PROVIDER_URI;
  181. typedef enum RTC_RING_TYPE
  182. {
  183.     RTCRT_PHONE,
  184.     RTCRT_MESSAGE,
  185.     RTCRT_RINGBACK
  186. } RTC_RING_TYPE;
  187. typedef enum RTC_T120_APPLET
  188. {
  189.     RTCTA_WHITEBOARD,
  190.     RTCTA_APPSHARING
  191. } RTC_T120_APPLET; 
  192. cpp_quote("#define RTCCS_FORCE_PROFILE          0x00000001")
  193. cpp_quote("#define RTCCS_FAIL_ON_REDIRECT       0x00000002")
  194. // Media Types
  195. cpp_quote("#define RTCMT_AUDIO_SEND     0x00000001")
  196. cpp_quote("#define RTCMT_AUDIO_RECEIVE  0x00000002")
  197. cpp_quote("#define RTCMT_VIDEO_SEND     0x00000004")
  198. cpp_quote("#define RTCMT_VIDEO_RECEIVE  0x00000008")
  199. cpp_quote("#define RTCMT_T120_SENDRECV  0x00000010")
  200. cpp_quote("#define RTCMT_ALL_RTP   (       \")
  201. cpp_quote("         RTCMT_AUDIO_SEND    |  \")
  202. cpp_quote("         RTCMT_AUDIO_RECEIVE  | \")
  203. cpp_quote("         RTCMT_VIDEO_SEND  |    \")
  204. cpp_quote("         RTCMT_VIDEO_RECEIVE )    ")
  205. cpp_quote("#define RTCMT_ALL       (       \")
  206. cpp_quote("         RTCMT_ALL_RTP    |     \")
  207. cpp_quote("         RTCMT_T120_SENDRECV  )   ")
  208. // Session Info
  209. cpp_quote("#define RTCSI_PC_TO_PC       0x00000001")
  210. cpp_quote("#define RTCSI_PC_TO_PHONE    0x00000002")
  211. cpp_quote("#define RTCSI_PHONE_TO_PHONE 0x00000004")
  212. cpp_quote("#define RTCSI_IM             0x00000008")
  213. // Transports
  214. cpp_quote("#define RTCTR_UDP            0x00000001")
  215. cpp_quote("#define RTCTR_TCP            0x00000002")
  216. cpp_quote("#define RTCTR_TLS            0x00000004")
  217. // Registration Flags
  218. cpp_quote("#define RTCRF_REGISTER_INVITE_SESSIONS   0x00000001")
  219. cpp_quote("#define RTCRF_REGISTER_MESSAGE_SESSIONS  0x00000002")
  220. cpp_quote("#define RTCRF_REGISTER_PRESENCE          0x00000004")
  221. cpp_quote("#define RTCRF_REGISTER_ALL               0x00000007")
  222. // Event Filters
  223. cpp_quote("#define RTCEF_CLIENT                     0x00000001")
  224. cpp_quote("#define RTCEF_REGISTRATION_STATE_CHANGE  0x00000002")
  225. cpp_quote("#define RTCEF_SESSION_STATE_CHANGE       0x00000004")
  226. cpp_quote("#define RTCEF_SESSION_OPERATION_COMPLETE 0x00000008")
  227. cpp_quote("#define RTCEF_PARTICIPANT_STATE_CHANGE   0x00000010")
  228. cpp_quote("#define RTCEF_MEDIA                      0x00000020")
  229. cpp_quote("#define RTCEF_INTENSITY                  0x00000040")
  230. cpp_quote("#define RTCEF_MESSAGING                  0x00000080")
  231. cpp_quote("#define RTCEF_BUDDY                      0x00000100")
  232. cpp_quote("#define RTCEF_WATCHER                    0x00000200")
  233. cpp_quote("#define RTCEF_PROFILE                    0x00000400")
  234. cpp_quote("#define RTCEF_ALL                        0x000007FF")
  235. // Forward Definitions
  236. interface IRTCClient;
  237. interface IRTCClientPresence;
  238. interface IRTCClientProvisioning;
  239. interface IRTCProfile;
  240. interface IRTCSession;
  241. interface IRTCParticipant;
  242. interface IRTCEventNotification;
  243. interface IRTCEnumProfiles;
  244. interface IRTCEnumParticipants;
  245. interface IRTCCollection;
  246. interface IRTCEnumBuddies;
  247. interface IRTCBuddy;
  248. interface IRTCEnumWatchers;
  249. interface IRTCWatcher;
  250. [
  251.     object,
  252.     uuid(07829e45-9a34-408e-a011-bddf13487cd1),
  253.     helpstring("IRTCClient Interface"),
  254.     pointer_default(unique)
  255. ]
  256. interface IRTCClient : IUnknown
  257. {
  258. // initialize, shutdown
  259.     
  260.     [helpstring("method Initialize")]
  261.     HRESULT Initialize();
  262.     [helpstring("method Shutdown")]
  263.     HRESULT Shutdown();
  264.     [helpstring("method PrepareForShutdown")]
  265.     HRESULT PrepareForShutdown();
  266. // events
  267.     [propput, helpstring("property EventFilter")]
  268.     HRESULT EventFilter(
  269.             [in] long lFilter
  270.             );
  271.     [propget, helpstring("property EventFilter")]
  272.     HRESULT EventFilter(
  273.             [out, retval] long * plFilter
  274.             );
  275. // media preferences/capabilities
  276.     [helpstring("method SetPreferredMediaTypes")]
  277.     HRESULT SetPreferredMediaTypes(
  278.             [in] long lMediaTypes,
  279.             [in] VARIANT_BOOL fPersistent
  280.             );
  281.     [propget, helpstring("property PreferredMediaTypes")]
  282.     HRESULT PreferredMediaTypes(
  283.             [out, retval] long * plMediaTypes
  284.             );              
  285.     
  286.     [propget, helpstring("property MediaCapabilities")]
  287.     HRESULT MediaCapabilities(
  288.             [out, retval] long * plMediaTypes
  289.             );                                              
  290. // sessions 
  291.         
  292.     [helpstring("method CreateSession")]
  293.     HRESULT CreateSession(
  294.             [in] RTC_SESSION_TYPE enType,
  295.             [in] BSTR bstrLocalPhoneURI,
  296.             [in] IRTCProfile * pProfile,
  297.             [in] long     lFlags,
  298.             [out, retval] IRTCSession ** ppSession
  299.             );
  300. // listen mode
  301.     [propput, helpstring("property ListenForIncomingSessions")]
  302.     HRESULT ListenForIncomingSessions(
  303.             [in] RTC_LISTEN_MODE enListen
  304.             );
  305.     [propget, helpstring("property ListenForIncomingSessions")]
  306.     HRESULT ListenForIncomingSessions(
  307.             [out, retval] RTC_LISTEN_MODE * penListen
  308.             );  
  309. // addresses & ports
  310.     [propget, helpstring("property NetworkAddresses")]
  311.     HRESULT NetworkAddresses(
  312.             [in]  VARIANT_BOOL    fTCP,
  313.             [in]  VARIANT_BOOL    fExternal,
  314.             [out, retval] VARIANT * pvAddresses
  315.             );
  316.            
  317. // audio control
  318.     [propput, helpstring("property Volume")]
  319.     HRESULT Volume(
  320.             [in] RTC_AUDIO_DEVICE enDevice,
  321.             [in] long lVolume
  322.             );  
  323.     [propget, helpstring("property Volume")]
  324.     HRESULT Volume(
  325.             [in] RTC_AUDIO_DEVICE enDevice,
  326.             [out, retval] long * plVolume
  327.             );   
  328.     [propput, helpstring("property AudioMuted")]
  329.     HRESULT AudioMuted(
  330.             [in] RTC_AUDIO_DEVICE enDevice,
  331.             [in] VARIANT_BOOL fMuted
  332.             );
  333.     [propget, helpstring("property AudioMuted")]
  334.     HRESULT AudioMuted(
  335.             [in] RTC_AUDIO_DEVICE enDevice,
  336.             [out, retval] VARIANT_BOOL * pfMuted
  337.             ); 
  338. // video window
  339.     
  340.     [propget, helpstring("property IVideoWindow")]
  341.     HRESULT IVideoWindow(
  342.             [in] RTC_VIDEO_DEVICE enDevice,
  343.             [out, retval] IVideoWindow ** ppIVideoWindow
  344.             );  
  345. // audio/video settings
  346.     [propput, helpstring("property PreferredAudioDevice")]
  347.     HRESULT PreferredAudioDevice(
  348.             [in] RTC_AUDIO_DEVICE enDevice,
  349.             [in] BSTR bstrDeviceName
  350.             );  
  351.     [propget, helpstring("property PreferredAudioDevice")]
  352.     HRESULT PreferredAudioDevice(
  353.             [in] RTC_AUDIO_DEVICE enDevice,
  354.             [out, retval] BSTR * pbstrDeviceName
  355.             );
  356.              
  357.     [propput, helpstring("property PreferredVolume")]
  358.     HRESULT PreferredVolume(
  359.             [in] RTC_AUDIO_DEVICE enDevice,
  360.             [in] long lVolume
  361.             );  
  362.     [propget, helpstring("property PreferredVolume")]
  363.     HRESULT PreferredVolume(
  364.             [in] RTC_AUDIO_DEVICE enDevice,
  365.             [out, retval] long * plVolume
  366.             );   
  367.     [propput, helpstring("property PreferredAEC")]
  368.     HRESULT PreferredAEC(
  369.             [in] VARIANT_BOOL bEnable
  370.             );  
  371.     [propget, helpstring("property PreferredAEC")]
  372.     HRESULT PreferredAEC(
  373.             [out, retval] VARIANT_BOOL * pbEnabled
  374.             );
  375.             
  376.     [propput, helpstring("property PreferredVideoDevice")]
  377.     HRESULT PreferredVideoDevice(
  378.             [in] BSTR bstrDeviceName
  379.             );  
  380.     [propget, helpstring("property PreferredVideoDevice")]
  381.     HRESULT PreferredVideoDevice(
  382.             [out, retval] BSTR * pbstrDeviceName
  383.             );
  384. // active media
  385.     
  386.     [propget, helpstring("property ActiveMedia")]
  387.     HRESULT ActiveMedia(
  388.             [out, retval] long * plMediaType
  389.             );
  390. // Network quality
  391.     
  392.     [propput, helpstring("property MaxBitrate")]
  393.     HRESULT MaxBitrate(
  394.             [in] long lMaxBitrate
  395.             );  
  396.     [propget, helpstring("property MaxBitrate")]
  397.     HRESULT MaxBitrate(
  398.             [out, retval] long * plMaxBitrate
  399.             );   
  400.     [propput, helpstring("property TemporalSpatialTradeOff")]
  401.     HRESULT TemporalSpatialTradeOff(
  402.             [in] long lValue
  403.             );  
  404.     [propget, helpstring("property TemporalSpatialTradeOff")]
  405.     HRESULT TemporalSpatialTradeOff(
  406.             [out, retval] long * plValue
  407.             );   
  408.     [propget, helpstring("property NetworkQuality")]
  409.     HRESULT NetworkQuality(
  410.             [out, retval] long * plNetworkQuality
  411.             );
  412. // T120 applet control
  413.     [helpstring("method StartT120Applet")]
  414.     HRESULT StartT120Applet(
  415.             [in] RTC_T120_APPLET   enApplet
  416.             );
  417.     [helpstring("method StopT120Applets")]
  418.     HRESULT StopT120Applets();
  419.     [propget, helpstring("property IsT120AppletRunning")]
  420.     HRESULT IsT120AppletRunning(
  421.             [in] RTC_T120_APPLET   enApplet,
  422.             [out, retval] VARIANT_BOOL * pfRunning
  423.             );
  424. // local user info
  425.     [propget, helpstring("property LocalUserURI")]
  426.     HRESULT LocalUserURI(
  427.             [out, retval] BSTR * pbstrUserURI
  428.             );   
  429.     [propput, helpstring("property LocalUserURI")]
  430.     HRESULT LocalUserURI(
  431.             [in] BSTR  bstrUserURI
  432.             );   
  433.     [propget, helpstring("property LocalUserName")]
  434.     HRESULT LocalUserName(
  435.             [out, retval] BSTR * pbstrUserName
  436.             ); 
  437.     [propput, helpstring("property LocalUserName")]
  438.     HRESULT LocalUserName(
  439.             [in] BSTR  bstrUserName
  440.             ); 
  441. // other    
  442.     
  443.     [helpstring("method PlayRing")]
  444.     HRESULT PlayRing(
  445.             [in] RTC_RING_TYPE enType,
  446.             [in] VARIANT_BOOL bPlay
  447.             );     
  448.     
  449.     [helpstring("method SendDTMF")]
  450.     HRESULT SendDTMF(
  451.             [in] RTC_DTMF enDTMF
  452.             );  
  453.     [helpstring("method InvokeTuningWizard")]
  454.     HRESULT InvokeTuningWizard(
  455.             [in] OAHWND hwndParent
  456.             );
  457.     [propget, helpstring("property IsTuned")]
  458.     HRESULT IsTuned(
  459.             [out, retval] VARIANT_BOOL * pfTuned
  460.             );
  461. }                           
  462. [
  463.     object,
  464.     uuid(11c3cbcc-0744-42d1-968a-51aa1bb274c6),
  465.     helpstring("IRTCClientPresence Interface"),
  466.     pointer_default(unique)
  467. ]
  468. interface IRTCClientPresence : IUnknown
  469. {
  470. // enable
  471.     [helpstring("method EnablePresence")]
  472.     HRESULT EnablePresence(
  473.             [in] VARIANT_BOOL  fUseStorage,
  474.             [in] VARIANT       varStorage
  475.             );
  476. // snapshots & import/export    
  477.     
  478.     [helpstring("method Export")]
  479.     HRESULT Export(
  480.             [in] VARIANT       varStorage
  481.             );
  482.     
  483.     [helpstring("method Import")]
  484.     HRESULT Import(
  485.             [in] VARIANT       varStorage,
  486.             [in] VARIANT_BOOL  fReplaceAll
  487.             );
  488. // buddies
  489.     [hidden, helpstring("method EnumerateBuddies")]
  490.     HRESULT EnumerateBuddies(   
  491.             [out, retval] IRTCEnumBuddies ** ppEnum
  492.             );
  493.     [propget, helpstring("property Buddies")]
  494.     HRESULT Buddies(   
  495.             [out, retval] IRTCCollection ** ppCollection
  496.             );
  497.     [propget, helpstring("property Buddy")]
  498.     HRESULT Buddy(
  499.             [in] BSTR   bstrPresentityURI,
  500.             [out, retval] IRTCBuddy   **ppBuddy
  501.             );
  502.     [helpstring("method AddBuddy")]
  503.     HRESULT AddBuddy(   
  504.             [in] BSTR   bstrPresentityURI,
  505.             [in] BSTR   bstrUserName,
  506.             [in] BSTR   bstrData,
  507.             [in] VARIANT_BOOL   fPersistent,
  508.             [in] IRTCProfile * pProfile,
  509.             [in] long lFlags,
  510.             [out, retval] IRTCBuddy **ppBuddy
  511.             );
  512.     
  513.     [helpstring("method RemoveBuddy")]
  514.     HRESULT RemoveBuddy(   
  515.             [in] IRTCBuddy    *pBuddy
  516.             );
  517. // watchers
  518.     [hidden, helpstring("method EnumerateWatchers")]
  519.     HRESULT EnumerateWatchers(   
  520.             [out, retval] IRTCEnumWatchers ** ppEnum
  521.             );
  522.     [propget, helpstring("property Watchers")]
  523.     HRESULT Watchers(   
  524.             [out, retval] IRTCCollection ** ppCollection
  525.             );
  526.     [propget, helpstring("property Watcher")]
  527.     HRESULT Watcher(
  528.             [in] BSTR   bstrPresentityURI,
  529.             [out, retval] IRTCWatcher   **ppWatcher
  530.             );
  531.     [helpstring("method AddWatcher")]
  532.     HRESULT AddWatcher(   
  533.             [in] BSTR   bstrPresentityURI,
  534.             [in] BSTR   bstrUserName,
  535.             [in] BSTR   bstrData,
  536.             [in] VARIANT_BOOL  fBlocked,
  537.             [in] VARIANT_BOOL  fPersistent,
  538.             [out, retval] IRTCWatcher **ppWatcher
  539.             );
  540.     
  541.     [helpstring("method RemoveWatcher")]
  542.     HRESULT RemoveWatcher(   
  543.             [in] IRTCWatcher    *pWatcher
  544.             );
  545.     
  546.     [helpstring("method SetLocalPresenceInfo")]
  547.     HRESULT SetLocalPresenceInfo(   
  548.             [in] RTC_PRESENCE_STATUS enStatus,
  549.             [in] BSTR bstrNotes
  550.             );
  551. // policies
  552.     [propget, helpstring("property OfferWatcherMode")]
  553.     HRESULT OfferWatcherMode(   
  554.             [out, retval] RTC_OFFER_WATCHER_MODE * penMode
  555.             );
  556.     [propput, helpstring("property OfferWatcherMode")]
  557.     HRESULT OfferWatcherMode(
  558.             [in] RTC_OFFER_WATCHER_MODE   enMode
  559.             );
  560.     [propget, helpstring("property PrivacyMode")]
  561.     HRESULT PrivacyMode(   
  562.             [out, retval] RTC_PRIVACY_MODE * penMode
  563.             );
  564.     [propput, helpstring("property PrivacyMode")]
  565.     HRESULT PrivacyMode(
  566.             [in] RTC_PRIVACY_MODE   enMode
  567.             );
  568. }  
  569. [
  570.     object,
  571.     uuid(B9F5CF06-65B9-4a80-A0E6-73CAE3EF3822),
  572.     helpstring("IRTCClientProvisioning Interface"),
  573.     pointer_default(unique)
  574. ]
  575. interface IRTCClientProvisioning : IUnknown
  576. {
  577.     [helpstring("method CreateProfile")]
  578.     HRESULT CreateProfile(
  579.             [in] BSTR bstrProfileXML,           
  580.             [out, retval] IRTCProfile ** ppProfile
  581.             );
  582.     [helpstring("method EnableProfile")]
  583.     HRESULT EnableProfile(         
  584.             [in] IRTCProfile * pProfile,
  585.             [in] long lRegisterFlags
  586.             );
  587.     [helpstring("method DisableProfile")]
  588.     HRESULT DisableProfile(         
  589.             [in] IRTCProfile * pProfile
  590.             );
  591.     [hidden, helpstring("method EnumerateProfiles")]
  592.     HRESULT EnumerateProfiles(   
  593.             [out, retval] IRTCEnumProfiles ** ppEnum
  594.             );            
  595.     [propget, helpstring("property Profiles")]
  596.     HRESULT Profiles(   
  597.             [out, retval] IRTCCollection ** ppCollection
  598.             );
  599.     [helpstring("method GetProfile")]
  600.     HRESULT GetProfile(            
  601.             [in] BSTR bstrUserAccount,
  602.             [in] BSTR bstrUserPassword,
  603.             [in] BSTR bstrUserURI,
  604.             [in] BSTR bstrServer,
  605.             [in] long lTransport,
  606.             [in] long lCookie
  607.             );
  608.     [propget, helpstring("property SessionCapabilities")]
  609.     HRESULT SessionCapabilities(
  610.             [out, retval] long * plSupportedSessions);
  611. };                                
  612. [
  613.     object,
  614.     uuid(d07eca9e-4062-4dd4-9e7d-722a49ba7303),
  615.     helpstring("IRTCProfile Interface"),
  616.     pointer_default(unique)
  617. ]
  618. interface IRTCProfile : IUnknown
  619. {
  620.     [propget, helpstring("property Key")]
  621.     HRESULT Key(
  622.             [out, retval] BSTR * pbstrKey);
  623.     [propget, helpstring("property Name")]
  624.     HRESULT Name(
  625.             [out, retval] BSTR * pbstrName);
  626.     [propget, helpstring("property XML")]
  627.     HRESULT XML(
  628.             [out, retval] BSTR * pbstrXML);
  629.     // Provider
  630.     [propget, helpstring("property ProviderName")]
  631.     HRESULT ProviderName(
  632.             [out, retval] BSTR * pbstrName); 
  633.     [propget, helpstring("property ProviderURI")]
  634.     HRESULT ProviderURI(
  635.             [in] RTC_PROVIDER_URI enURI,
  636.             [out, retval] BSTR * pbstrURI); 
  637.     [propget, helpstring("property ProviderData")]
  638.     HRESULT ProviderData(
  639.             [out, retval] BSTR * pbstrData);
  640.     // Client
  641.     [propget, helpstring("property ClientName")]
  642.     HRESULT ClientName(
  643.             [out, retval] BSTR * pbstrName); 
  644.     [propget, helpstring("property ClientBanner")]
  645.     HRESULT ClientBanner(
  646.             [out, retval] VARIANT_BOOL * pfBanner); 
  647.     [propget, helpstring("property ClientMinVer")]
  648.     HRESULT ClientMinVer(
  649.             [out, retval] BSTR * pbstrMinVer); 
  650.     [propget, helpstring("property ClientCurVer")]
  651.     HRESULT ClientCurVer(
  652.             [out, retval] BSTR * pbstrCurVer); 
  653.     [propget, helpstring("property ClientUpdateURI")]
  654.     HRESULT ClientUpdateURI(
  655.             [out, retval] BSTR * pbstrUpdateURI); 
  656.     [propget, helpstring("property ClientData")]
  657.     HRESULT ClientData(
  658.             [out, retval] BSTR * pbstrData); 
  659.     // User
  660.     [propget, helpstring("property UserURI")]
  661.     HRESULT UserURI(
  662.             [out, retval] BSTR * pbstrUserURI);
  663.     [propget, helpstring("property UserName")]
  664.     HRESULT UserName(
  665.             [out, retval] BSTR * pbstrUserName);
  666.     
  667.     [propget, helpstring("property UserAccount")]
  668.     HRESULT UserAccount(
  669.             [out, retval] BSTR * pbstrUserAccount);
  670.     [helpstring("method SetCredentials")]
  671.     HRESULT SetCredentials(
  672.             [in]    BSTR    bstrUserURI,
  673.             [in]    BSTR    bstrUserAccount,
  674.             [in]    BSTR    bstrPassword);
  675.     // Server
  676.         
  677.     [propget, helpstring("property SessionCapabilities")]
  678.     HRESULT SessionCapabilities(
  679.             [out, retval] long * plSupportedSessions);
  680.     // Registration
  681.     [propget, helpstring("property State")]
  682.     HRESULT State(
  683.             [out, retval] RTC_REGISTRATION_STATE * penState);
  684. };
  685. [
  686.     object,
  687.     uuid(387c8086-99be-42fb-9973-7c0fc0ca9fa8),
  688.     helpstring("IRTCSession Interface"),
  689.     pointer_default(unique)
  690. ]
  691. interface IRTCSession : IUnknown
  692. {
  693.     // properties
  694.     [propget, helpstring("property Client")]
  695.     HRESULT Client(
  696.             [out, retval] IRTCClient **ppClient
  697.             );
  698.     [propget, helpstring("property State")]
  699.     HRESULT State(
  700.             [out, retval] RTC_SESSION_STATE * penState
  701.             );                
  702.     
  703.     [propget, helpstring("property Type")]
  704.     HRESULT Type(
  705.             [out, retval] RTC_SESSION_TYPE * penType
  706.             );
  707.     
  708.     [propget, helpstring("property Profile")]
  709.     HRESULT Profile(
  710.             [out, retval] IRTCProfile ** ppProfile
  711.             );
  712.     
  713.     [propget, helpstring("property Participants")]
  714.     HRESULT Participants(
  715.             [out, retval] IRTCCollection ** ppCollection
  716.             );
  717.     
  718.     // call control
  719.     [helpstring("method Answer")]
  720.     HRESULT Answer(); 
  721.     [helpstring("method Terminate")]
  722.     HRESULT Terminate(
  723.             [in] RTC_TERMINATE_REASON enReason
  724.             );  
  725.     [helpstring("method Redirect")]
  726.     HRESULT Redirect(
  727.             [in] RTC_SESSION_TYPE enType,
  728.             [in] BSTR bstrLocalPhoneURI,
  729.             [in] IRTCProfile * pProfile,
  730.             [in] long     lFlags
  731.             );  
  732.     [helpstring("method AddParticipant")]
  733.     HRESULT AddParticipant(
  734.             [in] BSTR bstrAddress,
  735.             [in] BSTR bstrName,
  736.             [out, retval] IRTCParticipant ** ppParticipant
  737.             );
  738.     [helpstring("method RemoveParticipant")]
  739.     HRESULT RemoveParticipant(
  740.             [in] IRTCParticipant * pParticipant
  741.             );              
  742.     [hidden, helpstring("method EnumerateParticipants")]
  743.     HRESULT EnumerateParticipants(
  744.             [out, retval] IRTCEnumParticipants ** ppEnum
  745.             );
  746.              
  747.     [propget, helpstring("property CanAddParticipants")]
  748.     HRESULT CanAddParticipants(
  749.             [out, retval] VARIANT_BOOL * pfCanAdd
  750.             );   
  751.     // redirection context control
  752.     [propget, helpstring("property RedirectedUserURI")]
  753.     HRESULT RedirectedUserURI(
  754.             [out, retval] BSTR * pbstrUserURI
  755.             );
  756.     [propget, helpstring("property RedirectedUserName")]
  757.     HRESULT RedirectedUserName(
  758.             [out, retval] BSTR * pbstrUserName
  759.             );
  760.                
  761.     [helpstring("method NextRedirectedUser")]
  762.     HRESULT NextRedirectedUser();
  763.     // instant messaging
  764.     [helpstring("method SendMessage")]
  765.     HRESULT SendMessage(
  766.             [in] BSTR bstrMessageHeader,
  767.             [in] BSTR bstrMessage,
  768.             [in] long lCookie
  769.             );
  770.           
  771.     [helpstring("method SendMessageStatus")]
  772.     HRESULT SendMessageStatus(
  773.             [in] RTC_MESSAGING_USER_STATUS enUserStatus,
  774.             [in] long lCookie
  775.             );
  776. // stream & custom media control            
  777.     [helpstring("method AddStream")]
  778.     HRESULT AddStream(
  779.             [in] long lMediaType,
  780.             [in] long lCookie
  781.             );     
  782.     
  783.     [helpstring("method RemoveStream")]
  784.     HRESULT RemoveStream(
  785.             [in] long lMediaType,
  786.             [in] long lCookie
  787.             ); 
  788. // keys
  789.     [propput, helpstring("property EncryptionKey")]
  790.     HRESULT EncryptionKey(
  791.             [in] long lMediaType,
  792.             [in] BSTR EncryptionKey
  793.             );
  794. };
  795. [
  796.     object,
  797.     uuid(ae86add5-26b1-4414-af1d-b94cd938d739),
  798.     helpstring("IRTCParticipant Interface"),
  799.     pointer_default(unique)
  800. ]
  801. interface IRTCParticipant : IUnknown
  802. {
  803.     [propget, helpstring("property UserURI")]
  804.     HRESULT UserURI(
  805.             [out, retval] BSTR * pbstrUserURI
  806.             );   
  807.     [propget, helpstring("property Name")]
  808.     HRESULT Name(
  809.             [out, retval] BSTR * pbstrName
  810.             );  
  811.     [propget, helpstring("property Removable")]
  812.     HRESULT Removable(
  813.             [out, retval] VARIANT_BOOL * pfRemovable
  814.             );
  815.     [propget, helpstring("property State")]
  816.     HRESULT State(
  817.             [out, retval] RTC_PARTICIPANT_STATE * penState
  818.             );   
  819.             
  820.     [propget, helpstring("property Session")]
  821.     HRESULT Session(
  822.             [out, retval] IRTCSession ** ppSession
  823.             );             
  824. };
  825. [
  826.     object,
  827.     uuid(D6D5AB3B-770E-43e8-800A-79B062395FCA),
  828.     dual,
  829.     helpstring("IRTCProfileEvent"),
  830.     pointer_default(unique)
  831. ]
  832. interface IRTCProfileEvent : IDispatch
  833. {
  834.     [propget, id(1), helpstring("property Profile")]
  835.     HRESULT Profile( [out, retval] IRTCProfile ** ppProfile );
  836.     [propget, id(2), helpstring("property Cookie")]
  837.     HRESULT Cookie( [out, retval] long * plCookie );
  838.     
  839.     [propget, id(3), helpstring("property StatusCode")]
  840.     HRESULT StatusCode( [out, retval] long * plStatusCode );
  841. }
  842. [
  843.     object,
  844.     uuid(2b493b7a-3cba-4170-9c8b-76a9dacdd644),
  845.     dual,
  846.     helpstring("IRTCClientEvent"),
  847.     pointer_default(unique)
  848. ]
  849. interface IRTCClientEvent : IDispatch
  850. {
  851.     [propget, id(1), helpstring("property EventType")]
  852.     HRESULT EventType( [out, retval] RTC_CLIENT_EVENT_TYPE * penEventType );
  853.     
  854.     [propget, id(2), helpstring("property Client")]
  855.     HRESULT Client( [out, retval] IRTCClient **ppClient );
  856. }
  857. [
  858.     object,
  859.     uuid(62d0991b-50ab-4f02-b948-ca94f26f8f95),
  860.     dual,
  861.     helpstring("IRTCRegistrationStateChangeEvent"),
  862.     pointer_default(unique)
  863. ]
  864. interface IRTCRegistrationStateChangeEvent : IDispatch
  865. {
  866.     [propget, id(1), helpstring("property Profile")]
  867.     HRESULT Profile( [out, retval] IRTCProfile ** ppProfile );
  868.     
  869.     [propget, id(2), helpstring("property State")]
  870.     HRESULT State( [out, retval] RTC_REGISTRATION_STATE * penState );
  871.     [propget, id(3), helpstring("property StatusCode")]
  872.     HRESULT StatusCode( [out, retval] long * plStatusCode );
  873.     [propget, id(4), helpstring("property StatusText")]
  874.     HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
  875. }
  876. [
  877.     object,
  878.     uuid(b5bad703-5952-48b3-9321-7f4500521506),
  879.     dual,
  880.     helpstring("IRTCSessionStateChangeEvent"),
  881.     pointer_default(unique)
  882. ]
  883. interface IRTCSessionStateChangeEvent : IDispatch
  884. {
  885.     [propget, id(1), helpstring("property Session")]
  886.     HRESULT Session( [out, retval] IRTCSession ** ppSession );
  887.     
  888.     [propget, id(2), helpstring("property State")]
  889.     HRESULT State( [out, retval] RTC_SESSION_STATE * penState );
  890.     [propget, id(3), helpstring("property StatusCode")]
  891.     HRESULT StatusCode( [out, retval] long * plStatusCode );
  892.     [propget, id(4), helpstring("property StatusText")]
  893.     HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
  894. }
  895. [
  896.     object,
  897.     uuid(a6bff4c0-f7c8-4d3c-9a41-3550f78a95b0),
  898.     dual,
  899.     helpstring("IRTCSessionOperationCompleteEvent"),
  900.     pointer_default(unique)
  901. ]
  902. interface IRTCSessionOperationCompleteEvent : IDispatch
  903. {
  904.     [propget, id(1), helpstring("property Session")]
  905.     HRESULT Session( [out, retval] IRTCSession ** ppSession );
  906.     
  907.     [propget, id(2), helpstring("property Cookie")]
  908.     HRESULT Cookie( [out, retval] long * plCookie );
  909.     [propget, id(3), helpstring("property StatusCode")]
  910.     HRESULT StatusCode( [out, retval] long * plStatusCode );
  911.     [propget, id(4), helpstring("property StatusText")]
  912.     HRESULT StatusText( [out, retval] BSTR * pbstrStatusText );
  913. }
  914. [
  915.     object,
  916.     uuid(09bcb597-f0fa-48f9-b420-468cea7fde04),
  917.     dual,
  918.     helpstring("IRTCParticipantStateChangeEvent"),
  919.     pointer_default(unique)
  920. ]
  921. interface IRTCParticipantStateChangeEvent : IDispatch
  922. {
  923.     [propget, id(1), helpstring("property Participant")]
  924.     HRESULT Participant( [out, retval] IRTCParticipant ** ppParticipant );
  925.     
  926.     [propget, id(2), helpstring("property State")]
  927.     HRESULT State( [out, retval] RTC_PARTICIPANT_STATE * penState );
  928.     [propget, id(3), helpstring("property StatusCode")]
  929.     HRESULT StatusCode( [out, retval] long * plStatusCode );
  930. }
  931. [
  932.     object,
  933.     uuid(099944fb-bcda-453e-8c41-e13da2adf7f3),
  934.     dual,
  935.     helpstring("IRTCMediaEvent"),
  936.     pointer_default(unique)
  937. ]
  938. interface IRTCMediaEvent : IDispatch
  939. {
  940.     [propget, id(1), helpstring("property MediaType")]
  941.     HRESULT MediaType( [out, retval] long * pMediaType );
  942.     
  943.     [propget, id(2), helpstring("property EventType")]
  944.     HRESULT EventType( [out, retval] RTC_MEDIA_EVENT_TYPE * penEventType );
  945.     [propget, id(3), helpstring("property EventReason")]
  946.     HRESULT EventReason( [out, retval] RTC_MEDIA_EVENT_REASON * penEventReason );
  947. }
  948. [
  949.     object,
  950.     uuid(4c23bf51-390c-4992-a41d-41eec05b2a4b),
  951.     dual,
  952.     helpstring("IRTCIntensityEvent"),
  953.     pointer_default(unique)
  954. ]
  955. interface IRTCIntensityEvent : IDispatch
  956. {
  957.     [propget, id(1), helpstring("property Level")]
  958.     HRESULT Level( [out, retval] long * plLevel );
  959.     
  960.     [propget, id(2), helpstring("property Min")]
  961.     HRESULT Min( [out, retval] long * plMin );
  962.     [propget, id(3), helpstring("property Max")]
  963.     HRESULT Max( [out, retval] long * plMax );
  964.     [propget, id(4), helpstring("property Direction")]
  965.     HRESULT Direction( [out, retval] RTC_AUDIO_DEVICE * penDirection );
  966. }
  967. [
  968.     object,
  969.     uuid(d3609541-1b29-4de5-a4ad-5aebaf319512),
  970.     dual,
  971.     helpstring("IRTCMessagingEvent"),
  972.     pointer_default(unique)
  973. ]
  974. interface IRTCMessagingEvent : IDispatch
  975. {
  976.     [propget, id(1), helpstring("property Session")]
  977.     HRESULT Session( [out, retval] IRTCSession ** ppSession );
  978.     [propget, id(2), helpstring("property Participant")]
  979.     HRESULT Participant( [out, retval] IRTCParticipant ** ppParticipant );
  980.     
  981.     [propget, id(3), helpstring("property Type")]
  982.     HRESULT EventType( [out, retval] RTC_MESSAGING_EVENT_TYPE * penEventType );
  983.     
  984.     [propget, id(4), helpstring("property Message")]
  985.     HRESULT Message( [out, retval] BSTR * pbstrMessage );
  986.     [propget, id(5), helpstring("property MessageHeader")]
  987.     HRESULT MessageHeader( [out, retval] BSTR * pbstrMessageHeader );
  988.     
  989.     [propget, id(6), helpstring("property UserStatus")]
  990.     HRESULT UserStatus( [out, retval] RTC_MESSAGING_USER_STATUS * penUserStatus );
  991. }
  992. [
  993.     object,
  994.     uuid(f36d755d-17e6-404e-954f-0fc07574c78d),
  995.     dual,
  996.     helpstring("IRTCBuddyEvent"),
  997.     pointer_default(unique)
  998. ]
  999. interface IRTCBuddyEvent : IDispatch
  1000. {
  1001.     [propget, id(1), helpstring("property Buddy")]
  1002.     HRESULT Buddy( [out, retval] IRTCBuddy ** ppBuddy );
  1003. }
  1004. [
  1005.     object,
  1006.     uuid(f30d7261-587a-424f-822c-312788f43548),
  1007.     dual,
  1008.     helpstring("IRTCWatcherEvent"),
  1009.     pointer_default(unique)
  1010. ]
  1011. interface IRTCWatcherEvent : IDispatch
  1012. {
  1013.     [propget, id(1), helpstring("property Watcher")]
  1014.     HRESULT Watcher( [out, retval] IRTCWatcher ** ppWatcher );
  1015. }
  1016. [
  1017.     object,
  1018.     uuid(EC7C8096-B918-4044-94F1-E4FBA0361D5C),
  1019.     helpstring("IRTCCollection interface"),
  1020.     dual
  1021. ]
  1022. interface IRTCCollection : IDispatch
  1023. {
  1024.     [propget, helpstring("Returns number of items in collection.")]
  1025.     HRESULT Count(
  1026.             [out, retval] long * lCount
  1027.             );
  1028.     [propget, id(DISPID_VALUE),
  1029.         helpstring("Given an index, returns an item in the collection.")]
  1030.     HRESULT Item(
  1031.             [in] long Index,
  1032.             [out, retval] VARIANT * pVariant
  1033.             );
  1034.     [propget, restricted, id(DISPID_NEWENUM),
  1035.         helpstring("returns an enumerator for the collection.")]
  1036.         HRESULT _NewEnum(
  1037.             [out, retval] IUnknown ** ppNewEnum
  1038.             );
  1039. }
  1040. [
  1041.     object,
  1042.     uuid(fcd56f29-4a4f-41b2-ba5c-f5bccc060bf6),
  1043.     hidden,
  1044.     helpstring("IRTCEnumParticipants interface"),
  1045.     pointer_default(unique)
  1046. ]   
  1047. interface IRTCEnumParticipants : IUnknown
  1048. {
  1049.     HRESULT Next(
  1050.             [in] ULONG celt,
  1051.             [out, size_is(celt)] IRTCParticipant ** ppElements,
  1052.             [in,out,ptr] ULONG * pceltFetched
  1053.             );
  1054.     HRESULT Reset( void );
  1055.     HRESULT Skip (
  1056.             [in] ULONG celt
  1057.             );
  1058.     HRESULT Clone (
  1059.             [out, retval] IRTCEnumParticipants ** ppEnum
  1060.             );
  1061. }
  1062. [
  1063.     object,
  1064.     uuid(29b7c41c-ed82-4bca-84ad-39d5101b58e3),
  1065.     hidden,
  1066.     helpstring("IRTCEnumProfiles interface"),
  1067.     pointer_default(unique)
  1068. ]  
  1069. interface IRTCEnumProfiles : IUnknown
  1070. {
  1071.     HRESULT Next(
  1072.             [in] ULONG celt,
  1073.             [out, size_is(celt)] IRTCProfile ** ppElements,
  1074.             [in,out,ptr] ULONG * pceltFetched
  1075.             );
  1076.     HRESULT Reset( void );
  1077.     HRESULT Skip (
  1078.             [in] ULONG celt
  1079.             );
  1080.     HRESULT Clone (
  1081.             [out, retval] IRTCEnumProfiles ** ppEnum
  1082.             );
  1083. }
  1084. [
  1085.     object,
  1086.     uuid(f7296917-5569-4b3b-b3af-98d1144b2b87),
  1087.     hidden,
  1088.     helpstring("IRTCEnumBuddies interface"),
  1089.     pointer_default(unique)
  1090. ]   
  1091. interface IRTCEnumBuddies : IUnknown
  1092. {
  1093.     HRESULT Next(
  1094.             [in] ULONG celt,
  1095.             [out, size_is(celt)] IRTCBuddy ** ppElements,
  1096.             [in,out,ptr] ULONG * pceltFetched
  1097.             );
  1098.     HRESULT Reset( void );
  1099.     HRESULT Skip (
  1100.             [in] ULONG celt
  1101.             );
  1102.     HRESULT Clone (
  1103.             [out, retval] IRTCEnumBuddies ** ppEnum
  1104.             );
  1105. }
  1106. [
  1107.     object,
  1108.     uuid(a87d55d7-db74-4ed1-9ca4-77a0e41b413e),
  1109.     hidden,
  1110.     helpstring("IRTCEnumWatchers interface"),
  1111.     pointer_default(unique)
  1112. ]   
  1113. interface IRTCEnumWatchers : IUnknown
  1114. {
  1115.     HRESULT Next(
  1116.             [in] ULONG celt,
  1117.             [out, size_is(celt)] IRTCWatcher ** ppElements,
  1118.             [in,out,ptr] ULONG * pceltFetched
  1119.             );
  1120.     HRESULT Reset( void );
  1121.     HRESULT Skip (
  1122.             [in] ULONG celt
  1123.             );
  1124.     HRESULT Clone (
  1125.             [out, retval] IRTCEnumWatchers ** ppEnum
  1126.             );
  1127. }
  1128. [
  1129.     object,
  1130.     uuid(8b22f92c-cd90-42db-a733-212205c3e3df),
  1131.     helpstring("IRTCPresenceContact Interface"),
  1132.     pointer_default(unique)
  1133. ]
  1134. interface IRTCPresenceContact : IUnknown
  1135. {
  1136.     [propget, helpstring("property PresentityURI")]
  1137.     HRESULT PresentityURI(
  1138.             [out, retval] BSTR * pbstrPresentityURI
  1139.             );   
  1140.     [propput, helpstring("property PresentityURI")]
  1141.     HRESULT PresentityURI(
  1142.             [in] BSTR bstrPresentityURI
  1143.             ); 
  1144.     [propget, helpstring("property Name")]
  1145.     HRESULT Name(
  1146.             [out, retval] BSTR * pbstrName
  1147.             );                 
  1148.     
  1149.     [propput, helpstring("property Name")]
  1150.     HRESULT Name(
  1151.             [in] BSTR bstrName
  1152.             );                 
  1153.     
  1154.     [propget, helpstring("property Data")]
  1155.     HRESULT Data(
  1156.             [out, retval] BSTR * pbstrData
  1157.             );                 
  1158.     
  1159.     [propput, helpstring("property Data")]
  1160.     HRESULT Data(
  1161.             [in] BSTR bstrData
  1162.             );
  1163.                              
  1164.     [propget, helpstring("property Persistent")]
  1165.     HRESULT Persistent(
  1166.             [out, retval] VARIANT_BOOL *pfPersistent
  1167.             );                 
  1168.     
  1169.     [propput, helpstring("property Persistent")]
  1170.     HRESULT Persistent(
  1171.             [in] VARIANT_BOOL fPersistent
  1172.             );                 
  1173.   
  1174. };
  1175. [
  1176.     object,
  1177.     uuid(fcb136c8-7b90-4e0c-befe-56edf0ba6f1c),
  1178.     helpstring("IRTCBuddy Interface"),
  1179.     pointer_default(unique)
  1180. ]
  1181. interface IRTCBuddy : IRTCPresenceContact
  1182. {  
  1183.     [propget, helpstring("property Status")]
  1184.     HRESULT Status(
  1185.             [out, retval] RTC_PRESENCE_STATUS * penStatus
  1186.             );
  1187.     
  1188.     [propget, helpstring("property Notes")]
  1189.     HRESULT Notes(
  1190.             [out, retval] BSTR * pbstrNotes
  1191.             );
  1192. };
  1193. [
  1194.     object,
  1195.     uuid(c7cedad8-346b-4d1b-ac02-a2088df9be4f),
  1196.     helpstring("IRTCWatcher Interface"),
  1197.     pointer_default(unique)
  1198. ]
  1199. interface IRTCWatcher : IRTCPresenceContact
  1200. {
  1201.     [propget, helpstring("property State")]
  1202.     HRESULT State(
  1203.             [out, retval] RTC_WATCHER_STATE * penState
  1204.             );                
  1205.     
  1206.     [propput, helpstring("property State")]
  1207.     HRESULT State(
  1208.             [in] RTC_WATCHER_STATE  enState
  1209.             );                
  1210.                      
  1211. };
  1212. [
  1213.     object,
  1214.     uuid(13fa24c7-5748-4b21-91f5-7397609ce747),
  1215.     helpstring("IRTCEventNotification Interface"),
  1216.     oleautomation,
  1217.     pointer_default(unique)
  1218. ]
  1219. interface IRTCEventNotification : IUnknown
  1220. {
  1221.     [id(1), helpstring("method Event")]
  1222.     HRESULT Event(
  1223.             [in] RTC_EVENT RTCEvent,
  1224.             [in] IDispatch * pEvent
  1225.             );
  1226. }
  1227. [
  1228.     uuid(176ddfbe-fec0-4d55-bc87-84cff1ef7f91),
  1229.     helpstring("IRTCDispatchEventNotification Interface")
  1230. ]
  1231. dispinterface IRTCDispatchEventNotification
  1232. {
  1233.     properties:
  1234.     methods:
  1235.     [id(1), helpstring("method Event")]
  1236.     HRESULT Event(
  1237.             [in] RTC_EVENT RTCEvent,
  1238.             [in] IDispatch * pEvent
  1239.             );
  1240. };
  1241. [
  1242.     uuid(cd260094-de10-4aee-ac73-ef87f6e12683),
  1243.     version(1.0),
  1244.     helpstring("RTCCore 1.0 Type Library")
  1245. ]
  1246. library RTCCORELib
  1247. {
  1248.     importlib("stdole32.tlb");
  1249.     interface IRTCProfile;
  1250.     interface IRTCSession;
  1251.     interface IRTCParticipant;    
  1252.     interface IRTCEnumProfiles;
  1253.     interface IRTCEnumParticipants;
  1254.     interface IRTCCollection;
  1255.     interface IRTCEnumBuddies;
  1256.     interface IRTCBuddy;
  1257.     interface IRTCEnumWatchers;
  1258.     interface IRTCWatcher;
  1259.     interface IRTCEventNotification;
  1260.     interface IRTCClientEvent;
  1261.     interface IRTCRegistrationStateChangeEvent;
  1262.     interface IRTCSessionStateChangeEvent;
  1263.     interface IRTCSessionOperationCompleteEvent;
  1264.     interface IRTCParticipantStateChangeEvent;
  1265.     interface IRTCMediaEvent;
  1266.     interface IRTCIntensityEvent;
  1267.     interface IRTCMessagingEvent;
  1268.     interface IRTCBuddyEvent;
  1269.     interface IRTCWatcherEvent;
  1270.     dispinterface IRTCDispatchEventNotification;
  1271.     [
  1272.         uuid(7a42ea29-a2b7-40c4-b091-f6f024aa89be),
  1273.         helpstring("RTCClient Class")
  1274.     ]
  1275.     coclass RTCClient
  1276.     {        
  1277.         [default] interface IRTCClient;        
  1278.         interface IRTCClientPresence;
  1279.         interface IRTCClientProvisioning;
  1280.         [default, source] dispinterface IRTCDispatchEventNotification;
  1281.         [defaultvtable, source] interface IRTCEventNotification;
  1282.     };
  1283. };