home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / imsconf2.idl < prev    next >
Text File  |  1998-04-25  |  30KB  |  1,087 lines

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