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

1224 lines
34 KiB

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