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

模拟服务器

开发平台:

C/C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Copyright 1995 - 1999 Microsoft Corporation. All Rights Reserved.
  4. //
  5. //  Contents:   Conferencing Services Object interfaces
  6. // 
  7. //----------------------------------------------------------------------------
  8. cpp_quote("//+-------------------------------------------------------------------------")
  9. cpp_quote("//")
  10. cpp_quote("//  Microsoft Windows")
  11. cpp_quote("//  Copyright 1995-1999 Microsoft Corporation. All Rights Reserved.")
  12. cpp_quote("//")
  13. cpp_quote("//  File: imsconf2.h")
  14. cpp_quote("//")
  15. cpp_quote("//--------------------------------------------------------------------------")
  16. //////////////////////////////////////////////////////////////////////////////////
  17. // GUID usage:
  18. //
  19. // {068B0700-718C-11d0-8B1A-00A0C91BC90E} - {068B08FF-718C-11d0-8B1A-00A0C91BC90E}
  20. //
  21. import "objidl.idl";
  22. import "oleidl.idl";
  23. import "oaidl.idl";
  24. interface INmManager;
  25. interface INmManagerNotify;
  26. interface INmSysInfo;
  27. interface INmMember;
  28. interface INmCall;
  29. interface INmCallNotify;
  30. interface INmConference;
  31. interface INmConferenceNotify;
  32. interface INmChannel;
  33. interface INmChannelNotify;
  34. interface INmChannelData;
  35. interface INmChannelDataNotify;
  36. interface INmChannelFt;
  37. interface INmChannelFtNotify;
  38. interface INmChannelVideo;
  39. interface INmChannelVideoNotify;
  40. interface INmChannelAudio;
  41. interface INmChannelAudioNotify;
  42. interface INmChannelAppShare;
  43. interface INmChannelAppShareNotify;
  44. interface INmFt;
  45. interface INmSharableApp;
  46. interface IEnumNmConference;
  47. interface IEnumNmMember;
  48. interface IEnumNmChannel;
  49. interface IEnumNmCall;
  50. interface IEnumNmSharableApp;
  51. cpp_quote("")
  52. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  53. cpp_quote("//")
  54. cpp_quote("// Constants")
  55. cpp_quote("")
  56. cpp_quote("// NetMeeting Channel Types")
  57. cpp_quote("#define NMCH_NONE                     0x00000000")
  58. cpp_quote("#define NMCH_DATA                     0x00000001")
  59. cpp_quote("#define NMCH_AUDIO                    0x00000002")
  60. cpp_quote("#define NMCH_VIDEO                    0x00000004")
  61. cpp_quote("#define NMCH_SHARE                    0x00000010")
  62. cpp_quote("#define NMCH_FT                       0x00000020")
  63. cpp_quote("#define NMCH_ALL                      0x0000FFFF")
  64. cpp_quote("#define NMCH_SECURE                   0x00010000")
  65. cpp_quote("")
  66. cpp_quote("// Initialization options")
  67. cpp_quote("#define NM_INIT_NORMAL                0x00000000")
  68. cpp_quote("#define NM_INIT_CONTROL               0x00000001")
  69. cpp_quote("#define NM_INIT_NO_LAUNCH             0x00000002")
  70. cpp_quote("#define NM_INIT_BACKGROUND            0x00000005")
  71. cpp_quote("")
  72. cpp_quote("// INmChannelDataNotify.DataReceived dwFlags")
  73. cpp_quote("#define NM_DF_BROADCAST               0x00000010") // data was broadcast to everyone
  74. cpp_quote("#define NM_DF_PRIVATE                 0x00000020") // data was private
  75. cpp_quote("#define NM_DF_SEGMENT_END             0x00000040") // end of data block
  76. cpp_quote("#define NM_DF_SEGMENT_BEGIN           0x00000080") // start of data block
  77. cpp_quote("")
  78. cpp_quote("// Audio")
  79. cpp_quote("#define NM_MAX_AUDIO_LEVEL            0x0000FFFF")
  80. cpp_quote("")
  81. cpp_quote("// Video")
  82. cpp_quote("#define NM_VIDEO_NO_AUTOSIZE          0x00000000")
  83. cpp_quote("#define NM_VIDEO_SMALL                0x00000001")
  84. cpp_quote("#define NM_VIDEO_MEDIUM               0x00000002")
  85. cpp_quote("#define NM_VIDEO_LARGE                0x00000004")
  86. cpp_quote("#define NM_VIDEO_MIN_QUALITY          0x00000000")
  87. cpp_quote("#define NM_VIDEO_MAX_QUALITY          0x0000001F")
  88. cpp_quote("#define NM_VIDEO_SOURCE_DIALOG        0x00000001")
  89. cpp_quote("#define NM_VIDEO_FORMAT_DIALOG        0x00000002")
  90. cpp_quote("")
  91. cpp_quote("// Version Numbers")
  92. cpp_quote("#define NM_VER_UNKNOWN                0x00000000")
  93. cpp_quote("#define NM_VER_1                      0x00000001")
  94. cpp_quote("#define NM_VER_2                      0x00000002")
  95. cpp_quote("#define NM_VER_NetMeeting2_11         0x00000003")
  96. cpp_quote("#define NM_VER_NetMeeting3            0x00000004")
  97. cpp_quote("#define NM_VER_FUTURE                 0x0000000F")
  98. cpp_quote("")
  99. cpp_quote("")
  100. cpp_quote("// User Categories")
  101. cpp_quote("#define NM_CATEGORY_PERSONAL          0x00000001")
  102. cpp_quote("#define NM_CATEGORY_BUSINESS          0x00000002")
  103. cpp_quote("#define NM_CATEGORY_ADULT             0x00000004")
  104. cpp_quote("")
  105. cpp_quote("")
  106. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  107. cpp_quote("//  Error Codes")
  108. cpp_quote("")
  109. cpp_quote("#define NM_E(e) (0x81000000UL | (ULONG) (e))")
  110. cpp_quote("")
  111. cpp_quote("enum {")
  112. cpp_quote("")
  113. cpp_quote("// NetMeeting specific error codes")
  114. cpp_quote("//")
  115. cpp_quote("  NM_S_NEXT_CONFERENCE          = ((ULONG) 0x0201),") // INmSysInfo.SetProperty
  116. cpp_quote("  NM_S_ON_RESTART               = ((ULONG) 0x0202),") // INmSysInfo.SetProperty
  117. cpp_quote("")
  118. cpp_quote("")
  119. cpp_quote("// Call specific error codes")
  120. cpp_quote("//")
  121. cpp_quote("  NM_CALLERR_NOT_INITIALIZED    = NM_E(0x0100),") // Local system not initialized
  122. cpp_quote("  NM_CALLERR_MEDIA              = NM_E(0x0101),") // Invalid channel/media types
  123. cpp_quote("  NM_CALLERR_NAME_RESOLUTION    = NM_E(0x0102),") // Name resolution failed
  124. cpp_quote("  NM_CALLERR_PASSWORD           = NM_E(0x0103),") // Invalid conference password
  125. cpp_quote("  NM_CALLERR_CONFERENCE_NAME    = NM_E(0x0104),") // Problem with the conference name
  126. cpp_quote("  NM_CALLERR_IN_CONFERENCE      = NM_E(0x0105),") // Remote system is in a conference
  127. cpp_quote("  NM_CALLERR_NOT_FOUND          = NM_E(0x0106),") // User/Address not found
  128. cpp_quote("  NM_CALLERR_MCU                = NM_E(0x0107),") // Can't invite MCU into existing conference
  129. cpp_quote("  NM_CALLERR_REJECTED           = NM_E(0x0108),") // Remote system rejected the request
  130. cpp_quote("  NM_CALLERR_AUDIO              = NM_E(0x0109),") // Audio connection failed
  131. cpp_quote("  NM_CALLERR_AUDIO_LOCAL        = NM_E(0x010A),") // Local audio device already in use
  132. cpp_quote("  NM_CALLERR_AUDIO_REMOTE       = NM_E(0x010B),") // Remote audio device in use
  133. cpp_quote("  NM_CALLERR_ALREADY_CALLING    = NM_E(0x01FD),") // Already calling this person
  134. cpp_quote("  NM_CALLERR_LOOPBACK           = NM_E(0x01FE),") // Called Local Machine
  135. cpp_quote("  NM_CALLERR_UNKNOWN            = NM_E(0x01FF),") // Unknown call error
  136. cpp_quote("")
  137. cpp_quote("// other error codes")
  138. cpp_quote("//")
  139. cpp_quote("  NM_E_NOT_INITIALIZED          = NM_E(0x0200),") // INmManager not Initialized
  140. cpp_quote("  NM_E_CHANNEL_ALREADY_EXISTS   = NM_E(0x0201),") // Data channel already exists
  141. cpp_quote("  NM_E_NO_T120_CONFERENCE       = NM_E(0x0202),") // Not in a T.120 data conference
  142. cpp_quote("  NM_E_NOT_ACTIVE               = NM_E(0x0203),") // NetMeeting is not running
  143. cpp_quote("  NM_E_FILE_TOO_BIG             = NM_E(0x0204),") // The file we attempted to send is too big
  144. cpp_quote("  NM_E_USER_CANCELED_SETUP    = NM_E(0x0205),") // User canceled NetMeeting setup wizard
  145. cpp_quote("  NM_E_ALREADY_RUNNING    = NM_E(0x0206),") // This means that NetMeeting is already running
  146. cpp_quote("  NM_E_SHARING_NOT_AVAILABLE    = NM_E(0x0207),") // This means that Shring is not available
  147. cpp_quote("};")
  148. cpp_quote("")
  149. typedef enum tagNmConferenceState{
  150.     NM_CONFERENCE_IDLE                           = 0,
  151.     NM_CONFERENCE_WAITING                        = 1,
  152.     NM_CONFERENCE_INITIALIZING                   = 2,
  153.     NM_CONFERENCE_ACTIVE                         = 3,
  154. } NM_CONFERENCE_STATE;
  155. typedef enum tagNmCallType{
  156.     NM_CALL_DEFAULT                              = 0,
  157.     NM_CALL_T120                                 = 1,
  158.     NM_CALL_H323                                 = 2,
  159. } NM_CALL_TYPE;
  160. typedef enum tagNmAddrType{
  161.     NM_ADDR_UNKNOWN                              = 0,
  162.     NM_ADDR_IP                                   = 1,
  163.     NM_ADDR_MACHINENAME                          = 2,
  164.     NM_ADDR_PSTN                                 = 3,
  165.     NM_ADDR_ULS                                  = 4,
  166.     NM_ADDR_H323_GATEWAY                         = 5,
  167.     NM_ADDR_CALLTO                               = 6,
  168.     NM_ADDR_T120_TRANSPORT                       = 7,
  169. } NM_ADDR_TYPE;
  170. typedef enum tagNmCallState{
  171.     NM_CALL_INVALID                              = 0,
  172.     NM_CALL_INIT                                 = 1,
  173.     NM_CALL_RING                                 = 2,
  174.     NM_CALL_SEARCH                               = 3,
  175.     NM_CALL_WAIT                                 = 4,
  176.     NM_CALL_ACCEPTED                             = 5,
  177.     NM_CALL_REJECTED                             = 6,
  178.     NM_CALL_CANCELED                             = 7,
  179. } NM_CALL_STATE;
  180. typedef enum tagNmMemberNotify{
  181.     NM_MEMBER_ADDED                              = 0,
  182.     NM_MEMBER_REMOVED                            = 1,
  183.     NM_MEMBER_UPDATED                            = 2,
  184. } NM_MEMBER_NOTIFY;
  185. typedef enum tagNmChannelNotify{
  186.     NM_CHANNEL_ADDED                             = 0,
  187.     NM_CHANNEL_REMOVED                           = 1,
  188.     NM_CHANNEL_UPDATED                           = 2,
  189. } NM_CHANNEL_NOTIFY;
  190. typedef enum tagNmFtState{
  191.     NM_FT_INVALID                                = 0,
  192.     NM_FT_SENDING                                = 1,
  193.     NM_FT_RECEIVING                              = 2,
  194.     NM_FT_COMPLETE                               = 3,
  195. } NM_FT_STATE;
  196. typedef enum tagNmAudioState{
  197.     NM_AUDIO_IDLE                                = 0,
  198.     NM_AUDIO_LOCAL_PAUSED                        = 1,
  199.     NM_AUDIO_TRANSFERRING                        = 3,
  200. } NM_AUDIO_STATE;
  201. typedef enum tagNmAudProp{
  202.     NM_AUDPROP_LEVEL                             = 1,
  203.     NM_AUDPROP_PAUSE                             = 2,
  204. } NM_AUDPROP;
  205. typedef enum tagNmVideoState{
  206.     NM_VIDEO_IDLE                                = 0,
  207.     NM_VIDEO_LOCAL_PAUSED                        = 1,
  208.     NM_VIDEO_PREVIEWING                          = 2,
  209.     NM_VIDEO_TRANSFERRING                        = 3,
  210.     NM_VIDEO_BOTH_PAUSED                         = 5,
  211.     NM_VIDEO_REMOTE_PAUSED                       = 7,
  212. } NM_VIDEO_STATE;
  213. typedef enum tagNmVidProp{
  214.     NM_VIDPROP_PAUSE                             = 1,
  215.     NM_VIDPROP_WINDOW_AUTO_SIZE                  = 2,
  216.     NM_VIDPROP_WINDOW_SIZE                       = 3,
  217.     NM_VIDPROP_WINDOW_POSITION                   = 4,
  218.     NM_VIDPROP_WINDOW_TOP_MOST                   = 5,
  219.     NM_VIDPROP_WINDOW_VISIBLE                    = 6,
  220.     NM_VIDPROP_IMAGE_PREFERRED_SIZE              = 7,
  221.     NM_VIDPROP_IMAGE_QUALITY                     = 8,
  222.     NM_VIDPROP_CAMERA_DIALOG                     = 9,
  223. } NM_VIDPROP;
  224. typedef enum tagNmShareState{
  225.     NM_SHARE_UNKNOWN                             = 0,
  226.     NM_SHARE_WORKING_ALONE                       = 1,
  227.     NM_SHARE_COLLABORATING                       = 2,
  228.     NM_SHARE_IN_CONTROL                          = 3,
  229. } NM_SHARE_STATE;
  230. typedef enum tagNmShAppState{
  231.     NM_SHAPP_NOT_SHARED                          = 0,
  232.     NM_SHAPP_SHARED                              = 1,
  233. } NM_SHAPP_STATE;
  234. typedef enum tagNmSysProp{
  235.     NM_SYSPROP_EMAIL_NAME                        = 1,
  236.     NM_SYSPROP_SERVER_NAME                       = 2,
  237.     NM_SYSPROP_RESOLVE_NAME                      = 3,
  238.     NM_SYSPROP_FIRST_NAME                        = 4,
  239.     NM_SYSPROP_LAST_NAME                         = 5,
  240.     NM_SYSPROP_USER_NAME                         = 6,
  241.     NM_SYSPROP_USER_CITY                         = 7,
  242.     NM_SYSPROP_USER_COUNTRY                      = 8,
  243.     NM_SYSPROP_USER_COMMENTS                     = 9,
  244.     NM_SYSPROP_USER_CATEGORY                     = 10,
  245.     NM_SYSPROP_USER_PHONENUM                     = 11,
  246.     NM_SYSPROP_USER_LOCATION                     = 12,
  247.     NM_SYSPROP_H323_GATEWAY                      = 20,
  248.     NM_SYSPROP_H323_GATEWAY_ENABLE               = 21,
  249.     NM_SYSPROP_INSTALL_DIRECTORY                 = 50,
  250.     NM_SYSPROP_APP_NAME                          = 51,
  251.     NM_SYSPROP_LOGGED_ON                         = 69,
  252.     NM_SYSPROP_IS_RUNNING                        = 100,
  253.     NM_SYSPROP_IN_CONFERENCE                     = 101,
  254. NM_SYSPROP_BUILD_VER  = 200,
  255. NM_SYSPROP_DISABLE_H323  = 201,
  256. NM_SYSPROP_DISABLE_INITIAL_ILS_LOGON  = 202
  257. } NM_SYSPROP;
  258. typedef enum tagConfn{
  259. // File Transfer
  260.     CONFN_FT_UI                                  = 0x000211,
  261.     CONFN_FT_OFFERED                             = 0x000212,
  262.     CONFN_FT_STARTED                             = 0x000213,
  263.     CONFN_FT_PROGRESS                            = 0x000214,
  264.     CONFN_FT_COMPLETE                            = 0x000215,
  265.     CONFN_FT_CANCELED                            = 0x000216,
  266. // Sharing
  267.     CONFN_CLICK_CONTROL                          = 0x000220,
  268.     CONFN_CLICK_OBSCURE                          = 0x000221,
  269.     CONFN_CLICK_REMOTE_NOT_COLLABORATING         = 0x000222,
  270.     CONFN_CLICK_LOCAL_NOT_COLLABORATING          = 0x000223,
  271. // Call control
  272.     CONFN_CALL_INCOMPATIBLE                      = 0x000400,
  273.     CONFN_CALL_OLDER                             = 0x000401,
  274.     CONFN_CALL_NEWER                             = 0x000402,
  275.     CONFN_CALL_IGNORED                           = 0x000403,
  276.     CONFN_CALL_FAILED                            = 0x000404,
  277.     CONFN_CALL_IN_CONFERENCE                     = 0x000405,
  278. // Manager notifications
  279.     CONFN_NM_STARTED                             = 0x000600,
  280.     CONFN_NM_STOPPED                             = 0x000601,
  281. } CONFN;
  282. // INmObject constants
  283. typedef enum NM_APPID {
  284. NM_APPID_CHAT = 1,
  285. NM_APPID_WHITEBOARD = 2,
  286. NM_APPID_T126_WHITEBOARD = 3,
  287. NM_APPID_FILE_TRANSFER = 4,
  288. NM_APPID_APPSHARING = 5
  289. } NM_APPID;
  290. typedef enum NM_VUI {
  291. NM_VUI_CHECK = 0,
  292. NM_VUI_SHOW = 1
  293. } NM_VUI;
  294. //--------------------------------------------------------------------------
  295. // INmManager Interface
  296. [
  297.     object,
  298.     uuid(068B0701-718C-11d0-8B1A-00A0C91BC90E),
  299.     pointer_default(unique)
  300. ]
  301. interface INmManager : IUnknown
  302. {
  303.     typedef [unique] INmManager *LPNMMANAGER;
  304. [local]
  305.     HRESULT Initialize(
  306.         [in, out] ULONG * puOptions, // Can be NULL
  307.         [in, out] ULONG * puchCaps); // Can be NULL
  308. [call_as(Initialize)]
  309. HRESULT RemoteInitialize(
  310. [in, out] ULONG * puOptions,
  311.         [in, out] ULONG * puchCaps);
  312.     HRESULT GetSysInfo(
  313.         [out] INmSysInfo **ppSysInfo);
  314.     HRESULT EnumConference(
  315.         [out] IEnumNmConference **ppEnum);
  316. [local]
  317.     HRESULT CreateConference(
  318.         [out] INmConference **ppConference,
  319.         [in] BSTR bstrName,
  320.         [in] BSTR bstrPassword,
  321.         [in] ULONG uchCaps);
  322. [call_as(CreateConference)]
  323.     HRESULT RemoteCreateConference(
  324.         [out] INmConference **ppConference,
  325.         [in] BSTR bstrName,
  326.         [in] BSTR bstrPassword,
  327.         [in] ULONG uchCaps);
  328.     HRESULT EnumCall(
  329.         [out] IEnumNmCall **ppEnum);
  330. [local]
  331.     HRESULT CreateCall(
  332.         [out] INmCall **ppCall, // Can be NULL
  333.         [in] NM_CALL_TYPE callType,
  334.         [in] NM_ADDR_TYPE addrType,
  335.         [in] BSTR bstrAddr,
  336.         [in] INmConference * pConference);
  337. [call_as(CreateCall)]
  338.     HRESULT RemoteCreateCall(
  339.         [out] INmCall **ppCall,
  340.         [in] NM_CALL_TYPE callType,
  341.         [in] NM_ADDR_TYPE addrType,
  342.         [in] BSTR bstrAddr,
  343.         [in] INmConference * pConference);
  344. [local]
  345.     HRESULT CallConference(
  346.         [out] INmCall **ppCall,
  347.         [in] NM_CALL_TYPE callType,
  348.         [in] NM_ADDR_TYPE addrType,
  349.         [in] BSTR bstrAddr,
  350.         [in] BSTR bstrName,
  351.         [in] BSTR bstrPassword);
  352. [call_as(CallConference)]
  353.     HRESULT RemoteCallConference(
  354.         [out] INmCall **ppCall,
  355.         [in] NM_CALL_TYPE callType,
  356.         [in] NM_ADDR_TYPE addrType,
  357.         [in] BSTR bstrAddr,
  358.         [in] BSTR bstrName,
  359.         [in] BSTR bstrPassword);
  360. }
  361. //--------------------------------------------------------------------------
  362. // INmManagerNotify Interface
  363. [
  364.     object,
  365.     uuid(068B0702-718C-11d0-8B1A-00A0C91BC90E),
  366.     pointer_default(unique)
  367. ]
  368. interface INmManagerNotify : IUnknown
  369. {
  370.     typedef [unique] INmManagerNotify *LPNMMANAGERNOTIFY;
  371.     HRESULT NmUI(
  372.         [in] CONFN uNotify);
  373.     HRESULT ConferenceCreated(
  374.         [in] INmConference *pConference);
  375.     HRESULT CallCreated(
  376.         [in] INmCall *pCall);
  377. }
  378. //--------------------------------------------------------------------------
  379. // INmSysInfo Interface
  380. [
  381. local,
  382.     object,
  383.     uuid(068B0703-718C-11d0-8B1A-00A0C91BC90E),
  384.     pointer_default(unique)
  385. ]
  386. interface INmSysInfo : IUnknown
  387. {
  388.     typedef [unique] INmSysInfo *LPNMSYSINFO;
  389.     HRESULT IsInstalled(
  390.         void);
  391.     HRESULT GetProperty(
  392.         [in] NM_SYSPROP uProp,
  393.         [out] BSTR *pbstrName);
  394.     HRESULT SetProperty(
  395.         [in] NM_SYSPROP uProp,
  396.         [in] BSTR bstrName);
  397.     HRESULT GetUserData(
  398.         [in] REFGUID rguid,
  399.         [out] BYTE **ppb,
  400.         [out] ULONG *pcb);
  401.     HRESULT SetUserData(
  402.         [in] REFGUID rguid,
  403.         [in] BYTE *pb,
  404.         [in] ULONG cb);
  405.     HRESULT GetNmApp(
  406.         [in] REFGUID rguid,
  407.         [out] BSTR *pbstrApplication,
  408.         [out] BSTR *pbstrCommandLine,
  409.         [out] BSTR *pbstrDirectory);
  410.     HRESULT SetNmApp(
  411.         [in] REFGUID rguid,
  412.         [in] BSTR bstrApplication,
  413.         [in] BSTR bstrCommandLine,
  414.         [in] BSTR bstrDirectory);
  415.     HRESULT GetNmchCaps(
  416.         [out] ULONG *pchCaps);
  417.     HRESULT GetLaunchInfo(
  418.         [out] INmConference **ppConference, // Can be NULL
  419.         [out] INmMember **ppMember); // Can be NULL
  420. }
  421. //--------------------------------------------------------------------------
  422. // INmCall Interface
  423. [
  424.     object,
  425.     uuid(068B0704-718C-11d0-8B1A-00A0C91BC90E),
  426.     pointer_default(unique)
  427. ]
  428. interface INmCall : IUnknown
  429. {
  430.     typedef [unique] INmCall *LPNMCALL;
  431.     HRESULT IsIncoming(
  432.         void);
  433.     HRESULT GetState(
  434.         [out] NM_CALL_STATE *pState);
  435.     HRESULT GetName(
  436.         [out] BSTR *pbstrName);
  437.     HRESULT GetAddr(
  438.         [out] BSTR *pbstrAddr,
  439.         [out] NM_ADDR_TYPE *puType);
  440.     HRESULT GetUserData(
  441.         [in] REFGUID rguid,
  442.         [out, size_is(,*pcb)] BYTE **ppb,
  443.         [out] ULONG *pcb);
  444.     HRESULT GetConference(
  445.         [out] INmConference **ppConference);
  446.     HRESULT Accept(
  447.         void);
  448.     HRESULT Reject(
  449.         void);
  450.     HRESULT Cancel(
  451.         void);
  452. }
  453. //--------------------------------------------------------------------------
  454. // INmCallNotify Interface
  455. [
  456.     object,
  457.     uuid(068B0705-718C-11d0-8B1A-00A0C91BC90E),
  458.     pointer_default(unique)
  459. ]
  460. interface INmCallNotify : IUnknown
  461. {
  462.     HRESULT NmUI(
  463.         [in] CONFN uNotify);
  464.     HRESULT StateChanged(
  465.         [in] NM_CALL_STATE uState);
  466.     HRESULT Failed(
  467.         [in] ULONG uError);
  468.     HRESULT Accepted(
  469.         [in] INmConference *pConference);
  470. }
  471. //--------------------------------------------------------------------------
  472. // INmConference Interface
  473. [
  474.     object,
  475.     uuid(068B0710-718C-11d0-8B1A-00A0C91BC90E),
  476.     pointer_default(unique)
  477. ]
  478. interface INmConference : IUnknown
  479. {
  480.     typedef [unique] INmConference *LPNMCONFERENCE;
  481.     HRESULT GetName(
  482.         [out] BSTR *pbstrName);
  483.     HRESULT GetID(
  484.         [out] ULONG *puID);
  485.     HRESULT GetState(
  486.         [out] NM_CONFERENCE_STATE *pState);
  487.     HRESULT GetNmchCaps(
  488.         [out] ULONG *puchCaps);
  489.     HRESULT GetTopProvider(
  490.         [out] INmMember **ppMember);
  491.     HRESULT EnumMember(
  492.         [out] IEnumNmMember **ppEnum);
  493.     HRESULT GetMemberCount(
  494.         [out] ULONG * puCount);
  495.     HRESULT EnumChannel(
  496.         [out] IEnumNmChannel **ppEnum);
  497.     HRESULT GetChannelCount(
  498.         [out] ULONG * puCount);
  499. [local]
  500.     HRESULT CreateDataChannel(
  501.         [out] INmChannelData **ppChannel, // Can be NULL
  502.         [in] REFGUID rguid);
  503. [call_as(CreateDataChannel)]
  504.     HRESULT RemoteCreateDataChannel(
  505.         [out] INmChannelData **ppChannel,
  506.         [in] REFGUID rguid);
  507.     HRESULT IsHosting(
  508.         void);
  509.     HRESULT Host(
  510.         void);
  511.         
  512.     HRESULT Leave(
  513.         void);
  514.     HRESULT LaunchRemote(
  515.         [in] REFGUID rguid,
  516.         [in] INmMember *pMember);
  517. }
  518. //--------------------------------------------------------------------------
  519. // INmConferenceNotify Interface
  520. [
  521.     object,
  522.     uuid(068B0711-718C-11d0-8B1A-00A0C91BC90E),
  523.     pointer_default(unique)
  524. ]
  525. interface INmConferenceNotify : IUnknown
  526. {
  527.     HRESULT NmUI(
  528.         [in] CONFN uNotify);
  529.     HRESULT StateChanged(
  530.         [in] NM_CONFERENCE_STATE uState);
  531.     HRESULT MemberChanged(
  532.         [in] NM_MEMBER_NOTIFY uNotify,
  533.         [in] INmMember *pMember);
  534.     HRESULT ChannelChanged(
  535.         [in] NM_CHANNEL_NOTIFY uNotify,
  536.         [in] INmChannel *pChannel);
  537. }
  538. //--------------------------------------------------------------------------
  539. // INmMember Interface
  540. [
  541.     object,
  542.     uuid(068B0712-718C-11d0-8B1A-00A0C91BC90E),
  543.     pointer_default(unique)
  544. ]
  545. interface INmMember : IUnknown
  546. {
  547.     HRESULT GetName(
  548.         [out] BSTR *pbstrName);
  549.     HRESULT GetID(
  550.         [out] ULONG *puID);
  551.     HRESULT GetNmVersion(
  552.         [out] ULONG *puVersion);
  553.     HRESULT GetAddr(
  554.         [out] BSTR *pbstrAddr,
  555.         [out] NM_ADDR_TYPE *puType);
  556.     HRESULT GetUserData(
  557.         [in] REFGUID rguid,
  558.         [out, size_is(,*pcb)] BYTE **ppb,
  559.         [out] ULONG *pcb);
  560.     HRESULT GetConference(
  561.         [out] INmConference **ppConference);
  562.     HRESULT GetNmchCaps(
  563.         [out] ULONG *puchCaps);
  564.     HRESULT GetShareState(
  565.         [out] NM_SHARE_STATE *puState);
  566.     HRESULT IsSelf(
  567.         void);
  568.     HRESULT IsMCU(
  569.         void);
  570.     HRESULT Eject(
  571.         void);
  572. }
  573. //--------------------------------------------------------------------------
  574. // INmChannel Interface
  575. [
  576.     object,
  577.     uuid(068B0720-718C-11d0-8B1A-00A0C91BC90E),
  578.     pointer_default(unique)
  579. ]
  580. interface INmChannel : IUnknown
  581. {
  582.     HRESULT IsSameAs(
  583.         [in] INmChannel *pChannel);
  584.     HRESULT IsActive(
  585.         void);
  586.         
  587.     HRESULT SetActive(
  588.         [in] BOOL fActive);
  589.     HRESULT GetConference(
  590.         [out] INmConference **ppConference);
  591.     HRESULT GetInterface(
  592.         [out] IID *piid);
  593.     HRESULT GetNmch(
  594.         [out] ULONG *puCh);
  595.     HRESULT EnumMember(
  596.         [out] IEnumNmMember **ppEnum);
  597.     HRESULT GetMemberCount(
  598.         [out] ULONG * puCount);
  599. }
  600. //--------------------------------------------------------------------------
  601. // INmChannelNotify Interface
  602. [
  603.     object,
  604.     uuid(068B0721-718C-11d0-8B1A-00A0C91BC90E),
  605.     pointer_default(unique)
  606. ]
  607. interface INmChannelNotify : IUnknown
  608. {
  609.     HRESULT NmUI(
  610.         [in] CONFN uNotify);
  611.     HRESULT MemberChanged(
  612.         [in] NM_MEMBER_NOTIFY uNotify,
  613.         [in] INmMember *pMember);
  614. }
  615. //--------------------------------------------------------------------------
  616. // INmChannelData Interface
  617. [
  618.     object,
  619.     uuid(068B0722-718C-11d0-8B1A-00A0C91BC90E),
  620.     pointer_default(unique)
  621. ]
  622. interface INmChannelData : INmChannel
  623. {
  624.     HRESULT GetGuid(
  625.         [out] GUID *pguid);
  626.     HRESULT SendData(
  627.         [in] INmMember *pMember,
  628.         [in] ULONG uSize,
  629.         [in, size_is(uSize)] byte *pvBuffer,
  630.         [in] ULONG uOptions);
  631. }
  632. //--------------------------------------------------------------------------
  633. // INmChannelDataNotify Interface
  634. [
  635.     object,
  636.     uuid(068B0723-718C-11d0-8B1A-00A0C91BC90E),
  637.     pointer_default(unique)
  638. ]
  639. interface INmChannelDataNotify : INmChannelNotify
  640. {
  641.     HRESULT DataSent(
  642.         [in] INmMember *pMember,
  643.         [in] ULONG uSize,
  644.         [in, size_is(uSize)] byte *pvBuffer);
  645.     HRESULT DataReceived(
  646.         [in] INmMember *pMember,
  647.         [in] ULONG uSize,
  648.         [in, size_is(uSize)] byte *pvBuffer,
  649.         [in] ULONG dwFlags);
  650. }
  651. //--------------------------------------------------------------------------
  652. // INmChannelAudio Interface
  653. [
  654.     object,
  655.     uuid(068B0724-718C-11d0-8B1A-00A0C91BC90E),
  656.     pointer_default(unique)
  657. ]
  658. interface INmChannelAudio : INmChannel
  659. {
  660.     HRESULT IsIncoming(
  661.         void);
  662.     HRESULT GetState(
  663.         [out] NM_AUDIO_STATE *puState);
  664.     HRESULT GetProperty(
  665.         [in] NM_AUDPROP uID,
  666.         [out] ULONG *puValue);
  667.     HRESULT SetProperty(
  668.         [in] NM_AUDPROP uID,
  669.         [in] ULONG uValue);
  670. }
  671. //--------------------------------------------------------------------------
  672. // INmChannelAudioNotify Interface
  673. [
  674.     object,
  675.     uuid(068B0725-718C-11d0-8B1A-00A0C91BC90E),
  676.     pointer_default(unique)
  677. ]
  678. interface INmChannelAudioNotify : INmChannelNotify
  679. {
  680.     HRESULT StateChanged(
  681.         [in] NM_AUDIO_STATE uState);
  682.     HRESULT PropertyChanged(
  683.         [in] DWORD dwReserved);
  684. }
  685. //--------------------------------------------------------------------------
  686. // INmChannelVideo Interface
  687. [
  688.     object,
  689.     uuid(068B0726-718C-11d0-8B1A-00A0C91BC90E),
  690.     pointer_default(unique)
  691. ]
  692. interface INmChannelVideo : INmChannel
  693. {
  694.     HRESULT IsIncoming(
  695.         void);
  696.     HRESULT GetState(
  697.         [out] NM_VIDEO_STATE *puState);
  698.     HRESULT GetProperty(
  699.         [in] NM_VIDPROP uID,
  700.         [out] ULONG *puValue);
  701.     HRESULT SetProperty(
  702.         [in] NM_VIDPROP uID,
  703.         [in] ULONG uValue);
  704. }
  705. //--------------------------------------------------------------------------
  706. // INmChannelVideoNotify Interface
  707. [
  708.     object,
  709.     uuid(068B0727-718C-11d0-8B1A-00A0C91BC90E),
  710.     pointer_default(unique)
  711. ]
  712. interface INmChannelVideoNotify : INmChannelNotify
  713. {
  714.     HRESULT StateChanged(
  715.         [in] NM_VIDEO_STATE uState);
  716.     HRESULT PropertyChanged(
  717.         [in] DWORD dwReserved);
  718. }
  719. //--------------------------------------------------------------------------
  720. // INmChannelFt Interface
  721. [
  722.     object,
  723.     uuid(068B0728-718C-11d0-8B1A-00A0C91BC90E),
  724.     pointer_default(unique)
  725. ]
  726. interface INmChannelFt : INmChannel
  727. {
  728. [local]
  729.     HRESULT SendFile(
  730.         [out] INmFt **ppFt, // Can be NULL
  731.         [in] INmMember *pMember,
  732.         [in] BSTR bstrFile,
  733.         [in] ULONG uOptions);
  734. [call_as(SendFile)]
  735.     HRESULT RemoteSendFile(
  736.         [out] INmFt **ppFt,
  737.         [in] INmMember *pMember,
  738.         [in] BSTR bstrFile,
  739.         [in] ULONG uOptions);
  740. [local]
  741.     HRESULT SetReceiveFileDir(
  742.         [in] BSTR bstrDir);
  743. [call_as(SetReceiveFileDir)]
  744.     HRESULT RemoteSetReceiveFileDir(
  745.         [in] BSTR bstrDir);
  746.     HRESULT GetReceiveFileDir(
  747.         [out] BSTR *pbstrDir);
  748. }
  749. //--------------------------------------------------------------------------
  750. // INmChannelFtNotify Interface
  751. [
  752.     object,
  753.     uuid(068B0729-718C-11d0-8B1A-00A0C91BC90E),
  754.     pointer_default(unique)
  755. ]
  756. interface INmChannelFtNotify : INmChannelNotify
  757. {
  758.     HRESULT FtUpdate(
  759.         [in] CONFN uNotify,
  760.         [in] INmFt *pFt);
  761. }
  762. //--------------------------------------------------------------------------
  763. // INmFt Interface
  764. [
  765.     object,
  766.     uuid(068B0732-718C-11d0-8B1A-00A0C91BC90E),
  767.     pointer_default(unique)
  768. ]
  769. interface INmFt : IUnknown
  770. {
  771.     HRESULT IsIncoming(
  772.         void);
  773.     HRESULT GetState(
  774.         [out] NM_FT_STATE *puState);
  775.     HRESULT GetName(
  776.         [out] BSTR *pbstrName);
  777.     HRESULT GetSize(
  778.         [out] ULONG *puBytes);
  779.     HRESULT GetBytesTransferred(
  780.         [out] ULONG *puBytes);
  781.     HRESULT GetMember(
  782.         [out] INmMember **ppMember);
  783.     HRESULT Cancel(
  784.         void);
  785. }
  786. //--------------------------------------------------------------------------
  787. // INmChannelAppShare Interface
  788. [
  789.     object,
  790.     uuid(068B072A-718C-11d0-8B1A-00A0C91BC90E),
  791.     pointer_default(unique)
  792. ]
  793. interface INmChannelAppShare : INmChannel
  794. {
  795.     HRESULT GetState(
  796.         [out] NM_SHARE_STATE *puState);
  797.     HRESULT SetState(
  798.         [in] NM_SHARE_STATE uState);
  799.     HRESULT EnumSharableApp(
  800.         [out] IEnumNmSharableApp **ppEnum);
  801. }
  802. //--------------------------------------------------------------------------
  803. // INmChannelAppShareNotify Interface
  804. [
  805.     object,
  806.     uuid(068B072B-718C-11d0-8B1A-00A0C91BC90E),
  807.     pointer_default(unique)
  808. ]
  809. interface INmChannelAppShareNotify : INmChannelNotify
  810. {
  811.     HRESULT StateChanged(
  812.         [in] NM_SHAPP_STATE uState,
  813.         [in] INmSharableApp *pApp);
  814. }
  815. //--------------------------------------------------------------------------
  816. // INmSharableApp Interface
  817. [
  818.     object,
  819.     uuid(068B0734-718C-11d0-8B1A-00A0C91BC90E),
  820.     pointer_default(unique)
  821. ]
  822. interface INmSharableApp : IUnknown
  823. {
  824.     HRESULT GetName(
  825.         [out] BSTR *pbstrName);
  826.     HRESULT GetHwnd(
  827.         [out] HWND * phwnd);
  828.      HRESULT GetState(
  829.         [out] NM_SHAPP_STATE *puState);
  830.      HRESULT SetState(
  831.         [in] NM_SHAPP_STATE uState);
  832. }
  833. cpp_quote("")
  834. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  835. cpp_quote("//  Enumerator Definitions")
  836. //--------------------------------------------------------------------------
  837. // IEnumNmConference Interface
  838. [
  839.     object,
  840.     uuid(068B0741-718C-11d0-8B1A-00A0C91BC90E),
  841.     pointer_default(unique)
  842. ]
  843. interface IEnumNmConference : IUnknown
  844. [local]
  845.     HRESULT Next(
  846.         [in] ULONG cConference,
  847.         [out] INmConference **rgpConference,
  848.         [out] ULONG *pcFetched);
  849. [call_as(Next)]
  850.     HRESULT RemoteNext(
  851.         [in] ULONG cConference,
  852.         [out, size_is(cConference), length_is(*pcFetched) ] INmConference **rgpConference,
  853.         [out] ULONG *pcFetched,
  854. [out] ULONG *pcItems,
  855. [in] BOOL bGetNumberRemaining);
  856.     HRESULT Skip(
  857.         [in] ULONG cConference);
  858.         
  859.     HRESULT Reset();
  860.     HRESULT Clone(
  861.         [out] IEnumNmConference **ppEnum);
  862. }
  863. //--------------------------------------------------------------------------
  864. // IEnumNmMember Interface
  865. [
  866.     object,
  867.     uuid(068B0742-718C-11d0-8B1A-00A0C91BC90E),
  868.     pointer_default(unique)
  869. ]
  870. interface IEnumNmMember : IUnknown
  871. [local]
  872.     HRESULT Next(
  873.         [in] ULONG cMember,
  874.         [out] INmMember **rgpMember,
  875.         [out] ULONG *pcFetched);
  876. [call_as(Next)]
  877.     HRESULT RemoteNext(
  878.         [in] ULONG cMember,
  879.         [out, size_is(cMember), length_is(*pcFetched) ] INmMember **rgpMember,
  880.         [out] ULONG *pcFetched,
  881. [out] ULONG *pcItems,
  882. [in] BOOL bGetNumberRemaining);
  883.     HRESULT Skip(
  884.         [in] ULONG cMember);
  885.         
  886.     HRESULT Reset();
  887.     HRESULT Clone(
  888.         [out] IEnumNmMember **ppEnum);
  889. }
  890. //--------------------------------------------------------------------------
  891. // IEnumNmChannel Interface
  892. [
  893.     object,
  894.     uuid(068B0743-718C-11d0-8B1A-00A0C91BC90E),
  895.     pointer_default(unique)
  896. ]
  897. interface IEnumNmChannel : IUnknown
  898. [local]
  899.     HRESULT Next(
  900.         [in] ULONG cChannel,
  901.         [out, size_is(cChannel), length_is(*pcFetched)] INmChannel **rgpChannel,
  902.         [out] ULONG *pcFetched);
  903. [call_as(Next)]
  904.     HRESULT RemoteNext(
  905.         [in] ULONG cChannel,
  906.         [out, size_is(cChannel), length_is(*pcFetched)] INmChannel **rgpChannel,
  907.         [out] ULONG *pcFetched,
  908. [out] ULONG *pcItems,
  909. [in] BOOL bGetNumberRemaining);
  910.     HRESULT Skip(
  911.         [in] ULONG cChannel);
  912.         
  913.     HRESULT Reset();
  914.     HRESULT Clone(
  915.         [out] IEnumNmChannel **ppEnum);
  916. }
  917. //--------------------------------------------------------------------------
  918. // IEnumNmCall Interface
  919. [
  920.     object,
  921.     uuid(068B0744-718C-11d0-8B1A-00A0C91BC90E),
  922.     pointer_default(unique)
  923. ]
  924. interface IEnumNmCall : IUnknown
  925. [local]
  926. HRESULT Next(
  927.         [in] ULONG cCall,
  928.         [out] INmCall **rgpCall,
  929.         [out] ULONG *pcFetched);
  930. [call_as(Next)]
  931.     HRESULT RemoteNext(
  932.         [in] ULONG cCall,
  933.         [out, size_is(cCall), length_is(*pcFetched)] INmCall **rgpCall,
  934.         [out] ULONG *pcFetched,
  935. [out] ULONG *pcItems,
  936. [in] BOOL bGetNumberRemaining);
  937.     HRESULT Skip(
  938.         [in] ULONG cCall);
  939.         
  940.     HRESULT Reset();
  941.     HRESULT Clone(
  942.         [out] IEnumNmCall **ppEnum);
  943. }
  944. //--------------------------------------------------------------------------
  945. // IEnumNmSharableApp Interface
  946. [
  947.     object,
  948.     uuid(068B0745-718C-11d0-8B1A-00A0C91BC90E),
  949.     pointer_default(unique)
  950. ]
  951. interface IEnumNmSharableApp : IUnknown
  952. [local]
  953.     HRESULT Next(
  954.         [in] ULONG cApp,
  955.         [out] INmSharableApp **rgpApp,
  956.         [out] ULONG *pcFetched);
  957. [call_as(Next)]
  958.     HRESULT RemoteNext(
  959.         [in] ULONG cApp,
  960.         [out, size_is(cApp), length_is(*pcFetched)] INmSharableApp **rgpApp,
  961.         [out] ULONG *pcFetched,
  962. [out] ULONG *pcItems,
  963. [in] BOOL bGetNumberRemaining);
  964.     HRESULT Skip(
  965.         [in] ULONG cApp);
  966.         
  967.     HRESULT Reset();
  968.     HRESULT Clone(
  969.         [out] IEnumNmSharableApp **ppEnum);
  970. }
  971. [
  972. object,
  973. uuid(068B0780-718C-11d0-8B1A-00A0C91BC90E), // IID_INmObject
  974. pointer_default(unique)
  975. ]
  976. interface INmObject : IUnknown
  977. {
  978. HRESULT CallDialog([in] long hwnd, [in] int options);
  979. HRESULT ShowLocal([in] NM_APPID appId);
  980. [local]
  981. HRESULT VerifyUserInfo([in] long hwnd, [in] NM_VUI options);
  982. [call_as(VerifyUserInfo)]
  983. HRESULT RemoteVerifyUserInfo([in] long hwnd, [in] NM_VUI options);
  984. };
  985. [
  986.     uuid(068B07FF-718C-11d0-8B1A-00A0C91BC90E),
  987.     version(1.0),
  988.     helpstring("NmManager 2.0 Type Library")
  989. ]
  990. library NmManager
  991. {
  992.     [
  993.         uuid(068B0700-718C-11d0-8B1A-00A0C91BC90E),
  994.         helpstring("NetMeeting Manager")
  995.     ]
  996.     coclass NmManager
  997.     {
  998.         [default] interface INmManager;
  999.     };
  1000. };