Source code of Windows XP (NT5)
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.

1307 lines
46 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1997 - 1999
  6. //
  7. // File: router.idl
  8. //
  9. //--------------------------------------------------------------------------
  10. // mprsnap.idl : IDL source for MPRSNAP DLLs
  11. //
  12. #ifndef _ROUTER_IDL_
  13. #define _ROUTER_IDL_
  14. import "basetsd.h";
  15. import "wtypes.idl";
  16. import "mprsnap.idl";
  17. import "rrasui.idl";
  18. typedef BYTE * PBYTE;
  19. const ULONG RTR_ID_MAX = 256;
  20. const ULONG RTR_TITLE_MAX = 256;
  21. const ULONG RTR_DEVICE_MAX = 256;
  22. const ULONG RTR_PATH_MAX = 516;
  23. const ULONG VENDOR_NAME_MAX = 256;
  24. // predefined
  25. interface IRouterInfo;
  26. interface IRtrMgrInfo;
  27. interface IRtrMgrProtocolInfo;
  28. interface IInterfaceInfo;
  29. interface IRtrMgrInterfaceInfo;
  30. interface IRtrMgrProtocolInterfaceInfo;
  31. typedef enum
  32. {
  33. // This flag is used to indicate that the interface exists in the UI
  34. // and in the router. This means that it is ok to delete this
  35. // interface if we have found that it has been deleted (since it
  36. // should be in sync). If this flag, is 0, then it exists only on the
  37. // local machine (usually it has just been created but not persisted)
  38. // and that if a merge occurs, do not delete this interface.
  39. // ----------------------------------------------------------------
  40. RouterSnapin_InSyncWithRouter = 0x00000001,
  41. RouterSnapin_RASOnly = 0x00000002, // NT4 non-Steelhead router
  42. RouterSnapin_IsConfigured = 0x00000004, // is router configured?
  43. RouterSnapin_Workstation = 0x00000008, // is this a workstation?
  44. } RouterSnapinFlags;
  45. typedef enum
  46. {
  47. // ----------------------------------------------------------------
  48. RouterInfo_AddedAsLocal = 0x00000001, // the router is added as local machine --
  49. } RouterInfoFlags;
  50. //----------------------------------------------------------------------------
  51. // Struct: RouterVersionInfo
  52. //
  53. // Router version information.
  54. //----------------------------------------------------------------------------
  55. typedef struct _RouterVersionInfo
  56. {
  57. DWORD dwSize;
  58. DWORD dwRouterVersion;
  59. DWORD dwOsMajorVersion;
  60. DWORD dwOsMinorVersion;
  61. DWORD dwOsBuildNo;
  62. DWORD dwOsServicePack;
  63. DWORD dwOsFlags;
  64. DWORD dwRouterFlags;
  65. } RouterVersionInfo;
  66. //----------------------------------------------------------------------------
  67. // Struct: RouterCB
  68. //
  69. // Contains information applying to the router as a whole
  70. //----------------------------------------------------------------------------
  71. typedef struct _RouterCB
  72. {
  73. DWORD dwLANOnlyMode; // 0 or 1
  74. } RouterCB;
  75. //----------------------------------------------------------------------------
  76. // Struct: RtrMgrCB
  77. //
  78. // Contains information applying to a particular router-manager
  79. //----------------------------------------------------------------------------
  80. typedef struct _RtrMgrCB
  81. {
  82. DWORD dwTransportId; // e.g. PID_IP (mprapi.h)
  83. OLECHAR szId [RTR_ID_MAX+1]; // e.g. "Tcpip"
  84. OLECHAR szTitle [RTR_TITLE_MAX+1]; // e.g. "TCP/IP Router Manager"
  85. OLECHAR szDLLPath [RTR_PATH_MAX+1]; // e.g. "%systemroot%\system32\iprtrmgr.dll"
  86. } RtrMgrCB;
  87. /*---------------------------------------------------------------------------
  88. IEnumRtrMgrCB
  89. ---------------------------------------------------------------------------*/
  90. [
  91. object,
  92. uuid(66A2DB0F-D706-11d0-A37B-00C04FC9DA04),
  93. local,
  94. pointer_default(unique),
  95. ]
  96. interface IEnumRtrMgrCB : IUnknown
  97. {
  98. HRESULT Next( [in] ULONG uNum,
  99. [in,out] RtrMgrCB *pBlock,
  100. [out] ULONG * pNumReturned );
  101. HRESULT Skip( [in] ULONG uNum );
  102. HRESULT Reset();
  103. HRESULT Clone( [out] IEnumRtrMgrCB **ppBlockEnum );
  104. };
  105. cpp_quote("#define DeclareIEnumRtrMgrCBMembers(IPURE) \\")
  106. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, RtrMgrCB *pBlock, \\")
  107. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  108. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  109. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  110. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrCB **ppBlockEnum) IPURE; \\")
  111. cpp_quote("")
  112. //----------------------------------------------------------------------------
  113. // Struct: RtrMgrProtocolCB
  114. //
  115. // Contains information describing a routing protocol.
  116. //----------------------------------------------------------------------------
  117. typedef struct _RtrMgrProtocolCB
  118. {
  119. DWORD dwProtocolId; // e.g. IP_RIP (routprot.h)
  120. OLECHAR szId [RTR_ID_MAX+1]; // e.g. "IPRIP"
  121. DWORD dwFlags;
  122. DWORD dwTransportId; // e.g. PID_IP
  123. OLECHAR szRtrMgrId [RTR_ID_MAX+1]; // e.g. "Tcpip"
  124. OLECHAR szTitle [RTR_TITLE_MAX+1]; // e.g. "RIP for Internet Protocol"
  125. OLECHAR szDLLName [RTR_PATH_MAX+1]; // e.g. "iprip2.dll"
  126. OLECHAR szVendorName[VENDOR_NAME_MAX+1];
  127. GUID guidConfig; // GUID for the configuration object
  128. GUID guidAdminUI; // GUID of the snapin
  129. } RtrMgrProtocolCB;
  130. typedef enum {
  131. RtrMgrProtocolCBFlagHidden = 0x00000001,
  132. RtrMgrProtocolSupportsRouting = 0x00000002,
  133. } RtrMgrProtocolCBFlags;
  134. /*---------------------------------------------------------------------------
  135. IEnumRtrMgrProtocolCB
  136. ---------------------------------------------------------------------------*/
  137. [
  138. object,
  139. uuid(66A2DB10-D706-11d0-A37B-00C04FC9DA04),
  140. local,
  141. pointer_default(unique),
  142. ]
  143. interface IEnumRtrMgrProtocolCB : IUnknown
  144. {
  145. HRESULT Next( [in] ULONG uNum,
  146. [out] RtrMgrProtocolCB *ppBlock,
  147. [out] ULONG * pNumReturned );
  148. HRESULT Skip( [in] ULONG uNum );
  149. HRESULT Reset();
  150. HRESULT Clone( [out] IEnumRtrMgrProtocolCB **ppBlockEnum );
  151. };
  152. cpp_quote("#define DeclareIEnumRtrMgrProtocolCBMembers(IPURE) \\")
  153. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, RtrMgrProtocolCB *pBlock, \\")
  154. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  155. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  156. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  157. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrProtocolCB **ppBlockEnum) IPURE; \\")
  158. cpp_quote("")
  159. //----------------------------------------------------------------------------
  160. // Struct: InterfaceCB
  161. //
  162. // Contains transport-independent information applying to a interface
  163. //----------------------------------------------------------------------------
  164. typedef struct _InterfaceCB
  165. {
  166. OLECHAR szId [RTR_ID_MAX+1]; // e.g. "EPRO1"
  167. DWORD dwIfType; // e.g. ROUTER_IF_TYPE_CLIENT (mprapi.h)
  168. BOOL bEnable; // e.g. Enabled or Disabled
  169. // On NT4, the szTitle == szDevice
  170. // On NT5, szTitle == friendly name, szDevice == "[1] Intel EtherPro"
  171. OLECHAR szTitle [RTR_TITLE_MAX+1]; // e.g. see above
  172. OLECHAR szDevice[RTR_DEVICE_MAX+1];// e.g. see above
  173. // Tells us what protocols are bound to this interface
  174. // If the transport is not bound to the adapter, then we don't
  175. // let the adapter be added to that router-manager.
  176. DWORD dwBindFlags; // e.g. InterfaceCB_BindToIp
  177. } InterfaceCB;
  178. typedef enum {
  179. InterfaceCB_BindToIp = 0x00000001,
  180. InterfaceCB_BindToIpx = 0x00000002,
  181. } InterfaceCBBindFlags;
  182. /*---------------------------------------------------------------------------
  183. IEnumInterfaceCB
  184. ---------------------------------------------------------------------------*/
  185. [
  186. object,
  187. uuid(66A2DB11-D706-11d0-A37B-00C04FC9DA04),
  188. local,
  189. pointer_default(unique),
  190. ]
  191. interface IEnumInterfaceCB : IUnknown
  192. {
  193. HRESULT Next( [in] ULONG uNum,
  194. [out] InterfaceCB *pBlock,
  195. [out] ULONG * pNumReturned );
  196. HRESULT Skip( [in] ULONG uNum );
  197. HRESULT Reset();
  198. HRESULT Clone( [out] IEnumInterfaceCB **ppBlockEnum );
  199. };
  200. cpp_quote("#define DeclareIEnumInterfaceCBMembers(IPURE) \\")
  201. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, InterfaceCB *pBlock, \\")
  202. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  203. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  204. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  205. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumInterfaceCB **ppBlockEnum) IPURE; \\")
  206. cpp_quote("")
  207. //----------------------------------------------------------------------------
  208. // Struct: RtrMgrInterfaceCB
  209. //
  210. // Contains router-manager-specific information for an interface
  211. //----------------------------------------------------------------------------
  212. typedef struct _RtrMgrInterfaceCB
  213. {
  214. DWORD dwTransportId; // e.g. PID_IP (mprapi.h)
  215. OLECHAR szId [RTR_ID_MAX+1]; // e.g. "Tcpip"
  216. OLECHAR szInterfaceId [RTR_ID_MAX+1]; // e.g. "EPRO1"
  217. DWORD dwIfType; // e.g. ROUTER_IF_TYPE_CLIENT (mprapi.h)
  218. OLECHAR szTitle [RTR_TITLE_MAX+1]; // e.g. "[1] Intel Etherexpress PRO"
  219. } RtrMgrInterfaceCB;
  220. /*---------------------------------------------------------------------------
  221. IEnumRtrMgrInterfaceCB
  222. ---------------------------------------------------------------------------*/
  223. [
  224. object,
  225. uuid(66A2DB12-D706-11d0-A37B-00C04FC9DA04),
  226. local,
  227. pointer_default(unique),
  228. ]
  229. interface IEnumRtrMgrInterfaceCB : IUnknown
  230. {
  231. HRESULT Next( [in] ULONG uNum,
  232. [out] RtrMgrInterfaceCB *pBlock,
  233. [out] ULONG * pNumReturned );
  234. HRESULT Skip( [in] ULONG uNum );
  235. HRESULT Reset();
  236. HRESULT Clone( [out] IEnumRtrMgrInterfaceCB **ppBlockEnum );
  237. };
  238. cpp_quote("#define DeclareIEnumRtrMgrInterfaceCBMembers(IPURE) \\")
  239. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, RtrMgrInterfaceCB *pBlock, \\")
  240. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  241. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  242. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  243. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrInterfaceCB **ppBlockEnum) IPURE; \\")
  244. cpp_quote("")
  245. //----------------------------------------------------------------------------
  246. // Struct: RtrMgrProtocolInterfaceCB
  247. //
  248. // contains routing-protocol-specific information for an interface
  249. //----------------------------------------------------------------------------
  250. typedef struct RtrMgrProtocolInterfaceCB
  251. {
  252. DWORD dwProtocolId; // e.g. IP_RIP (routprot.h)
  253. OLECHAR szId [RTR_ID_MAX+1]; // e.g. "IPRIP"
  254. DWORD dwTransportId; // e.g. PID_IP
  255. OLECHAR szRtrMgrId [RTR_TITLE_MAX+1]; // e.g. "Tcpip"
  256. OLECHAR szInterfaceId [RTR_ID_MAX+1]; // e.g. "EPRO1"
  257. DWORD dwIfType; // e.g. ROUTER_IF_TYPE_CLIENT (mprapi.h)
  258. OLECHAR szTitle [RTR_TITLE_MAX+1]; // e.g. "[1] Intel Etherexpress PRO"
  259. } RtrMgrProtocolInterfaceCB;
  260. /*---------------------------------------------------------------------------
  261. IEnumRtrMgrProtocolInterfaceCB
  262. ---------------------------------------------------------------------------*/
  263. [
  264. object,
  265. uuid(66A2DB13-D706-11d0-A37B-00C04FC9DA04),
  266. local,
  267. pointer_default(unique),
  268. ]
  269. interface IEnumRtrMgrProtocolInterfaceCB : IUnknown
  270. {
  271. HRESULT Next( [in] ULONG uNum,
  272. [out] RtrMgrProtocolInterfaceCB *pBlock,
  273. [out] ULONG * pNumReturned );
  274. HRESULT Skip( [in] ULONG uNum );
  275. HRESULT Reset();
  276. HRESULT Clone( [out] IEnumRtrMgrProtocolInterfaceCB **ppBlockEnum );
  277. };
  278. cpp_quote("#define DeclareIEnumRtrMgrProtocolInterfaceCBMembers(IPURE) \\")
  279. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, RtrMgrProtocolInterfaceCB *pBlock, \\")
  280. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  281. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  282. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  283. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrProtocolInterfaceCB **ppBlockEnum) IPURE; \\")
  284. cpp_quote("")
  285. /*---------------------------------------------------------------------------
  286. Misc. things for the refresh object
  287. ---------------------------------------------------------------------------*/
  288. /*---------------------------------------------------------------------------
  289. IRouterRefreshModify
  290. ---------------------------------------------------------------------------*/
  291. [
  292. object,
  293. uuid(66A2DB1D-D706-11d0-A37B-00C04FC9DA04),
  294. local,
  295. pointer_default(unique),
  296. ]
  297. interface IRouterRefreshModify : IUnknown
  298. {
  299. import "unknwn.idl";
  300. // to make it refresh multiple routers
  301. HRESULT AddRouterObject([in] REFCLSID riid,
  302. [in, iid_is(riid)] IUnknown *pUnk);
  303. HRESULT RemoveRouterObject([in] REFCLSID riid,
  304. [in, iid_is(riid)] IUnknown *pUnk);
  305. }
  306. cpp_quote("#define DeclareIRouterRefreshModifyMembers(IPURE)\\")
  307. cpp_quote(" STDMETHOD(AddRouterObject)(THIS_ REFIID riid, IUnknown *pUnk) IPURE;\\")
  308. cpp_quote(" STDMETHOD(RemoveRouterObject)(THIS_ REFIID rrid, IUnknown *pUnk) IPURE;\\")
  309. /*---------------------------------------------------------------------------
  310. These are additional values that are used in the OnChange.
  311. ---------------------------------------------------------------------------*/
  312. cpp_quote("// Valid values for dwChangeType of OnChange")
  313. cpp_quote("//efine ROUTER_REFRESH 0 - defined in rrasui.idl")
  314. cpp_quote("#define ROUTER_DATA_CHANGE 16")
  315. cpp_quote("#define ROUTER_DATA_DELETE 17")
  316. cpp_quote("#define ROUTER_CHILD_ADD 18")
  317. cpp_quote("#define ROUTER_CHILD_DELETE 19")
  318. cpp_quote("#define ROUTER_CHILD_PREADD 20")
  319. cpp_quote("// Valid values for dwObjectType of OnChange")
  320. cpp_quote("#define ROUTER_OBJ_Router 1")
  321. cpp_quote("#define ROUTER_OBJ_Rm 2")
  322. cpp_quote("#define ROUTER_OBJ_RmProt 3")
  323. cpp_quote("#define ROUTER_OBJ_If 4")
  324. cpp_quote("#define ROUTER_OBJ_RmIf 5")
  325. cpp_quote("#define ROUTER_OBJ_RmProtIf 6")
  326. /*---------------------------------------------------------------------------
  327. IRtrMgrProtocolInfo
  328. ---------------------------------------------------------------------------*/
  329. [
  330. object,
  331. uuid(66A2DB06-D706-11d0-A37B-00C04FC9DA04),
  332. local,
  333. pointer_default(unique),
  334. ]
  335. interface IRtrMgrProtocolInfo : IUnknown
  336. {
  337. import "unknwn.idl";
  338. DWORD GetFlags();
  339. HRESULT SetFlags([in] DWORD dwFlags);
  340. DWORD GetProtocolId();
  341. LPCOLESTR GetTitle();
  342. DWORD GetTransportId();
  343. HRESULT CopyCB([in,out] RtrMgrProtocolCB *pRMProtCB);
  344. HRESULT GetParentRtrMgrInfo([out] IRtrMgrInfo **ppRm);
  345. HRESULT SetParentRtrMgrInfo([in] IRtrMgrInfo *pRm);
  346. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  347. [out] LONG_PTR *pulConnection,
  348. [in] LPARAM lUserParam);
  349. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType,
  350. [in] LPARAM lParam);
  351. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  352. // Tell the object that it should remove all connections to the
  353. // running router
  354. HRESULT DoDisconnect();
  355. HRESULT AddWeakRef();
  356. HRESULT ReleaseWeakRef();
  357. HRESULT Destruct();
  358. };
  359. cpp_quote("#define DeclareIRtrMgrProtocolInfoMembers(IPURE)\\")
  360. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE; \\")
  361. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE; \\")
  362. cpp_quote(" STDMETHOD_(DWORD, GetProtocolId)(THIS) IPURE; \\")
  363. cpp_quote(" STDMETHOD_(LPCOLESTR, GetTitle)(THIS) IPURE; \\")
  364. cpp_quote(" STDMETHOD_(DWORD, GetTransportId)(THIS) IPURE; \\")
  365. cpp_quote(" STDMETHOD(CopyCB)(THIS_ RtrMgrProtocolCB *pRMProtCB) IPURE; \\")
  366. cpp_quote(" STDMETHOD(GetParentRtrMgrInfo)(THIS_ IRtrMgrInfo **ppRm) IPURE; \\")
  367. cpp_quote(" STDMETHOD(SetParentRtrMgrInfo)(THIS_ IRtrMgrInfo *pRm) IPURE; \\")
  368. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  369. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  370. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  371. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  372. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  373. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  374. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  375. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  376. cpp_quote("")
  377. /*---------------------------------------------------------------------------
  378. IEnumRtrMgrProtocolInfo
  379. ---------------------------------------------------------------------------*/
  380. [
  381. object,
  382. uuid(66A2DB07-D706-11d0-A37B-00C04FC9DA04),
  383. local,
  384. pointer_default(unique),
  385. ]
  386. interface IEnumRtrMgrProtocolInfo : IUnknown
  387. {
  388. HRESULT Next( [in] ULONG uNum,
  389. [out] IRtrMgrProtocolInfo **ppBlock,
  390. [out] ULONG * pNumReturned );
  391. HRESULT Skip( [in] ULONG uNum );
  392. HRESULT Reset();
  393. HRESULT Clone( [out] IEnumRtrMgrProtocolInfo **ppBlockEnum );
  394. };
  395. cpp_quote("#define DeclareIEnumRtrMgrProtocolInfoMembers(IPURE) \\")
  396. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, IRtrMgrProtocolInfo **ppBlock, \\")
  397. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  398. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  399. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  400. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrProtocolInfo **ppBlockEnum) IPURE; \\")
  401. cpp_quote("")
  402. /*---------------------------------------------------------------------------
  403. IRtrMgrInfo
  404. ---------------------------------------------------------------------------*/
  405. [
  406. object,
  407. uuid(66A2DB04-D706-11d0-A37B-00C04FC9DA04),
  408. local,
  409. pointer_default(unique),
  410. ]
  411. interface IRtrMgrInfo : IUnknown
  412. {
  413. import "unknwn.idl";
  414. DWORD GetFlags();
  415. HRESULT SetFlags([in] DWORD dwFlags);
  416. HRESULT Load([in,string] LPCOLESTR pszMachine,
  417. [in] HANDLE hMachine,
  418. [in] HANDLE hTransport
  419. );
  420. HRESULT Save([in,string] LPCOLESTR pszMachine,
  421. [in] HANDLE hMachine,
  422. [in] HANDLE hTransport,
  423. [in] IInfoBase * pGlobalInfo,
  424. [in] IInfoBase * pClientInfo,
  425. [in] DWORD dwDeleteProtocolId);
  426. HRESULT Unload( );
  427. HRESULT Delete([in,string] LPCOLESTR pszMachine,
  428. [in] HANDLE hMachine);
  429. HRESULT SetInfoBase([in] IInfoBase* pGlobalInfo,
  430. [in] IInfoBase* pClientInfo );
  431. HRESULT GetInfoBase([in] HANDLE hMachine,
  432. [in] HANDLE hTransport,
  433. [out] IInfoBase ** ppGlobalInfo,
  434. [out] IInfoBase ** ppClientInfo);
  435. HRESULT Merge([in] IRtrMgrInfo *pNewRtrMgrInfo);
  436. DWORD GetTransportId();
  437. LPCOLESTR GetTitle();
  438. LPCOLESTR GetId();
  439. HRESULT SetId(LPCOLESTR pszId);
  440. HRESULT CopyRtrMgrCB([in,out] RtrMgrCB *pRMCB);
  441. LPCOLESTR GetMachineName();
  442. HRESULT EnumRtrMgrProtocol([out] IEnumRtrMgrProtocolInfo ** ppEnumRMProt);
  443. HRESULT FindRtrMgrProtocol([in] DWORD dwProtocolId,
  444. [out] IRtrMgrProtocolInfo **ppRMProtInfo);
  445. HRESULT AddRtrMgrProtocol([in] IRtrMgrProtocolInfo *pInfo,
  446. [in] IInfoBase * pGlobalInfo,
  447. [in] IInfoBase * pClientInfo);
  448. HRESULT DeleteRtrMgrProtocol([in] DWORD dwProtocolId, BOOL fRemove);
  449. HRESULT ReleaseRtrMgrProtocol([in] DWORD dwProtocolId);
  450. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  451. [out] LONG_PTR *pulConnection,
  452. [in] LPARAM lUserParam);
  453. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType,
  454. [in] LPARAM lParam);
  455. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  456. HRESULT GetParentRouterInfo([out] IRouterInfo **ppRouterInfo);
  457. HRESULT SetParentRouterInfo([in] IRouterInfo *pRouterInfo);
  458. // Tell the object that it should remove all connections to the
  459. // running router
  460. HRESULT DoDisconnect();
  461. HRESULT AddWeakRef();
  462. HRESULT ReleaseWeakRef();
  463. HRESULT Destruct();
  464. };
  465. cpp_quote("#define DeclareIRtrMgrInfoMembers(IPURE) \\")
  466. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE; \\")
  467. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE; \\")
  468. cpp_quote(" STDMETHOD(Load)(THIS_ LPCOLESTR pszMachine, \\")
  469. cpp_quote(" HANDLE hMachine, \\")
  470. cpp_quote(" HANDLE hTransport) IPURE;\\")
  471. cpp_quote(" STDMETHOD(Save)(THIS_ LPCOLESTR pszMachine, \\")
  472. cpp_quote(" HANDLE hMachine, \\")
  473. cpp_quote(" HANDLE hTransport, \\")
  474. cpp_quote(" IInfoBase *pGlobalInfo, \\")
  475. cpp_quote(" IInfoBase *pClientInfo, \\")
  476. cpp_quote(" DWORD dwDeleteProtocolId) IPURE; \\")
  477. cpp_quote(" STDMETHOD(Unload)(THIS) IPURE; \\")
  478. cpp_quote(" STDMETHOD(Delete)(THIS_ LPCOLESTR pszMachine, HANDLE hMachine) IPURE; \\")
  479. cpp_quote(" STDMETHOD(SetInfoBase)(THIS_ IInfoBase *pGlobalInfo, \\")
  480. cpp_quote(" IInfoBase *pClientInfo) IPURE; \\")
  481. cpp_quote(" STDMETHOD(GetInfoBase)(THIS_ HANDLE hMachine, \\")
  482. cpp_quote(" HANDLE hTransport, \\")
  483. cpp_quote(" IInfoBase **ppGlobalInfo, \\")
  484. cpp_quote(" IInfoBase **ppClientInfo) IPURE; \\")
  485. cpp_quote(" STDMETHOD(Merge)(THIS_ IRtrMgrInfo *pNewRtrMgrInfo) IPURE; \\")
  486. cpp_quote(" STDMETHOD_(LPCOLESTR, GetId)(THIS) IPURE; \\")
  487. cpp_quote(" STDMETHOD(SetId)(THIS_ LPCOLESTR pszId) IPURE; \\")
  488. cpp_quote(" STDMETHOD_(DWORD, GetTransportId)(THIS) IPURE; \\")
  489. cpp_quote(" STDMETHOD_(LPCOLESTR, GetTitle)(THIS) IPURE; \\")
  490. cpp_quote(" STDMETHOD(CopyRtrMgrCB)(THIS_ RtrMgrCB *pRMCB) IPURE; \\")
  491. cpp_quote(" STDMETHOD_(LPCOLESTR, GetMachineName)(THIS) IPURE; \\")
  492. cpp_quote(" STDMETHOD(EnumRtrMgrProtocol)(THIS_ IEnumRtrMgrProtocolInfo **ppEnumRMProt) IPURE; \\")
  493. cpp_quote(" STDMETHOD(FindRtrMgrProtocol)(THIS_ DWORD dwProtocolId, \\")
  494. cpp_quote(" IRtrMgrProtocolInfo **ppRMProtInfo) IPURE; \\")
  495. cpp_quote(" STDMETHOD(AddRtrMgrProtocol)(THIS_ IRtrMgrProtocolInfo *pInfo, \\")
  496. cpp_quote(" IInfoBase *pGlobalInfo, \\")
  497. cpp_quote(" IInfoBase *pClientInfo) IPURE; \\")
  498. cpp_quote(" STDMETHOD(DeleteRtrMgrProtocol)(THIS_ DWORD dwProtocolId, BOOL fRemove) IPURE; \\")
  499. cpp_quote(" STDMETHOD(ReleaseRtrMgrProtocol)(THIS_ DWORD dwProtocolId) IPURE; \\")
  500. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  501. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  502. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  503. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  504. cpp_quote(" STDMETHOD(GetParentRouterInfo)(THIS_ IRouterInfo **ppParent) IPURE;\\")
  505. cpp_quote(" STDMETHOD(SetParentRouterInfo)(THIS_ IRouterInfo *ppParent) IPURE;\\")
  506. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  507. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  508. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  509. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  510. cpp_quote("")
  511. /*---------------------------------------------------------------------------
  512. IEnumRtrMgrInfo
  513. ---------------------------------------------------------------------------*/
  514. [
  515. object,
  516. uuid(66A2DB05-D706-11d0-A37B-00C04FC9DA04),
  517. local,
  518. pointer_default(unique),
  519. ]
  520. interface IEnumRtrMgrInfo : IUnknown
  521. {
  522. HRESULT Next( [in] ULONG uNum,
  523. [out] IRtrMgrInfo **ppBlock,
  524. [out] ULONG * pNumReturned );
  525. HRESULT Skip( [in] ULONG uNum );
  526. HRESULT Reset();
  527. HRESULT Clone( [out] IEnumRtrMgrInfo **ppBlockEnum );
  528. };
  529. cpp_quote("#define DeclareIEnumRtrMgrInfoMembers(IPURE) \\")
  530. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, IRtrMgrInfo **ppBlock, \\")
  531. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  532. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  533. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  534. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrInfo **ppBlockEnum) IPURE; \\")
  535. cpp_quote("")
  536. /*---------------------------------------------------------------------------
  537. IRtrMgrProtocolInterfaceInfo
  538. ---------------------------------------------------------------------------*/
  539. [
  540. object,
  541. uuid(66A2DB0C-D706-11d0-A37B-00C04FC9DA04),
  542. local,
  543. pointer_default(unique),
  544. ]
  545. interface IRtrMgrProtocolInterfaceInfo : IUnknown
  546. {
  547. import "unknwn.idl";
  548. DWORD GetFlags();
  549. HRESULT SetFlags([in] DWORD dwFlags);
  550. DWORD GetProtocolId();
  551. DWORD GetTransportId();
  552. LPCOLESTR GetInterfaceId();
  553. DWORD GetInterfaceType();
  554. LPCOLESTR GetTitle();
  555. HRESULT SetTitle(LPCOLESTR pszTitle);
  556. HRESULT CopyCB([in,out] RtrMgrProtocolInterfaceCB * pRMProtCB);
  557. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  558. [out] LONG_PTR *pulConnection,
  559. [in] LPARAM lUserParam);
  560. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType, [in] LPARAM lParam);
  561. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  562. HRESULT GetParentRtrMgrInterfaceInfo([out] IRtrMgrInterfaceInfo **ppParent);
  563. HRESULT SetParentRtrMgrInterfaceInfo([in] IRtrMgrInterfaceInfo *pParent);
  564. // Tell the object that it should remove all connections to the
  565. // running router
  566. HRESULT DoDisconnect();
  567. HRESULT AddWeakRef();
  568. HRESULT ReleaseWeakRef();
  569. HRESULT Destruct();
  570. };
  571. cpp_quote("#define DeclareIRtrMgrProtocolInterfaceInfoMembers(IPURE) \\")
  572. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE; \\")
  573. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE; \\")
  574. cpp_quote(" STDMETHOD_(DWORD, GetProtocolId)(THIS) IPURE; \\")
  575. cpp_quote(" STDMETHOD_(DWORD, GetTransportId)(THIS) IPURE; \\")
  576. cpp_quote(" STDMETHOD_(LPCOLESTR, GetInterfaceId)(THIS) IPURE; \\")
  577. cpp_quote(" STDMETHOD_(DWORD, GetInterfaceType)(THIS) IPURE; \\")
  578. cpp_quote(" STDMETHOD_(LPCOLESTR, GetTitle)(THIS) IPURE; \\")
  579. cpp_quote(" STDMETHOD(SetTitle)(THIS_ LPCOLESTR pszTitle) IPURE;\\")
  580. cpp_quote(" STDMETHOD(CopyCB)(THIS_ RtrMgrProtocolInterfaceCB *pRMProtCB) IPURE; \\")
  581. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  582. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  583. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  584. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  585. cpp_quote(" STDMETHOD(GetParentRtrMgrInterfaceInfo)(THIS_ IRtrMgrInterfaceInfo **ppParent) IPURE;\\")
  586. cpp_quote(" STDMETHOD(SetParentRtrMgrInterfaceInfo)(THIS_ IRtrMgrInterfaceInfo *pParent) IPURE;\\")
  587. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  588. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  589. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  590. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  591. cpp_quote(" ")
  592. /*---------------------------------------------------------------------------
  593. IEnumRtrMgrProtocolInterfaceInfo
  594. ---------------------------------------------------------------------------*/
  595. [
  596. object,
  597. uuid(66A2DB0D-D706-11d0-A37B-00C04FC9DA04),
  598. local,
  599. pointer_default(unique),
  600. ]
  601. interface IEnumRtrMgrProtocolInterfaceInfo : IUnknown
  602. {
  603. HRESULT Next( [in] ULONG uNum,
  604. [out] IRtrMgrProtocolInterfaceInfo **ppBlock,
  605. [out] ULONG * pNumReturned );
  606. HRESULT Skip( [in] ULONG uNum );
  607. HRESULT Reset();
  608. HRESULT Clone( [out] IEnumRtrMgrProtocolInterfaceInfo **ppBlockEnum );
  609. };
  610. cpp_quote("#define DeclareIEnumRtrMgrProtocolInterfaceInfoMembers(IPURE) \\")
  611. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, IRtrMgrProtocolInterfaceInfo **ppBlock, \\")
  612. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  613. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  614. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  615. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrProtocolInterfaceInfo **ppBlockEnum) IPURE; \\")
  616. cpp_quote("")
  617. /*---------------------------------------------------------------------------
  618. IRtrMgrInterfaceInfo
  619. ---------------------------------------------------------------------------*/
  620. [
  621. object,
  622. uuid(66A2DB0A-D706-11d0-A37B-00C04FC9DA04),
  623. local,
  624. pointer_default(unique),
  625. ]
  626. interface IRtrMgrInterfaceInfo : IUnknown
  627. {
  628. import "unknwn.idl";
  629. DWORD GetFlags();
  630. HRESULT SetFlags([in] DWORD dwFlags);
  631. HRESULT Load([in,string] LPCOLESTR pszMachine,
  632. [in] HANDLE hMachine,
  633. [in] HANDLE hInterface,
  634. [in] HANDLE hIfTransport);
  635. HRESULT Save(
  636. [in,string] LPCOLESTR pszMachine,
  637. [in] HANDLE hMachine,
  638. [in] HANDLE hInterface,
  639. [in] HANDLE hIfTransport,
  640. [in] IInfoBase* pInterfaceInfo,
  641. [in] DWORD dwDeleteProtocolId);
  642. HRESULT Unload( );
  643. HRESULT Delete([in, string] LPCOLESTR pszMachine,
  644. [in] HANDLE hMachine,
  645. [in] HANDLE hInterface);
  646. HRESULT Merge([in] IRtrMgrInterfaceInfo *pNewRtrMgrInterfaceInfo);
  647. HRESULT SetInfo([in] DWORD dwIfInfoSize,
  648. [in, size_is(dwIfInfoSize)] PBYTE pInterfaceInfoData);
  649. HRESULT SetInfoBase([in] HANDLE hMachine,
  650. [in] HANDLE hInterface,
  651. [in] HANDLE hIfTransport,
  652. [in] IInfoBase *pIfInfo);
  653. HRESULT GetInfoBase([in] HANDLE hMachine,
  654. [in] HANDLE hInterface,
  655. [in] HANDLE hIfTransport,
  656. [out] IInfoBase **ppIfInfo);
  657. DWORD GetTransportId();
  658. LPCOLESTR GetId();
  659. HRESULT SetId(LPCOLESTR pszId);
  660. // Information about the interface
  661. LPCOLESTR GetInterfaceId();
  662. DWORD GetInterfaceType();
  663. LPCOLESTR GetTitle();
  664. HRESULT SetTitle(LPCOLESTR pszTitle);
  665. HRESULT CopyCB([in,out] RtrMgrInterfaceCB *pRMIfCB);
  666. LPCOLESTR GetMachineName();
  667. HRESULT SetMachineName(LPCOLESTR pszMachineName);
  668. HRESULT EnumRtrMgrProtocolInterface([out] IEnumRtrMgrProtocolInterfaceInfo **ppEnumRmProtIf);
  669. HRESULT FindRtrMgrProtocolInterface([in] DWORD dwProtocolId,
  670. [out] IRtrMgrProtocolInterfaceInfo **pInfo);
  671. HRESULT AddRtrMgrProtocolInterface([in] IRtrMgrProtocolInterfaceInfo *pInfo,
  672. [in] IInfoBase *pInterfaceInfo);
  673. HRESULT DeleteRtrMgrProtocolInterface([in] DWORD dwProtocolId, BOOL fRemove);
  674. HRESULT ReleaseRtrMgrProtocolInterface([in] DWORD dwProtocolId);
  675. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  676. [out] LONG_PTR *pulConnection,
  677. [in] LPARAM lUserParam);
  678. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType, [in] LPARAM lParam);
  679. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  680. HRESULT GetParentInterfaceInfo([out] IInterfaceInfo **ppParent);
  681. HRESULT SetParentInterfaceInfo([in] IInterfaceInfo *pParent);
  682. // Tell the object that it should remove all connections to the
  683. // running router
  684. HRESULT DoDisconnect();
  685. HRESULT AddWeakRef();
  686. HRESULT ReleaseWeakRef();
  687. HRESULT Destruct();
  688. };
  689. cpp_quote("#define DeclareIRtrMgrInterfaceInfoMembers(IPURE)\\")
  690. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE;\\")
  691. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE;\\")
  692. cpp_quote(" STDMETHOD(Load)(THIS_ LPCOLESTR pszMachine,\\")
  693. cpp_quote(" HANDLE hMachine,\\")
  694. cpp_quote(" HANDLE hInterface,\\")
  695. cpp_quote(" HANDLE hIfTransport) IPURE;\\")
  696. cpp_quote(" STDMETHOD(Save)(THIS_ LPCOLESTR pszMachine,\\")
  697. cpp_quote(" HANDLE hMachine,\\")
  698. cpp_quote(" HANDLE hInterface,\\")
  699. cpp_quote(" HANDLE hIfTransport,\\")
  700. cpp_quote(" IInfoBase *pInterfaceInfo,\\")
  701. cpp_quote(" DWORD dwProtocolId) IPURE;\\")
  702. cpp_quote(" STDMETHOD(Unload)(THIS) IPURE;\\")
  703. cpp_quote(" STDMETHOD(Delete)(THIS_ LPCOLESTR pszMachine,\\")
  704. cpp_quote(" HANDLE hMachine,\\")
  705. cpp_quote(" HANDLE hInterface) IPURE;\\")
  706. cpp_quote(" STDMETHOD(Merge)(THIS_ IRtrMgrInterfaceInfo *pNewRtrMgrInterfaceInfo) IPURE; \\")
  707. cpp_quote(" STDMETHOD(SetInfo)(THIS_ DWORD dwIfInfoSize,\\")
  708. cpp_quote(" PBYTE pInterfaceInfoData) IPURE;\\")
  709. cpp_quote(" STDMETHOD(SetInfoBase)(THIS_ \\")
  710. cpp_quote(" HANDLE hMachine,\\")
  711. cpp_quote(" HANDLE hInterface,\\")
  712. cpp_quote(" HANDLE hIfTransport,\\")
  713. cpp_quote(" IInfoBase *pInfoBase) IPURE;\\")
  714. cpp_quote(" STDMETHOD(GetInfoBase)(THIS_ \\")
  715. cpp_quote(" HANDLE hMachine,\\")
  716. cpp_quote(" HANDLE hInterface,\\")
  717. cpp_quote(" HANDLE hIfTransport,\\")
  718. cpp_quote(" IInfoBase **ppInfoBase) IPURE;\\")
  719. cpp_quote(" STDMETHOD_(LPCOLESTR, GetId)(THIS) IPURE;\\")
  720. cpp_quote(" STDMETHOD(SetId)(THIS_ LPCOLESTR pszId) IPURE;\\")
  721. cpp_quote(" STDMETHOD_(DWORD, GetTransportId)(THIS) IPURE;\\")
  722. cpp_quote(" STDMETHOD_(LPCOLESTR, GetInterfaceId)(THIS) IPURE;\\")
  723. cpp_quote(" STDMETHOD_(DWORD, GetInterfaceType)(THIS) IPURE;\\")
  724. cpp_quote(" STDMETHOD_(LPCOLESTR, GetTitle)(THIS) IPURE;\\")
  725. cpp_quote(" STDMETHOD(SetTitle)(THIS_ LPCOLESTR pszTitle) IPURE;\\")
  726. cpp_quote(" STDMETHOD(CopyCB)(THIS_ RtrMgrInterfaceCB *pRMIfCB)IPURE;\\")
  727. cpp_quote(" STDMETHOD_(LPCOLESTR, GetMachineName)(THIS) IPURE;\\")
  728. cpp_quote(" STDMETHOD(SetMachineName)(THIS_ LPCOLESTR pszMachineName) IPURE;\\")
  729. cpp_quote(" STDMETHOD(EnumRtrMgrProtocolInterface)(THIS_ IEnumRtrMgrProtocolInterfaceInfo **ppEnumRmProtIf) IPURE;\\")
  730. cpp_quote(" STDMETHOD(FindRtrMgrProtocolInterface)(THIS_ DWORD dwProtocolId,\\")
  731. cpp_quote(" IRtrMgrProtocolInterfaceInfo **ppInfo) IPURE;\\")
  732. cpp_quote(" STDMETHOD(AddRtrMgrProtocolInterface)(THIS_ IRtrMgrProtocolInterfaceInfo *pInfo,\\")
  733. cpp_quote(" IInfoBase *pIfInfo) IPURE;\\")
  734. cpp_quote(" STDMETHOD(DeleteRtrMgrProtocolInterface)(THIS_ DWORD dwProtocolId, BOOL fRemove) IPURE;\\")
  735. cpp_quote(" STDMETHOD(ReleaseRtrMgrProtocolInterface)(THIS_ DWORD dwProtocolId) IPURE;\\")
  736. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  737. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  738. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  739. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  740. cpp_quote(" STDMETHOD(GetParentInterfaceInfo)(THIS_ IInterfaceInfo **ppParent) IPURE;\\")
  741. cpp_quote(" STDMETHOD(SetParentInterfaceInfo)(THIS_ IInterfaceInfo *pParent) IPURE;\\")
  742. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  743. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  744. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  745. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  746. cpp_quote(" ")
  747. /*---------------------------------------------------------------------------
  748. IEnumRtrMgrInterfaceInfo
  749. ---------------------------------------------------------------------------*/
  750. [
  751. object,
  752. uuid(66A2DB0B-D706-11d0-A37B-00C04FC9DA04),
  753. local,
  754. pointer_default(unique),
  755. ]
  756. interface IEnumRtrMgrInterfaceInfo : IUnknown
  757. {
  758. HRESULT Next( [in] ULONG uNum,
  759. [out] IRtrMgrInterfaceInfo **ppBlock,
  760. [out] ULONG * pNumReturned );
  761. HRESULT Skip( [in] ULONG uNum );
  762. HRESULT Reset();
  763. HRESULT Clone( [out] IEnumRtrMgrInterfaceInfo **ppBlockEnum );
  764. };
  765. cpp_quote("#define DeclareIEnumRtrMgrInterfaceInfoMembers(IPURE) \\")
  766. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, IRtrMgrInterfaceInfo **ppBlock, \\")
  767. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  768. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  769. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  770. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumRtrMgrInterfaceInfo **ppBlockEnum) IPURE; \\")
  771. cpp_quote("")
  772. /*---------------------------------------------------------------------------
  773. IInterfaceInfo
  774. ---------------------------------------------------------------------------*/
  775. [
  776. object,
  777. uuid(66A2DB08-D706-11d0-A37B-00C04FC9DA04),
  778. local,
  779. pointer_default(unique),
  780. ]
  781. interface IInterfaceInfo : IUnknown
  782. {
  783. import "unknwn.idl";
  784. DWORD GetFlags();
  785. HRESULT SetFlags([in] DWORD dwFlags);
  786. HRESULT Load([in, string] LPCOLESTR pszMachine,
  787. [in] HANDLE hMachine,
  788. [in] HANDLE hInterface);
  789. HRESULT Save([in,string] LPCOLESTR pszMachine,
  790. [in] HANDLE hMachine,
  791. [in] HANDLE hInterface);
  792. HRESULT Delete([in,string] LPCOLESTR pszMachine,
  793. [in] HANDLE hMachine);
  794. HRESULT Unload( );
  795. HRESULT Merge([in] IInterfaceInfo *pNewInterfaceInfo);
  796. // These can't be changed
  797. LPCOLESTR GetId();
  798. DWORD GetInterfaceType();
  799. LPCOLESTR GetDeviceName();
  800. LPCOLESTR GetTitle();
  801. HRESULT SetTitle([in] LPCOLESTR pszTitle);
  802. BOOL IsInterfaceEnabled();
  803. HRESULT SetInterfaceEnabledState([in] BOOL bEnabled);
  804. HRESULT CopyCB([in,out] InterfaceCB *pifcb);
  805. LPCOLESTR GetMachineName();
  806. HRESULT SetMachineName([in] LPCOLESTR pszMachine);
  807. HRESULT EnumRtrMgrInterface([out] IEnumRtrMgrInterfaceInfo **ppEnumRMIf);
  808. HRESULT AddRtrMgrInterface([in] IRtrMgrInterfaceInfo *pInfo,
  809. [in] IInfoBase *pInterfaceInfo);
  810. HRESULT DeleteRtrMgrInterface([in] DWORD dwTransportId, BOOL fRemove);
  811. HRESULT ReleaseRtrMgrInterface([in] DWORD dwTransportId);
  812. HRESULT FindRtrMgrInterface([in] DWORD dwTransportId,
  813. [out] IRtrMgrInterfaceInfo **ppInfo);
  814. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  815. [out] LONG_PTR *pulConnection,
  816. [in] LPARAM lUserParam);
  817. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType,
  818. [in] LPARAM lParam);
  819. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  820. HRESULT GetParentRouterInfo([out] IRouterInfo **ppRouterInfo);
  821. HRESULT SetParentRouterInfo([in] IRouterInfo *pRouterInfo);
  822. // Tell the object that it should remove all connections to the
  823. // running router
  824. HRESULT DoDisconnect();
  825. HRESULT AddWeakRef();
  826. HRESULT ReleaseWeakRef();
  827. HRESULT Destruct();
  828. };
  829. cpp_quote("#define DeclareIInterfaceInfoMembers(IPURE)\\")
  830. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE; \\")
  831. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE; \\")
  832. cpp_quote(" STDMETHOD(Load)(THIS_ LPCOLESTR pszMachine,\\")
  833. cpp_quote(" HANDLE hMachine,\\")
  834. cpp_quote(" HANDLE hInterface) IPURE;\\")
  835. cpp_quote(" STDMETHOD(Save)(THIS_ LPCOLESTR pszMachine,\\")
  836. cpp_quote(" HANDLE hMachine,\\")
  837. cpp_quote(" HANDLE hInterface) IPURE;\\")
  838. cpp_quote(" STDMETHOD(Delete)(THIS_ LPCOLESTR pszMachine,\\")
  839. cpp_quote(" HANDLE hMachine) IPURE;\\")
  840. cpp_quote(" STDMETHOD(Unload)(THIS) IPURE;\\")
  841. cpp_quote(" STDMETHOD(Merge)(THIS_ IInterfaceInfo *pNewInterfaceInfo) IPURE; \\")
  842. cpp_quote(" STDMETHOD_(LPCOLESTR, GetId)(THIS) IPURE;\\")
  843. cpp_quote(" STDMETHOD_(DWORD, GetInterfaceType)(THIS) IPURE;\\")
  844. cpp_quote(" STDMETHOD_(LPCOLESTR, GetDeviceName)(THIS) IPURE;\\")
  845. cpp_quote(" STDMETHOD_(LPCOLESTR, GetTitle)(THIS) IPURE;\\")
  846. cpp_quote(" STDMETHOD(SetTitle)(THIS_ LPCOLESTR pszTitle) IPURE;\\")
  847. cpp_quote(" STDMETHOD_(BOOL, IsInterfaceEnabled)(THIS) IPURE;\\")
  848. cpp_quote(" STDMETHOD(SetInterfaceEnabledState)(THIS_ BOOL bEnabled) IPURE;\\")
  849. cpp_quote(" STDMETHOD(CopyCB)(THIS_ InterfaceCB *pifcb) IPURE;\\")
  850. cpp_quote(" STDMETHOD_(LPCOLESTR, GetMachineName)(THIS) IPURE;\\")
  851. cpp_quote(" STDMETHOD(SetMachineName)(THIS_ LPCOLESTR pszMachineName) IPURE;\\")
  852. cpp_quote(" STDMETHOD(EnumRtrMgrInterface)(THIS_ IEnumRtrMgrInterfaceInfo **ppEnumRMIf) IPURE;\\")
  853. cpp_quote(" STDMETHOD(AddRtrMgrInterface)(THIS_ IRtrMgrInterfaceInfo *pInfo,\\")
  854. cpp_quote(" IInfoBase *pInterfaceInfo) IPURE;\\")
  855. cpp_quote(" STDMETHOD(DeleteRtrMgrInterface)(THIS_ DWORD dwTransportId, BOOL fRemove) IPURE;\\")
  856. cpp_quote(" STDMETHOD(ReleaseRtrMgrInterface)(THIS_ DWORD dwTransportId) IPURE;\\")
  857. cpp_quote(" STDMETHOD(FindRtrMgrInterface)(THIS_ DWORD dwTransportId,\\")
  858. cpp_quote(" IRtrMgrInterfaceInfo **ppInfo) IPURE;\\")
  859. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  860. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  861. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  862. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  863. cpp_quote(" STDMETHOD(GetParentRouterInfo)(THIS_ IRouterInfo **ppRouterInfo) IPURE;\\")
  864. cpp_quote(" STDMETHOD(SetParentRouterInfo)(THIS_ IRouterInfo *pRouterInfo) IPURE;\\")
  865. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  866. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  867. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  868. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  869. cpp_quote(" ")
  870. /*---------------------------------------------------------------------------
  871. IEnumInterfaceInfo
  872. ---------------------------------------------------------------------------*/
  873. [
  874. object,
  875. uuid(66A2DB09-D706-11d0-A37B-00C04FC9DA04),
  876. local,
  877. pointer_default(unique),
  878. ]
  879. interface IEnumInterfaceInfo : IUnknown
  880. {
  881. HRESULT Next( [in] ULONG uNum,
  882. [out] IInterfaceInfo **ppBlock,
  883. [out] ULONG * pNumReturned );
  884. HRESULT Skip( [in] ULONG uNum );
  885. HRESULT Reset();
  886. HRESULT Clone( [out] IEnumInterfaceInfo **ppBlockEnum );
  887. };
  888. cpp_quote("#define DeclareIEnumInterfaceInfoMembers(IPURE) \\")
  889. cpp_quote(" STDMETHOD(Next)(THIS_ ULONG uNum, IInterfaceInfo **ppBlock, \\")
  890. cpp_quote(" ULONG *pNumReturned) IPURE; \\")
  891. cpp_quote(" STDMETHOD(Skip)(THIS_ ULONG uNum) IPURE; \\")
  892. cpp_quote(" STDMETHOD(Reset)(THIS) IPURE; \\")
  893. cpp_quote(" STDMETHOD(Clone)(THIS_ IEnumInterfaceInfo **ppBlockEnum) IPURE; \\")
  894. cpp_quote("")
  895. /*---------------------------------------------------------------------------
  896. IRouterAdminAccess
  897. ---------------------------------------------------------------------------*/
  898. [
  899. object,
  900. uuid(66A2DB1F-D706-11d0-A37B-00C04FC9DA04),
  901. local,
  902. pointer_default(unique),
  903. ]
  904. interface IRouterAdminAccess : IUnknown
  905. {
  906. // Returns TRUE if the SetInfo() has been called, FALSE otherwise
  907. BOOL IsAdminInfoSet();
  908. // Retrieves the component parts of the info
  909. LPCOLESTR GetUserName();
  910. LPCOLESTR GetDomainName();
  911. // This does NOT allocate space. Do NOT free this up.
  912. HRESULT GetUserPassword(BYTE *pByte, int *pcPassword);
  913. //
  914. // Sets the information
  915. // Note : the cPassword is needed, because the pszPassword should
  916. // not be in cleartext!
  917. //
  918. HRESULT SetInfo(LPCOLESTR pszName,
  919. LPCOLESTR pszDomain,
  920. BYTE *pszPassword,
  921. int cPassword);
  922. };
  923. cpp_quote("#define DeclareIRouterAdminAccessMembers(IPURE) \\")
  924. cpp_quote(" STDMETHOD_(BOOL, IsAdminInfoSet)(THIS) IPURE;\\")
  925. cpp_quote(" STDMETHOD_(LPCOLESTR, GetUserName)(THIS) IPURE;\\")
  926. cpp_quote(" STDMETHOD_(LPCOLESTR, GetDomainName)(THIS) IPURE;\\")
  927. cpp_quote(" STDMETHOD(GetUserPassword)(THIS_ BYTE *pByte, \\")
  928. cpp_quote(" int *pcPassword) IPURE; \\")
  929. cpp_quote(" STDMETHOD(SetInfo)(THIS_ LPCOLESTR pszName, \\")
  930. cpp_quote(" LPCOLESTR pszDomain,\\")
  931. cpp_quote(" BYTE * pPassword, int cPassword) IPURE;\\")
  932. cpp_quote("")
  933. cpp_quote("// IRouterInfo")
  934. cpp_quote("// To make AutoRefresh to a group of IRouterInfo(s), assign an external Refresh Object")
  935. cpp_quote("// Without setting the ExternalRefreshObject, IRouterInfo will create up reqest by GetRefreshObject")
  936. /*---------------------------------------------------------------------------
  937. IRouterInfo
  938. ---------------------------------------------------------------------------*/
  939. [
  940. object,
  941. uuid(66A2DB02-D706-11d0-A37B-00C04FC9DA04),
  942. local,
  943. pointer_default(unique),
  944. ]
  945. interface IRouterInfo : IRouterRefreshAccess
  946. {
  947. DWORD GetFlags();
  948. HRESULT SetFlags([in] DWORD dwFlags);
  949. HRESULT Load([in,string] LPCOLESTR pszMachine,
  950. [in] HANDLE hMachine
  951. );
  952. HRESULT Save([in,string] LPCOLESTR pszMachine,
  953. [in] HANDLE hMachine );
  954. HRESULT Unload( );
  955. HRESULT Merge([in] IRouterInfo *pNewRouterInfo);
  956. HRESULT SetExternalRefreshObject([in] IRouterRefresh* pRouterRefresh);
  957. HRESULT CopyCB([in,out] RouterCB *pRouterCB);
  958. LPCOLESTR GetMachineName();
  959. DWORD GetRouterType();
  960. HRESULT GetRouterVersionInfo([out] RouterVersionInfo *pVerInfo);
  961. HRESULT EnumRtrMgrCB([out] IEnumRtrMgrCB **ppEnumRtrMgrCB);
  962. HRESULT EnumInterfaceCB([out] IEnumInterfaceCB **ppEnumInterfaceCB);
  963. HRESULT EnumRtrMgrProtocolCB([out] IEnumRtrMgrProtocolCB **ppEnumRmProtCB);
  964. HRESULT EnumRtrMgrInterfaceCB([out] IEnumRtrMgrInterfaceCB **ppEnumRmIfCB);
  965. HRESULT EnumRtrMgrProtocolInterfaceCB([out] IEnumRtrMgrProtocolInterfaceCB **ppEnumRmProtIfCB);
  966. HRESULT EnumRtrMgr([out] IEnumRtrMgrInfo **ppEnumRtrMgr);
  967. HRESULT FindRtrMgr([in] DWORD dwTransportId,
  968. [out] IRtrMgrInfo **ppInfo);
  969. HRESULT AddRtrMgr([in] IRtrMgrInfo *pInfo,
  970. [in] IInfoBase *pGlobalInfo,
  971. [in] IInfoBase *pClientInfo);
  972. HRESULT DeleteRtrMgr([in] DWORD dwTransportId, BOOL fRemove);
  973. HRESULT ReleaseRtrMgr([in] DWORD dwTransportId);
  974. HRESULT EnumInterface([out] IEnumInterfaceInfo **ppEnumInterface);
  975. HRESULT FindInterface([in,string] LPCOLESTR pszInterface,
  976. [out] IInterfaceInfo **ppInfo);
  977. HRESULT AddInterface([in] IInterfaceInfo *pInfo);
  978. HRESULT DeleteInterface([in,string] LPCOLESTR pszInterface, BOOL fRemove);
  979. HRESULT ReleaseInterface([in, string] LPCOLESTR pszInterface);
  980. HRESULT RtrAdvise([in] IRtrAdviseSink *pRtrAdviseSink,
  981. [out] LONG_PTR *pulConnection,
  982. [in] LPARAM lUserParam);
  983. HRESULT RtrNotify([in] DWORD dwChangeType, [in] DWORD dwObjectType,
  984. [in] LPARAM lParam);
  985. HRESULT RtrUnadvise([in] LONG_PTR ulConnection);
  986. // Tell the object that it should remove all connections to the
  987. // running router
  988. HRESULT DoDisconnect();
  989. HRESULT AddWeakRef();
  990. HRESULT ReleaseWeakRef();
  991. HRESULT Destruct();
  992. };
  993. cpp_quote("#define DeclareIRouterInfoMembers(IPURE)\\")
  994. cpp_quote(" STDMETHOD_(DWORD, GetFlags)(THIS) IPURE; \\")
  995. cpp_quote(" STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) IPURE; \\")
  996. cpp_quote(" STDMETHOD(Load)(THIS_ LPCOLESTR pszMachine,\\")
  997. cpp_quote(" HANDLE hMachine) IPURE;\\")
  998. cpp_quote(" STDMETHOD(Save)(THIS_ LPCOLESTR pszMachine,\\")
  999. cpp_quote(" HANDLE hMachine ) IPURE;\\")
  1000. cpp_quote(" STDMETHOD(Unload)(THIS) IPURE; \\")
  1001. cpp_quote(" STDMETHOD(Merge)(THIS_ IRouterInfo *pNewRouterInfo) IPURE; \\")
  1002. cpp_quote(" STDMETHOD(SetExternalRefreshObject)(THIS_ IRouterRefresh *pRefresh) IPURE;\\")
  1003. cpp_quote(" STDMETHOD(CopyCB)(THIS_ RouterCB *pRouterCB) IPURE; \\")
  1004. cpp_quote(" STDMETHOD_(LPCOLESTR, GetMachineName)(THIS) IPURE;\\")
  1005. cpp_quote(" STDMETHOD_(DWORD, GetRouterType)(THIS) IPURE;\\")
  1006. cpp_quote(" STDMETHOD(GetRouterVersionInfo)(THIS_ RouterVersionInfo *pVerInfo) IPURE;\\")
  1007. cpp_quote(" STDMETHOD(EnumRtrMgrCB)(THIS_ IEnumRtrMgrCB **ppEnumRtrMgrCB) IPURE;\\")
  1008. cpp_quote(" STDMETHOD(EnumInterfaceCB)(THIS_ IEnumInterfaceCB **ppEnumInterfaceCB) IPURE;\\")
  1009. cpp_quote(" STDMETHOD(EnumRtrMgrProtocolCB)(THIS_ IEnumRtrMgrProtocolCB **ppEnumRmProtCB) IPURE;\\")
  1010. cpp_quote(" STDMETHOD(EnumRtrMgrInterfaceCB)(THIS_ IEnumRtrMgrInterfaceCB **ppEnumRmIfCB) IPURE;\\")
  1011. cpp_quote(" STDMETHOD(EnumRtrMgrProtocolInterfaceCB)(THIS_ IEnumRtrMgrProtocolInterfaceCB **ppEnumRmProtIfCB) IPURE;\\")
  1012. cpp_quote(" STDMETHOD(EnumRtrMgr)(THIS_ IEnumRtrMgrInfo **ppEnumRtrMgr) IPURE;\\")
  1013. cpp_quote(" STDMETHOD(FindRtrMgr)(THIS_ DWORD dwTransportId,\\")
  1014. cpp_quote(" IRtrMgrInfo **ppInfo) IPURE;\\")
  1015. cpp_quote(" STDMETHOD(AddRtrMgr)(THIS_ IRtrMgrInfo *pInfo,\\")
  1016. cpp_quote(" IInfoBase *pGlobalInfo,\\")
  1017. cpp_quote(" IInfoBase *pClientInfo) IPURE;\\")
  1018. cpp_quote(" STDMETHOD(DeleteRtrMgr)(THIS_ DWORD dwTransportId, BOOL fRemove) IPURE;\\")
  1019. cpp_quote(" STDMETHOD(ReleaseRtrMgr)(THIS_ DWORD dwTransportId) IPURE;\\")
  1020. cpp_quote(" STDMETHOD(EnumInterface)(THIS_ IEnumInterfaceInfo **ppEnumInterface) IPURE;\\")
  1021. cpp_quote(" STDMETHOD(FindInterface)(THIS_ LPCOLESTR pszInterface,\\")
  1022. cpp_quote(" IInterfaceInfo **ppInfo) IPURE;\\")
  1023. cpp_quote(" STDMETHOD(AddInterface)(THIS_ IInterfaceInfo *pInfo) IPURE;\\")
  1024. cpp_quote(" STDMETHOD(DeleteInterface)(THIS_ LPCOLESTR pszInterface, BOOL fRemove) IPURE;\\")
  1025. cpp_quote(" STDMETHOD(ReleaseInterface)(THIS_ LPCOLESTR pszInterface) IPURE;\\")
  1026. cpp_quote(" STDMETHOD(RtrAdvise)(THIS_ IRtrAdviseSink *pRtrAdviseSink,\\")
  1027. cpp_quote(" LONG_PTR *pulConnection, LPARAM lUserParam) IPURE; \\")
  1028. cpp_quote(" STDMETHOD(RtrNotify)(THIS_ DWORD dwChangeType, DWORD objtype, LPARAM lParam) IPURE;\\")
  1029. cpp_quote(" STDMETHOD(RtrUnadvise)(THIS_ LONG_PTR ulConnection) IPURE; \\")
  1030. cpp_quote(" STDMETHOD(DoDisconnect)(THIS) IPURE; \\")
  1031. cpp_quote(" STDMETHOD(AddWeakRef)(THIS) IPURE;\\")
  1032. cpp_quote(" STDMETHOD(ReleaseWeakRef)(THIS) IPURE; \\")
  1033. cpp_quote(" STDMETHOD(Destruct)(THIS) IPURE; \\")
  1034. cpp_quote(" ")
  1035. #endif // _ROUTER_IDL_