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.

1267 lines
36 KiB

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