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.

3748 lines
191 KiB

  1. /*
  2. @doc SEO EVENTS INTERNAL EXTERNAL
  3. @module SEO.IDL - IDL for Server Extension Objects | This module declares the
  4. various interfaces and objects exported and used by the Server Extension Objects
  5. system.
  6. */
  7. cpp_quote("/*++")
  8. cpp_quote("")
  9. cpp_quote("Copyright (c) 1999 Microsoft Corporation")
  10. cpp_quote("")
  11. cpp_quote("Module Name:")
  12. cpp_quote("")
  13. cpp_quote(" seo.idl / seo.h")
  14. cpp_quote("")
  15. cpp_quote("Abstract:")
  16. cpp_quote("")
  17. cpp_quote(" This module contains definitions for the COM interface for")
  18. cpp_quote(" Server Extension Objects.")
  19. cpp_quote("")
  20. cpp_quote("")
  21. cpp_quote("--*/")
  22. cpp_quote("#ifndef SEODLLIMPORT")
  23. cpp_quote(" #define SEODLLIMPORT _declspec(dllimport)")
  24. cpp_quote("#endif")
  25. cpp_quote("#ifndef SEODLLEXPORT")
  26. cpp_quote(" #define SEODLLEXPORT _declspec(dllexport)")
  27. cpp_quote("#endif")
  28. cpp_quote("#ifndef SEODLLDEF")
  29. cpp_quote(" #ifndef SEODLL_IMPLEMENTATION")
  30. cpp_quote(" #define SEODLLDEF EXTERN_C SEODLLIMPORT")
  31. cpp_quote(" #else")
  32. cpp_quote(" #define SEODLLDEF EXTERN_C SEODLLEXPORT")
  33. cpp_quote(" #endif")
  34. cpp_quote("#endif")
  35. cpp_quote("#define BD_OBJECT \"Object\"")
  36. cpp_quote("#define BD_PROGID \"ProgID\"")
  37. cpp_quote("#define BD_PRIORITY \"Priority\"")
  38. cpp_quote("#define BD_RULEENGINE \"RuleEngine\"")
  39. cpp_quote("#define BD_EXCLUSIVE \"Exclusive\"")
  40. cpp_quote("#define BD_BINDINGS \"Bindings\"")
  41. cpp_quote("#define BD_DISPATCHER \"Dispatcher\"")
  42. cpp_quote("#define BD_BINDINGPOINTS \"BindingPoints\"")
  43. cpp_quote("#define BD_RULE \"Rule\"")
  44. /*
  45. Define priorities
  46. */
  47. cpp_quote("#define PRIO_HIGHEST 0")
  48. cpp_quote("#define PRIO_HIGH 8191")
  49. cpp_quote("#define PRIO_MEDIUM 16383")
  50. cpp_quote("#define PRIO_LOW 24575")
  51. cpp_quote("#define PRIO_LOWEST 32767")
  52. cpp_quote("#define PRIO_DEFAULT PRIO_LOW")
  53. cpp_quote("#define PRIO_HIGHEST_STR L\"PRIO_HIGHEST\"")
  54. cpp_quote("#define PRIO_HIGH_STR L\"PRIO_HIGH\"")
  55. cpp_quote("#define PRIO_MEDIUM_STR L\"PRIO_MEDIUM\"")
  56. cpp_quote("#define PRIO_LOW_STR L\"PRIO_LOW\"")
  57. cpp_quote("#define PRIO_LOWEST_STR L\"PRIO_LOWEST\"")
  58. cpp_quote("#define PRIO_DEFAULT_STR L\"PRIO_DEFAULT\"")
  59. cpp_quote("#define PRIO_MIN PRIO_HIGHEST")
  60. cpp_quote("#define PRIO_MAX PRIO_LOWEST")
  61. //@doc SEO
  62. /*
  63. @interface ISEODictionaryItem | General-purpose access to a single dictionary item. This interface
  64. is derived from IDispatch (i.e. it is a dual interface). This is the interface returned for any
  65. multi-value item in a dictionary.
  66. @meth HRESULT | Value [propget] | Get the value (by optional index).
  67. @meth HRESULT | AddValue | Add a value by index.
  68. @meth HRESULT | DeleteValue | Delete a value by index.
  69. @meth HRESULT | Count [propget] | Get the count of values.
  70. @meth HRESULT | GetStringA | Get the value by index as an ANSI string.
  71. @meth HRESULT | GetStringW | Get the value by index as a Unicode string.
  72. @meth HRESULT | AddStringA | Add a value by index as an ANSI string.
  73. @meth HRESULT | AddStringW | Add a value by index as a Unicode string.
  74. @xref <i ISEODictionary>
  75. */
  76. [
  77. dual,
  78. helpstring("SEOCOM dictionary item (OA-compatible)"),
  79. hidden,
  80. object,
  81. pointer_default(unique),
  82. uuid(16d63630-83ae-11d0-a9e3-00aa00685c74)
  83. ]
  84. interface ISEODictionaryItem : IDispatch
  85. {
  86. import "wtypes.idl";
  87. import "ocidl.idl";
  88. //@method HRESULT | ISEODictionaryItem | Value [propget] | Get the value (by optional index).
  89. //@parm VARIANT * | pvarIndex | [in,optional] Specifies the (zero-based) index
  90. // from which to retrieve the value. If NULL, or if pvarIndex->vt==VT_ERROR, then an index of
  91. // zero is assumed.
  92. //@parm VARIANT * | pvarResult | [out,retval] Receives the result.
  93. //@rvalue S_OK | Success.
  94. //@rvalue SEO_E_NOTPRESENT | Failure, the index was too large.
  95. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  96. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  97. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.AddValue> <om ISEODictionaryItem.DeleteValue>
  98. [helpstring("Get the value (by optional index)"),propget,id(DISPID_VALUE)]
  99. HRESULT Value([in,optional] VARIANT *pvarIndex,
  100. [out,retval] VARIANT *pvarResult);
  101. //@method HRESULT | ISEODictionaryItem | AddValue | Add a value by index.
  102. //@parm VARIANT * | pvarIndex | [in] Specifies the (zero-based) index at which to place the value. If the
  103. // index is greater than the count, then the index is treated as being equal to the count (i.e. any
  104. // attempt to add an item past the last item results in the item becoming the new last item.)
  105. //@parm VARIANT * | pvarValue | [in] Specifies the value.
  106. //@rvalue S_OK | Success.
  107. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  108. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  109. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.Value [propget]> <om ISEODictionaryItem.DeleteValue>
  110. [helpstring("Add a value by index.")]
  111. HRESULT AddValue([in] VARIANT *pvarIndex, [in] VARIANT *pvarValue);
  112. //@method HRESULT | ISEODictionaryItem | DeleteValue | Remove a value by index.
  113. //@parm VARIANT * | pvarIndex | [in] Specifies the (zero-based) index of the item to delete.
  114. //@rvalue S_OK | Success.
  115. //@rvalue SEO_E_NOTPRESENT | Failure, the index was too large.
  116. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  117. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.Value [propget]> <om ISEODictionaryItem.AddValue>
  118. [helpstring("Remove a value by index.")]
  119. HRESULT DeleteValue([in] VARIANT *pvarIndex);
  120. //@method HRESULT | ISEODictionaryItem | Count [propget] | Get the count of values.
  121. //@parm VARIANT * | pvarResult | [out,retval] Receives the result.
  122. //@rvalue S_OK | Success.
  123. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  124. //@xref <i ISEODictionaryItem>
  125. [helpstring("Get the count of values."),propget]
  126. HRESULT Count([out,retval] VARIANT *pvarResult);
  127. //@method HRESULT | ISEODictionaryItem | GetStringA | Get the value by index as an ANSI string.
  128. //@parm DWORD | dwIndex | [in] Specifies the (zero-based) index.
  129. //@parm DWORD * | pchCount | [in,out] Specifies the total number of characters in the buffer, and receives
  130. // the total number of characters copied (including the terminating NULL).
  131. //@parm LPSTR | pszResult | [out,size_is(*pchCount)] Receives the value. May be NULL, in which
  132. // case *pchCount will receive the total number of characters in the value (including the terminating NULL).
  133. //@rvalue S_OK | Success. *pchCount has the total number of characters stored, including the termimating
  134. // NULL. If pszResult was NULL, then *pchCount has the total number of characters in the value (including
  135. // the terminating NULL).
  136. //@rvalue SEO_S_MOREDATA | Success. The buffer was not large enough to contain all of the data - the
  137. // maximum amount that could fit was copied into the buffer along with a terminating NULL, and
  138. // *pchCount contains the number of characters stored (including the terminating NULL).
  139. //@rvalue SEO_E_NOTPRESENT. | Failure, the index was too large.
  140. //@rvalue SEO_E_BADTYPE | Failure, the item is not of the requested type.
  141. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  142. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.GetStringW>
  143. [helpstring("Get the value by index as an ANSI string.")]
  144. HRESULT GetStringA([in] DWORD dwIndex,
  145. [in,out] DWORD *pchCount,
  146. [out,size_is(*pchCount)] LPSTR pszResult);
  147. //@method HRESULT | ISEODictionaryItem | GetStringW | Get the value by index as a Unicode string.
  148. //@parm DWORD | dwIndex | [in] Specifies the (zero-based) index.
  149. //@parm DWORD * | pchCount | [in,out] Specifies the total number of characters in the buffer, and receives
  150. // the total number of characters copied (including the terminating NULL).
  151. //@parm LPWSTR | pszResult | [out,size_is(*pchCount)] Receives the value. May be NULL, in which
  152. // case *pchCount will receive the total number of characters in the value (including the terminating NULL).
  153. //@rvalue S_OK | Success. *pchCount has the total number of characters stored, including the termimating
  154. // NULL. If pszResult was NULL, then *pchCount has the total number of characters in the value (including
  155. // the terminating NULL).
  156. //@rvalue SEO_S_MOREDATA | Success. The buffer was not large enough to contain all of the data - the
  157. // maximum amount that could fit was copied into the buffer along with a terminating NULL, and
  158. // *pchCount contains the number of characters stored (including the terminating NULL).
  159. //@rvalue SEO_E_NOTPRESENT. | Failure, the index was too large.
  160. //@rvalue SEO_E_BADTYPE | Failure, the item is not of the requested type.
  161. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  162. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.GetStringA>
  163. [helpstring("Get the value by index as a Unicode string.")]
  164. HRESULT GetStringW([in] DWORD dwIndex,
  165. [in,out] DWORD *pchCount,
  166. [out,size_is(*pchCount)] LPWSTR pszResult);
  167. //@method HRESULT | ISEODictionaryItem | AddStringA | Add a value by index as an ANSI string.
  168. //@parm DWORD | dwIndex | [in] Specifies the (zero-based) index.
  169. //@parm LPCSTR | pszValue | [in] Specifies the value (NULL-terminated). May not be NULL - use
  170. // DeleteValue() to remove a value.
  171. //@rvalue S_OK | Success.
  172. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  173. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  174. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.DeleteValue> <om ISEODictionaryItem.AddStringW>
  175. [helpstring("Add a value by index as an ANSI string.")]
  176. HRESULT AddStringA([in] DWORD dwIndex,
  177. [in] LPCSTR pszValue);
  178. //@method HRESULT | ISEODictionaryItem | AddStringW | Add a value by index as a Unicode string.
  179. //@parm DWORD | dwIndex | [in] Specifies the (zero-based) index.
  180. //@parm LPCWSTR | pszValue | [in] Specifies the value (NULL-terminated). May not be NULL - use
  181. // DeleteValue() to remove a value.
  182. //@rvalue S_OK | Success.
  183. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  184. //@rvalue E_POINTER | Failure, a bad pointer was passed as a parameter.
  185. //@xref <i ISEODictionaryItem> <om ISEODictionaryItem.DeleteValue> <om ISEODictionaryItem.AddStringA>
  186. [helpstring("Add a value by index as a Unicode string.")]
  187. HRESULT AddStringW([in] DWORD dwIndex,
  188. [in] LPCWSTR pszValue);
  189. };
  190. //@doc SEO
  191. /*
  192. @interface ISEODictionary | General-purpose access to name-value pairs. This interface
  193. is derived from IDispatch (i.e. it is a dual interface) and provides some methods which
  194. are automation-compatible (for use by scripts) and incompatible (for higher performance).
  195. @meth HRESULT | Item [propget] | Get a value (OA-compatible).
  196. @meth HRESULT | Item [propput] | Set a value (OA-compatible).
  197. @meth HRESULT | _NewEnum [propget] | Get an enumerator (OA-compatible).
  198. @meth HRESULT | GetVariantA | Query by ANSI name for a VARIANT (high performance).
  199. @meth HRESULT | GetVariantW | Query by Unicode name for a VARIANT (high performance).
  200. @meth HRESULT | SetVariantA | Set a VARIANT by ANSI name (high performance).
  201. @meth HRESULT | SetVariantW | Set a VARIANT by Unicode name (high performance).
  202. @meth HRESULT | GetStringA | Query by ANSI name for an ANSI string (high performance).
  203. @meth HRESULT | GetStringW | Query by Unicode name for a Unicode string (high performance).
  204. @meth HRESULT | SetStringA | Set an ANSI string by ANSI name (high performance).
  205. @meth HRESULT | SetStringW | Set a Unicode string by Unicode name (high performance).
  206. @meth HRESULT | GetDWordA | Query by ANSI name for a DWORD (high performance).
  207. @meth HRESULT | GetDWordW | Query by Unicode name for a DWORD (high performance).
  208. @meth HRESULT | SetDWordA | Set a DWORD by ANSI name (high performance).
  209. @meth HRESULT | SetDWordW | Set a DWORD by Unicode name (high performance).
  210. @meth HRESULT | GetInterfaceA | Query by ANSI name for an interface (high performance).
  211. @meth HRESULT | GetInterfaceW | Query by Unicode name for an interface (high performance).
  212. @meth HRESULT | SetInterfaceA | Set an interface by ANSI name (high performance).
  213. @meth HRESULT | SetInterfaceW | Set an interface by Unicode name (high performance).
  214. @xref <i ISEODictionaryItem>
  215. */
  216. [
  217. dual,
  218. helpstring("SEOCOM dictionary (OA-compatible)."),
  219. hidden,
  220. object,
  221. pointer_default(unique),
  222. uuid(d8177b40-7bac-11d0-a9e0-00aa00685c74)
  223. ]
  224. interface ISEODictionary : IDispatch
  225. {
  226. import "wtypes.idl";
  227. import "ocidl.idl";
  228. //@method HRESULT | ISEODictionary | Item [propget] | Get an item (OA-compatible.
  229. //@parm VARIANT * | pvarName | [in] Specifies the name.
  230. //@parm VARIANT * | pvarResult | [out,retval] Receives the value.
  231. //@rvalue S_OK | Success. If pvarResult->vt==VT_EMPTY, then the item was not present.
  232. //@rvalue E_INVALIDARG | Failure, pvarName couldn't be converted to a string.
  233. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  234. //@xref <i ISEODictionary> <om ISEODictionary.Item [propput]>
  235. [helpstring("Get a value."),id(DISPID_VALUE),propget]
  236. HRESULT Item([in] VARIANT *pvarName,
  237. [out,retval] VARIANT *pvarResult);
  238. //@method HRESULT | ISEODictionary | Item [propput] | Put a value (OA-compatible).
  239. //@parm VARIANT * | pvarName | [in] Specifies the name.
  240. //@parm VARIANT * | pvarResult | [in] Specifies the new value. May be NULL or VT_EMPTY to remove the item.
  241. //@rvalue S_OK | Success.
  242. //@rvalue E_INVALIDARG | Failure, pvarName couldn't be converted to a string.
  243. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  244. //@xref <i ISEODictionary> <om ISEODictionary.Item [propget]>
  245. [helpstring("Put a value."),propput]
  246. HRESULT Item([in] VARIANT *pvarName,
  247. [in] VARIANT *pvarValue);
  248. //@method HRESULT | ISEODictionary | _NewEnum [propget] | Get an enumerator (OA-compatible). This
  249. // function allows enumeration of the names of the values in the dictionary.
  250. //@parm IUnknown ** | ppunkResult | [out,retval] Receives the enumerator. This object will implement
  251. // the IEnumVARIANT interface, and each call to the Next() method on this object will return the
  252. // next names of values in the dictionary.
  253. //@rvalue S_OK | Success.
  254. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  255. //@xref <i ISEODictionary>
  256. [helpstring("Get an enumerator."),id(DISPID_NEWENUM),propget,hidden]
  257. HRESULT _NewEnum([out,retval] IUnknown **ppunkResult);
  258. //@method HRESULT | ISEODictionary | GetVariantA | Query by ANSI name for a VARIANT (high performance).
  259. //@parm LPCSTR | pszName | [in] Specifies the name.
  260. //@parm VARIANT * | pvarResult | [out,retval] Receives the value.
  261. //@rvalue S_OK | Success.
  262. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  263. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  264. //@xref <i ISEODictionary> <om ISEODictionary.GetVariantW> <om ISEODictionary.SetVariantA>
  265. // <om ISEODictionary.SetVariantW>
  266. [helpstring("Query by ANSI name for a VARIANT.")]
  267. HRESULT GetVariantA([in] LPCSTR pszName,
  268. [out,retval] VARIANT *pvarResult);
  269. //@method HRESULT | ISEODictionary | GetVariantW | Query by Unicode name for a VARIANT (high performance).
  270. //@parm LPCWSTR | pszName | [in] Specifies the name.
  271. //@parm VARIANT * | pvarResult | [out,retval] Receives the value.
  272. //@rvalue S_OK | Success.
  273. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  274. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  275. //@xref <i ISEODictionary> <om ISEODictionary.GetVariantA> <om ISEODictionary.SetVariantA>
  276. // <om ISEODictionary.SetVariantW>
  277. [helpstring("Query by Unicode name for a VARIANT.")]
  278. HRESULT GetVariantW([in] LPCWSTR pszName,
  279. [out,retval] VARIANT *pvarResult);
  280. //@method HRESULT | ISEODictionary | SetVariantA | Set a VARIANT by ANSI name (high performance).
  281. //@parm LPCSTR | pszName | [in] Specifies the name.
  282. //@parm VARIANT * | pvarResult | [in] Specifies the value. May be NULL or V_EMPTY to remove the item.
  283. //@rvalue S_OK | Success.
  284. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  285. //@xref <i ISEODictionary> <om ISEODictionary.GetVariantA> <om ISEODictionary.GetVariantW>
  286. // <om ISEODictionary.SetVariantW>
  287. [helpstring("Set a VARIANT by ANSI name.")]
  288. HRESULT SetVariantA([in] LPCSTR pszName,
  289. [in] VARIANT *pvarValue);
  290. //@method HRESULT | ISEODictionary | SetVariantW | Set a VARIANT by Unicode name (high performance).
  291. //@parm LPCWSTR | pszName | [in] Specifies the name.
  292. //@parm VARIANT * | pvarResult | [in] Specifies the value. May be NULL or V_EMPTY to remove the item.
  293. //@rvalue S_OK | Success.
  294. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  295. //@xref <i ISEODictionary> <om ISEODictionary.GetVariantA> <om ISEODictionary.GetVariantW>
  296. // <om ISEODictionary.SetVariantA>
  297. [helpstring("Set a VARIANT by Unicode name.")]
  298. HRESULT SetVariantW([in] LPCWSTR pszName,
  299. [in] VARIANT *pvarValue);
  300. //@method HRESULT | ISEODictionary | GetStringA | Query by ANSI name for an ANSI string (high performance).
  301. //@parm LPCSTR | pszName | [in] Specifies the name.
  302. //@parm DWORD * | pchCount | [in,out] Specifies the total number of characters in the buffer, and receives
  303. // the total number of characters copied (including the terminating NULL).
  304. //@parm LPSTR | pszResult | [out,size_is(*pchCount)] Receives the value.
  305. //@rvalue S_OK | Success. *pchCount has the total number of characters stored, including the termimating NULL.
  306. //@rvalue SEO_S_MOREDATA | Success. The buffer was not large enough to contain all of the data - the
  307. // maximum amount that could fit was copied into the buffer along with a terminating NULL, and
  308. // *pchCount contains the number of characters stored (including the terminating NULL).
  309. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  310. //@rvalue SEO_E_BADTYPE | Failure, the item it present but is not of the requested type.
  311. //@xref <i ISEODictionary> <om ISEODictionary.GetStringW> <om ISEODictionary.SetStringA>
  312. // <om ISEODictionary.SetStringW>
  313. [helpstring("Query by ANSI name for an ANSI string.")]
  314. HRESULT GetStringA([in] LPCSTR pszName,
  315. [in,out] DWORD *pchCount,
  316. [out,size_is(*pchCount)] LPSTR pszResult);
  317. //@method HRESULT | ISEODictionary | GetStringW | Query by Unicode name for a Unicode string (high performance).
  318. //@parm LPCWSTR | pszName | [in] Specifies the name.
  319. //@parm DWORD * | pchCount | [in,out] Specifies the total number of characters in the buffer, and receives
  320. // the total number of characters copied (including the terminating NULL).
  321. //@parm LPWSTR | pszResult | [out,size_is(*pchCount)] Receives the value.
  322. //@rvalue S_OK | Success. *pchCount has the total number of characters stored, including the termimating NULL.
  323. //@rvalue SEO_S_MOREDATA | Success. The buffer was not large enough to contain all of the data - the
  324. // maximum amount that could fit was copied into the buffer along with a terminating NULL, and
  325. // *pchCount contains the number of characters stored (including the terminating NULL).
  326. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  327. //@rvalue SEO_E_BADTYPE | Failure, the item it present but is not of the requested type.
  328. //@xref <i ISEODictionary> <om ISEODictionary.GetStringA> <om ISEODictionary.SetStringA>
  329. // <om ISEODictionary.SetStringW>
  330. [helpstring("Query by Unicode name for a Unicode string.")]
  331. HRESULT GetStringW([in] LPCWSTR pszName,
  332. [in,out] DWORD *pchCount,
  333. [out,size_is(*pchCount)] LPWSTR pszResult);
  334. //@method HRESULT | ISEODictionary | SetStringA | Set an ANSI string by ANSI name (high performance).
  335. //@parm LPCSTR | pszName | [in] Specifies the name.
  336. //@parm DWORD | chCount | [in] Specifies the number of characters in the string, including the
  337. // terminating NULL. (Use the SetVariantA() method to remove an item.)
  338. //@parm LPCSTR | pszValue | [in,size_is(chCount)] Specifies the value.
  339. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantA> <om ISEODictionary.GetStringA>
  340. // <om ISEODictionary.GetStringW> <om ISEODictionary.SetStringW>
  341. [helpstring("Set an ANSI string by ANSI name.")]
  342. HRESULT SetStringA([in] LPCSTR pszName,
  343. [in] DWORD chCount,
  344. [in,size_is(chCount)] LPCSTR pszValue);
  345. //@method HRESULT | ISEODictionary | SetStringW | Set a Unicode string by Unicode name (high performance).
  346. //@parm LPCWSTR | pszName | [in] Specifies the name.
  347. //@parm DWORD | chCount | [in] Specifies the number of characters in the string, including the
  348. // terminating NULL. (Use the SetVariantW() method to remove an item.)
  349. //@parm LPCWSTR | pszValue | [in,size_is(chCount)] Specifies the value.
  350. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantW> <om ISEODictionary.GetStringA>
  351. // <om ISEODictionary.GetStringW> <om ISEODictionary.SetStringA>
  352. [helpstring("Set a Unicode string by Unicode name.")]
  353. HRESULT SetStringW([in] LPCWSTR pszName,
  354. [in] DWORD chCount,
  355. [in,size_is(chCount)] LPCWSTR pszValue);
  356. //@method HRESULT | ISEODictionary | GetDWordA | Query by ANSI name for a DWORD (high performance).
  357. //@parm LPCSTR | pszName | [in] Specifies the name.
  358. //@parm DWORD * | pdwResult | [out,retval] Receives the value.
  359. //@rvalue S_OK | Success.
  360. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  361. //@rvalue SEO_E_BADTYPE | Failure, the item it present but is not of the requested type.
  362. //@xref <i ISEODictionary> <om ISEODictionary.GetDWordW> <om ISEODictionary.SetDWordA>
  363. // <om ISEODictionary.SetDWordW>
  364. [helpstring("Query by ANSI name for a DWORD.")]
  365. HRESULT GetDWordA([in] LPCSTR pszName,
  366. [out,retval] DWORD *pdwResult);
  367. //@method HRESULT | ISEODictionary | GetDWordW | Query by Unicode name for a DWORD (high performance).
  368. //@parm LPCWSTR | pszName | [in] Specifies the name.
  369. //@parm DWORD * | pdwResult | [out,retval] Receives the value.
  370. //@rvalue S_OK | Success.
  371. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  372. //@rvalue SEO_E_BADTYPE | Failure, the item it present but is not of the requested type.
  373. //@xref <i ISEODictionary> <om ISEODictionary.GetDWordA> <om ISEODictionary.SetDWordA>
  374. // <om ISEODictionary.SetDWordW>
  375. [helpstring("Query by Unicode name for a DWORD.")]
  376. HRESULT GetDWordW([in] LPCWSTR pszName,
  377. [out,retval] DWORD *pdwResult);
  378. //@method HRESULT | ISEODictionary | SetDWordA | Set a DWORD by ANSI name (high performance).
  379. //@parm LPCSTR | pszName | [in] Specifies the name.
  380. //@parm DWORD | dwValue | [in] Specifies the value. (Use the SetVariantA() method to remove an item.)
  381. //@rvalue S_OK | Success.
  382. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  383. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantA> <om ISEODictionary.GetDWordA>
  384. // <om ISEODictionary.GetDWordW> <om ISEODictionary.SetDWordW>
  385. [helpstring("Set a DWORD by ANSI name.")]
  386. HRESULT SetDWordA([in] LPCSTR pszName,
  387. [in] DWORD dwValue);
  388. //@method HRESULT | ISEODictionary | SetDWordW | Set a DWORD by Unicode name (high performance).
  389. //@parm LPCWSTR | pszName | [in] Specifies the name.
  390. //@parm DWORD | dwValue | [in] Specifies the value. (Use the SetVariantW() method to remove an item.)
  391. //@rvalue S_OK | Success.
  392. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  393. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantW> <om ISEODictionary.GetDWordA>
  394. // <om ISEODictionary.GetDWordW> <om ISEODictionary.SetDWordA>
  395. [helpstring("Set a DWORD by Unicode name.")]
  396. HRESULT SetDWordW([in] LPCWSTR pszName,
  397. [in] DWORD dwValue);
  398. //@method HRESULT | ISEODictionary | GetInterfaceA | Query by ANSI name for an interface (high performance).
  399. //@parm LPCSTR | pszName | [in] Specifies the name.
  400. //@parm REFIID | iidDesired | [in] Specifies the IID of the desired interface.
  401. //@parm IUnknown ** | ppunkResult | [out,iid_is(iidDesired),retval] Receives the value.
  402. //@rvalue S_OK | Success.
  403. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  404. //@rvalue E_NOINTERFACE | Failure, the item is present but does not support the desired interface.
  405. //@xref <i ISEODictionary> <om ISEODictionary.GetInterfaceW> <om ISEODictionary.SetInterfaceA>
  406. // <om ISEODictionary.SetInterfaceW>
  407. [helpstring("Query by ANSI name for an interface.")]
  408. HRESULT GetInterfaceA([in] LPCSTR pszName,
  409. [in] REFIID iidDesired,
  410. [out,iid_is(iidDesired),retval] IUnknown **ppunkResult);
  411. //@method HRESULT | ISEODictionary | GetInterfaceW | Query by Unicode name for an interface (high performance).
  412. //@parm LPCWSTR | pszName | [in] Specifies the name.
  413. //@parm REFIID | iidDesired | [in] Specifies the IID of the desired interface.
  414. //@parm IUnknown ** | ppunkResult | [out,iid_is(iidDesired),retval] Receives the value.
  415. //@rvalue S_OK | Success.
  416. //@rvalue SEO_E_NOTPRESENT. | Failure, the item is not present.
  417. //@rvalue SEO_E_BADTYPE | Failure, the item it present but is not of the requested type.
  418. //@rvalue E_NOINTERFACE | Failure, the item is present but does not support the desired interface.
  419. //@xref <i ISEODictionary> <om ISEODictionary.GetInterfaceA> <om ISEODictionary.SetInterfaceA>
  420. // <om ISEODictionary.SetInterfaceW>
  421. [helpstring("Query by Unicode name for an interface.")]
  422. HRESULT GetInterfaceW([in] LPCWSTR pszName,
  423. [in] REFIID iidDesired,
  424. [out,iid_is(iidDesired),retval] IUnknown **ppunkResult);
  425. //@method HRESULT | ISEODictionary | SetInterfaceA | Set an interface by ANSI name (high performance).
  426. //@parm LPCSTR | pszName | [in] Specifies the name.
  427. //@parm IUnknown * | punkValue | [in,unique] Specifies the value. (Use the SetVariantA() method to remove an item.)
  428. //@rvalue S_OK | Success.
  429. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  430. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantA> <om ISEODictionary.GetInterfaceA>
  431. // <om ISEODictionary.GetInterfaceW> <om ISEODictionary.SetInterfaceW>
  432. [helpstring("Set an interface by ANSI name.")]
  433. HRESULT SetInterfaceA([in] LPCSTR pszName,
  434. [in,unique] IUnknown *punkValue);
  435. //@method HRESULT | ISEODictionary | SetInterfaceW | Set an interface by Unicode name (high performance).
  436. //@parm LPCWSTR | pszName | [in] Specifies the name.
  437. //@parm IUnknown * | punkValue | [in,unique] Specifies the value. (Use the SetVariantW() method to remove an item.)
  438. //@rvalue S_OK | Success.
  439. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  440. //@xref <i ISEODictionary> <om ISEODictionary.SetVariantW> <om ISEODictionary.GetInterfaceA>
  441. // <om ISEODictionary.GetInterfaceW> <om ISEODictionary.SetInterfaceA>
  442. [helpstring("Set an interface by Unicode name.")]
  443. HRESULT SetInterfaceW([in] LPCWSTR pszName,
  444. [in,unique] IUnknown *punkValue);
  445. };
  446. //@doc EVENTS INTERNAL
  447. /*
  448. @interface IEventLock | Contention control. This interface provides methods for controlling
  449. multi-threaded access to an object, and supports a multi-reader/single-writer model.
  450. @meth HRESULT | LockRead | Lock the object for reading.
  451. @meth HRESULT | UnlockRead | Reverse the effects of LockRead.
  452. @meth HRESULT | LockWrite | Lock the object for writing.
  453. @meth HRESULT | UnlockWrite | Reverse the effects of LockWrite.
  454. */
  455. [
  456. dual,
  457. helpstring("IEventLock."),
  458. object,
  459. pointer_default(unique),
  460. hidden,
  461. uuid(1b7058f0-af88-11d0-a9eb-00aa00685c74)
  462. ]
  463. interface IEventLock : IDispatch
  464. {
  465. import "wtypes.idl";
  466. import "ocidl.idl";
  467. //@method HRESULT | IEventLock | LockRead | Lock the object for reading. Read locks prevent write
  468. // locks, but do not prevent other read locks.
  469. //@parm int | iTimeoutMS | [in] The number of milliseconds to wait before timing out. Use the value
  470. // INFINITE for no timeout.
  471. //@rvalue S_OK | Success.
  472. //@rvalue EVENTS_E_TIMEOUT | Failure, the timeout expired.
  473. //@xref <i IEventLock> <om IEventLock.UnlockRead> <om IEventLock.LockWrite>
  474. [helpstring("Lock for reading.")]
  475. HRESULT LockRead([in] int iTimeoutMS);
  476. //@method HRESULT | IEventLock | UnlockRead | Reverse the effects of LockRead.
  477. //@rvalue S_OK | Success.
  478. //@xref <i IEventLock> <om IEventLock.LockRead>
  479. [helpstring("Reverse the effects of a call to LockRead.")]
  480. HRESULT UnlockRead();
  481. //@method HRESULT | IEventLock | LockWrite | Lock the object for writing. Write locks prevent both
  482. // read locks and write locks.
  483. //@parm int | iTimeoutMS | [in] The number of milliseconds to wait before timing out. Use the value
  484. // INFINITE for no timeout.
  485. //@rvalue S_OK | Success.
  486. //@rvalue EVENTS_E_TIMEOUT | Failure, the timeout expired.
  487. //@xref <i IEventLock> <om IEventLock.UnlockWrite> <om IEventLock.LockRead>
  488. [helpstring("Lock for writing.")]
  489. HRESULT LockWrite([in] int iTimeoutMS);
  490. //@method HRESULT | IEventLock | UnlockWrite | Reverse the effects of LockWrite.
  491. //@rvalue S_OK | Success.
  492. //@xref <i IEventLock> <om IEventLock.LockWrite>
  493. [helpstring("Reverse the effects of a call to LockWrite.")]
  494. HRESULT UnlockWrite();
  495. };
  496. //@doc SEO
  497. /*
  498. @interface ISEORouter | Event router. This object is the primary interface of the handle returned by
  499. SEOInit().
  500. @meth HRESULT | Database [propget] | Get the binding database.
  501. @meth HRESULT | Database [propput] | Set the binding database.
  502. @meth HRESULT | Server [propget] | Get the server object.
  503. @meth HRESULT | Server [propput] | Set the server object.
  504. @meth HRESULT | Applications [propget] | Get the collection of application objects.
  505. @meth HRESULT | GetDispatcher | Get the dispatcher for a binding point.
  506. @meth HRESULT | GetDispatcherByCLSID | Get the dispatcher for a binding point.
  507. */
  508. [
  509. helpstring("SEOCOM event router"),
  510. hidden,
  511. object,
  512. pointer_default(unique),
  513. uuid(2b6ac0f0-7e03-11d0-a9e0-00aa00685c74)
  514. ]
  515. interface ISEORouter : IUnknown
  516. {
  517. import "wtypes.idl";
  518. import "ocidl.idl";
  519. //@method HRESULT | ISEORouter | Database [propget] | Get the binding database.
  520. //@parm ISEODictionary ** | ppdictResult | [out,retval] Receives the value. Will be NULL if the value has
  521. // never been set.
  522. //@rvalue S_OK | Success.
  523. //@xref <i ISEORouter> <om ISEORouter.Database [propput]>
  524. [helpstring("Get the binding database."),propget]
  525. HRESULT Database([out,retval] ISEODictionary **ppdictResult);
  526. //@method HRESULT | ISEORouter | Database [propput] | Set the binding database.
  527. //@parm ISEODictionary * | pdictDatabase | [in,unique] Specifies the value.
  528. //@rvalue S_OK | Success.
  529. //@xref <i ISEORouter> <om ISEORouter.Database [propget]>
  530. [helpstring("Set the binding database."),propput]
  531. HRESULT Database([in,unique] ISEODictionary *pdictDatabase);
  532. //@method HRESULT | ISEORouter | Server [propget] | Get the server object.
  533. //@parm ISEODictionary ** | ppdictResult | [out,retval] Receives the value. Will be NULL if the
  534. // value has never been set.
  535. //@rvalue S_OK | Success.
  536. //@xref <i ISEORouter> <om ISEORouter.Server [propput]>
  537. [helpstring("Get the server object."),propget]
  538. HRESULT Server([out,retval] ISEODictionary **ppdictResult);
  539. //@method HRESULT | ISEORouter | Server [propput] | Set the server object.
  540. //@parm ISEODictionary * | pdictServer | [in,unique] Specifies the value.
  541. //@rvalue S_OK | Success.
  542. //@xref <i ISEORouter> <om ISEORouter.Server [propget]>
  543. [helpstring("Set the server object."),propput]
  544. HRESULT Server([in,unique] ISEODictionary *pdictServer);
  545. //@method HRESULT | ISEORouter | Applications [propget] | Get the collection of application objects. The
  546. // collection is represented as an ISEODictionary, where the name of each property in the dictionary is
  547. // the name of the application, and the value of each property is itself an ISEODictionary.
  548. //@parm ISEODictionary ** | ppdictResult | [out,retval] Receives the value.
  549. //@rvalue S_OK | Success.
  550. //@rvalue E_POINTER | Failure, bad pointer value.
  551. //@xref <i ISEORouter> <i ISEODictionary>
  552. [helpstring("Get the application collection."),propget]
  553. HRESULT Applications([out,retval] ISEODictionary **ppdictResult);
  554. //@method HRESULT | ISEORouter | GetDispatcher | Get the dispatcher for an event type. If the
  555. // dispatcher is present in the cache, then the cached instance is returned. If it is not present
  556. // in the cache, then a new one is created - if the newly created instance supports the
  557. // ISEODispatcher interface, then ISEODispatcher::SetContext is called on the newly created instance
  558. // before the object is returned to the client.
  559. //@parm REFIID | iidEvent | [in] Specifies the type of event.
  560. //@parm REFIID | iidDesired | [in] Specifies the interface desired.
  561. //@parm IUnknown ** | ppUnkResult | [out,iid_is(iidDesired),retval] Receives the result.
  562. //@rvalue S_OK | Success.
  563. //@rvalue S_FALSE | Success, there are no bindings for this event (*ppUnkResult is NULL).
  564. //@rvalue E_POINTER | Failure, bad pointer value.
  565. [helpstring("Get the dispatcher for an event type.")]
  566. HRESULT GetDispatcher([in] REFIID iidEvent,
  567. [in] REFIID iidDesired,
  568. [out,iid_is(iidDesired),retval] IUnknown **ppUnkResult);
  569. //@method HRESULT | ISEORouter | GetDispatcherByCLSID | Get the dispatcher for an event type. If the
  570. // dispatcher is present in the cache, then the cached instance is returned. If it is not present
  571. // in the cache, then a new one is created - if the newly created instance supports the
  572. // ISEODispatcher interface, then ISEODispatcher::SetContext is called on the newly created instance
  573. // before the object is returned to the client.
  574. //@parm REFCLSID | clsidDispatcher | [in] Specifies the CLSID of the dispatcher to load.
  575. //@parm REFIID | iidEvent | [in] Specifies the type of event.
  576. //@parm REFIID | iidDesired | [in] Specifies the interface desired.
  577. //@parm IUnknown ** | ppUnkResult | [out,iid_is(iidDesired),retval] Receives the result.
  578. //@rvalue S_OK | Success.
  579. //@rvalue S_FALSE | Success, there are no bindings for this event (*ppUnkResult is NULL).
  580. //@rvalue E_POINTER | Failure, bad pointer value.
  581. [helpstring("Get the dispatcher for an event type.")]
  582. HRESULT GetDispatcherByCLSID([in] REFCLSID clsidDispatcher,
  583. [in] REFIID iidEvent,
  584. [in] REFIID iidDesired,
  585. [out,iid_is(iidDesired),retval] IUnknown **ppUnkResult);
  586. };
  587. //@doc SEO
  588. /*
  589. @interface IMCISMessageFilter | MCIS message filter. This interface is exposed by MCIS extension
  590. objects which want to be notified about mail and news messages.
  591. @meth HRESULT | OnMessage | Handle a message from the mail or news server.
  592. */
  593. [
  594. helpstring("SEOCOM MCIS message filter."),
  595. hidden,
  596. object,
  597. pointer_default(unique),
  598. uuid(f174e5b0-9046-11d0-a9e8-00aa00685c74)
  599. ]
  600. interface IMCISMessageFilter : IUnknown
  601. {
  602. import "wtypes.idl";
  603. import "ocidl.idl";
  604. //@method HRESULT | IMCISMessageFilter | OnMessage | Handle a message from the mail or news server.
  605. //@parm IStream * | pstreamMessage | [in,unique] The message which was received.
  606. //@parm ISEODictionary * | pdictEnvelope | [in,unique] Envelope data for the message.
  607. //@parm ISEODictionary * | pdictBinding | [in,unique] The binding being signaled.
  608. //@rvalue S_OK | Success.
  609. //@rvalue SEO_S_DONEPROCESSING | Success, the message should not be handed to any other extension objects
  610. // at this binding point.
  611. //@xref <i ISEODictionary>
  612. HRESULT OnMessage([in,unique] IStream *pstreamMessage,
  613. [in,unique] ISEODictionary *pdictEnvelope,
  614. [in,unique] ISEODictionary *pdictBinding);
  615. };
  616. //@doc SEO
  617. /*
  618. @interface ISEOBindingRuleEngine | Evaluates events against rules.
  619. @meth HRESULT | Evaluate | Evaluate the event against the rule.
  620. */
  621. [
  622. helpstring("SEOCOM Rule Engine"),
  623. hidden,
  624. object,
  625. pointer_default(unique),
  626. uuid(f2d1daf0-2236-11d0-a9ce-00aa00685c74)
  627. ]
  628. interface ISEOBindingRuleEngine : IUnknown
  629. {
  630. import "wtypes.idl";
  631. import "ocidl.idl";
  632. //@method HRESULT | ISEOBindingRuleEngine | Evaluate | Evaluate the event against the rule.
  633. //@parm ISEODictionary * | pdictEvent | [in,unique] Specifies the event.
  634. //@parm ISEODictionary * | pdictBinding | [in,unique] Specified the binding being checked.
  635. //@rvalue S_OK | Success, the rule evaluated to TRUE.
  636. //@rvalue S_FALSE | Success, the rule evaluated to FALSE.
  637. //@xref <i ISEODictionary>
  638. [helpstring("Evaluate the event against the rule.")]
  639. HRESULT Evaluate([in,unique] ISEODictionary *pdictEvent,
  640. [in,unique] ISEODictionary *pdictBinding);
  641. };
  642. //@doc SEO
  643. /*
  644. @interface ISEOEventSink | Sinks events.
  645. @meth HRESULT | OnEvent | Sink an event.
  646. */
  647. [
  648. helpstring("SEOCOM Event Notification"),
  649. hidden,
  650. object,
  651. pointer_default(unique),
  652. uuid(1cab4c20-94f4-11d0-a9e8-00aa00685c74)
  653. ]
  654. interface ISEOEventSink : IUnknown
  655. {
  656. import "wtypes.idl";
  657. import "ocidl.idl";
  658. //@method HRESULT | ISEOEventSink | OnEvent | Sink an event.
  659. //@rvalue S_OK | Success.
  660. //@rvalue SEO_S_CANCELLISTEN | Success, this event should not be fired again.
  661. [helpstring("Handles an event.")]
  662. HRESULT OnEvent();
  663. };
  664. [
  665. helpstring("SEOCOM extended ISEODictionary, implemented on the registry"),
  666. object,
  667. pointer_default(unique),
  668. uuid(347cacb0-2d1e-11d0-a9cf-00aa00685c74)
  669. ]
  670. interface ISEORegDictionary : ISEODictionary
  671. {
  672. import "wtypes.idl";
  673. import "ocidl.idl";
  674. typedef SIZE_T SEO_HKEY;
  675. [helpstring("Sets the machine, base registry key, and subkey.")]
  676. HRESULT Load([in] LPCOLESTR pszMachine,
  677. [in] SEO_HKEY skBaseKey,
  678. [in] LPCOLESTR pszSubKey,
  679. [in,unique] IErrorLog *pErrorLog);
  680. };
  681. [
  682. helpstring("SEOCOM Converter for Event Binding Data"),
  683. object,
  684. pointer_default(unique),
  685. uuid(ee4e64d0-31f1-11d0-a9d0-00aa00685c74)
  686. ]
  687. interface ISEOBindingConverter : IUnknown
  688. {
  689. import "wtypes.idl";
  690. import "ocidl.idl";
  691. [helpstring("Converts event data.")]
  692. HRESULT Convert([in] LONG lEventData, [out,retval] ISEODictionary **ppiResult);
  693. };
  694. //@doc SEO
  695. /*
  696. @interface ISEODispatcher | Dispatches an event.
  697. @meth HRESULT | SetContext | Sets the object's context.
  698. */
  699. [
  700. helpstring("SEOCOM Binding Dispatcher"),
  701. hidden,
  702. object,
  703. pointer_default(unique),
  704. uuid(8ca89880-31f1-11d0-a9d0-00aa00685c74)
  705. ]
  706. interface ISEODispatcher : IUnknown
  707. {
  708. import "wtypes.idl";
  709. import "ocidl.idl";
  710. //@method HRESULT | ISEODispatcher | SetContext | Sets the object's context.
  711. //@parm ISEORouter * | piRouter | [in,unique] Specifies the router.
  712. //@parm ISEODictionary * | pdictBP | [in,unique] Specifies the dictionary for the binding point.
  713. [helpstring("Sets the object's context.")]
  714. HRESULT SetContext([in,unique] ISEORouter *piRouter, [in,unique] ISEODictionary *pdictBP);
  715. };
  716. //@doc EVENTS EXTERNAL
  717. /*
  718. @interface IEventDeliveryOptions | Provides access to event delivery options. ****_TBD_****
  719. */
  720. [
  721. dual,
  722. helpstring("Provides access to event delivery options."),
  723. object,
  724. oleautomation,
  725. pointer_default(unique),
  726. uuid(0688a660-a3ff-11d0-a9e9-00aa00685c74)
  727. ]
  728. interface IEventDeliveryOptions : IDispatch
  729. {
  730. import "wtypes.idl";
  731. import "ocidl.idl";
  732. };
  733. //@doc EVENTS EXTERNAL
  734. /*
  735. @interface IEventTypeSinks | Provides access to a collection of sinks for an event type.
  736. Objects of this type are returned by the IEventType::Sinks [propget] method. This object is
  737. intended to provide automation-compatible access to the PROGID's of classes which are registered
  738. in the component category matching the event type.
  739. @meth HRESULT | Item | Get a sink.
  740. @meth HRESULT | Add | Add a sink.
  741. @meth HRESULT | Remove | Remove a sink.
  742. @meth HRESULT | Count [propget] | Get the count of the sinks.
  743. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the sinks.
  744. @xref <om IEventType::Sinks [propget]> <i IEventType>
  745. */
  746. [
  747. dual,
  748. helpstring("Provides access to a collection of sinks for an event type."),
  749. object,
  750. oleautomation,
  751. pointer_default(unique),
  752. uuid(a1063f50-a654-11d0-a9ea-00aa00685c74)
  753. ]
  754. interface IEventTypeSinks : IDispatch
  755. {
  756. import "wtypes.idl";
  757. import "ocidl.idl";
  758. //@method HRESULT | IEventTypeSinks | Item | Get a sink. This method returns one of the PROGID's
  759. // for sinks registered in the component category of the event type.
  760. //@parm long | lIndex | [in] Specifies the sink to get. This is the one-based index into the
  761. // collection.
  762. //@parm BSTR * | pstrTypeSink | [out,retval] Receives the result. This will be the PROGID of
  763. // the sink.
  764. //@rvalue S_OK | Success.
  765. //@rvalue S_FALSE | Success, the index is out of bounds. *pstrTypeSink is set to NULL.
  766. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  767. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  768. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  769. [helpstring("Get a sink."),id(DISPID_VALUE)]
  770. HRESULT Item([in] long lIndex, [out,retval] BSTR *pstrTypeSink);
  771. //@method HRESULT | IEventTypeSinks | Add | Add a sink. This method causes methods on the
  772. // ICatRegister interface to be called, in order to register the sink into the component
  773. // category for the event type.
  774. //@parm BSTR | pszTypeSink | [in] Specifies the PROGID of the sink to register.
  775. //@rvalue S_OK | Success.
  776. //@rvalue S_FALSE | Success, the sink was already registered.
  777. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  778. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  779. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  780. [helpstring("Add a sink.")]
  781. HRESULT Add([in] BSTR pszTypeSink);
  782. //@method HRESULT | IEventTypeSinks | Remove | Remove a sink. This method causes methods on the
  783. // ICatRegister interface to be called, in order to unregister the sink from the component
  784. // category for the event type.
  785. //@parm BSTR | pszTypeSink | [in] Specifies the PROGID of the sink to unregister.
  786. //@rvalue S_OK | Success.
  787. //@rvalue EVENTS_OK_ALREADYUNREGISTERED | Success, the sink was not registered.
  788. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  789. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  790. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  791. [helpstring("Remove a sink.")]
  792. HRESULT Remove([in] BSTR pszTypeSink);
  793. //@method HRESULT | IEventTypeSinks | Count [propget] | Get the cound of the sinks.
  794. //@parm long * | plCount | [out,retval] Receives the result.
  795. //@rvalue S_OK | Success.
  796. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  797. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  798. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  799. [helpstring("Get the count of the sinks."),propget]
  800. HRESULT Count([out,retval] long *plCount);
  801. //@method HRESULT | IEventTypeSinks | _NewEnum [propget] | Get an enumerator for the sinks.
  802. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result. This will be an object which
  803. // implements IEnumVARIANT to enumerate the BSTR values of the PROGID's of the sinks.
  804. [helpstring("Get an enumerator for the sinks."),id(DISPID_NEWENUM),propget,hidden]
  805. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  806. };
  807. //@doc EVENTS EXTERNAL
  808. /*
  809. @interface IEventType | Provides access to information about an event type.
  810. @meth HRESULT | ID [propget] | Get the ID.
  811. @meth HRESULT | DisplayName [propget] | Get the display name.
  812. @meth HRESULT | Sinks [propget] | Get the sinks which support this event type.
  813. @xref <i IEventTypes> <om ISourceType::EventTypes [propget]>
  814. */
  815. [
  816. dual,
  817. helpstring("Provides access to information about an event type."),
  818. object,
  819. oleautomation,
  820. pointer_default(unique),
  821. uuid(4a993b80-a654-11d0-a9ea-00aa00685c74)
  822. ]
  823. interface IEventType : IDispatch
  824. {
  825. import "wtypes.idl";
  826. import "ocidl.idl";
  827. //@method HRESULT | IEventType | ID [propget] | Get the ID.
  828. //@parm BSTR * | pstrID | [out,retval] Receives the result. This will be the CATID of the
  829. // component category for the event type, converted to a string using the StringFromGUID2()
  830. // function.
  831. //@rvalue S_OK | Success.
  832. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  833. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  834. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  835. [helpstring("Get the ID."),propget]
  836. HRESULT ID([out,retval] BSTR *pstrID);
  837. //@method HRESULT | IEventType | DisplayName [propget] | Get the display name.
  838. //@parm BSTR * | pstrDisplayName | [out,retval] Receives the result. This will be the
  839. // display name for the component category, in the currently-active locale.
  840. //@rvalue S_OK | Success.
  841. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  842. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  843. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  844. [helpstring("Get the display name."),propget]
  845. HRESULT DisplayName([out,retval] BSTR *pstrDisplayName);
  846. //@method HRESULT | IEventType | Sinks [propget] | Get the sinks which support this event type.
  847. // This method returns an IEventTypeSinks collection, which lets the client enumerate, add,
  848. // and remove the PROGID's for classes which are registered in the component category of the
  849. // event type.
  850. //@parm IEventTypeSinks ** | ppTypeSinks | [out,retval] Receives the result.
  851. //@xref <i IEventTypeSinks>
  852. [helpstring("Get the sinks which support this event type."),propget]
  853. HRESULT Sinks([out,retval] IEventTypeSinks **ppTypeSinks);
  854. };
  855. //@doc EVENTS EXTERNAL
  856. /*
  857. @interface IEventPropertyBag | Implements IPropertyBag, in an automation-compatible way.
  858. @meth HRESULT | Item | Get a property value.
  859. @meth HRESULT | Name | Get the name of a property.
  860. @meth HRESULT | Add | Add a property.
  861. @meth HRESULT | Remove | Remove a property.
  862. @meth HRESULT | Count [propget] | Get the count of the properties.
  863. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the names of the properties.
  864. @xref <om IEventBinding::SinkProperties [propget]> <om IEventBinding::SourceProperties [propget]>
  865. <om IEventBinding::EventBindingProperties [propget]>
  866. */
  867. [
  868. dual,
  869. helpstring("Implements IPropertyBag, in an automation-compatible way."),
  870. object,
  871. oleautomation,
  872. pointer_default(unique),
  873. uuid(aabb23e0-a705-11d0-a9ea-00aa00685c74)
  874. ]
  875. interface IEventPropertyBag : IDispatch
  876. {
  877. //@method HRESULT | IEventPropertyBag | Item | Get a property value.
  878. //@parm VARIANT * | pvarPropDesired | [in] Specifies the property to get. This is either a number
  879. // representing the one-based index of the property in the collection, or it is a string representing
  880. // the name of the property.
  881. //@parm VARIANT * | pvarPropValue | [out,retval] Receives the result. If the property is not
  882. // present, this will be VT_EMPTY.
  883. //@rvalue S_OK | Success.
  884. //@rvalue S_FALSE | Success, the property is not present - the result is VT_EMPTY.
  885. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  886. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  887. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  888. [helpstring("Get a property."),id(DISPID_VALUE)]
  889. HRESULT Item([in] VARIANT *pvarPropDesired, [out,retval] VARIANT *pvarPropValue);
  890. //@method HRESULT | IEventPropertyBag | Name | Get the name of a property.
  891. //@parm long | lPropIndex | [in] Specifies the index of the property to get.
  892. //@parm BSTR * | pstrPropName | [out,retval] Receives the result. If the property is not present,
  893. // this will be NULL.
  894. //@rvalue S_OK | Success.
  895. //@rvalue S_FALSE | Success, the property is not present - the result is NULL.
  896. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  897. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  898. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  899. [helpstring("Get the name of a property.")]
  900. HRESULT Name([in] long lPropIndex, [out,retval] BSTR *pstrPropName);
  901. //@method HRESULT | IEventPropertyBag | Add | Add a property.
  902. //@parm BSTR | pszPropName | [in] Specifies the name of the property.
  903. //@parm VARIANT * | pvarPropValue | [in] Specifies the value of the property. If this is VT_EMPTY,
  904. // then the property is removed.
  905. //@rvalue S_OK | Success.
  906. //@rvalue S_FALSE | Success, the property was already present and its previous value was overwritten.
  907. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  908. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  909. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  910. [helpstring("Add a property.")]
  911. HRESULT Add([in] BSTR pszPropName, [in] VARIANT *pvarPropValue);
  912. //@method HRESULT | IEventPropertyBag | Remove | Remove a property.
  913. //@parm VARIANT * | pvarPropDesired | Specifies the property to remove. This is either a number
  914. // representing the one-based index of the property in the collection, or it is a string representing
  915. // the name of the property.
  916. //@rvalue S_OK | Success.
  917. //@rvalue S_FALSE | Success, the property was not present in the collection.
  918. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  919. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  920. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  921. [helpstring("Remove a property.")]
  922. HRESULT Remove([in] VARIANT *pvarPropDesired);
  923. //@method HRESULT | IEventPropertyBag | Count [propget] | Get the count of the properties.
  924. //@parm long * | plCount | [out,retval] Receives the result.
  925. //@rvalue S_OK | Success.
  926. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  927. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  928. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  929. [helpstring("Get the count of the properties."),propget]
  930. HRESULT Count([out,retval] long *plCount);
  931. //@method HRESULT | IEventPropertyBag | _NewEnum [propget] | Get an enumerator for the property names.
  932. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result, which is an object which
  933. // implements IEnumVARIANT for enumerating the names of the properties in the collection.
  934. //@rvalue S_OK | Success.
  935. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  936. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  937. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  938. [helpstring("Get an enumerator for the names of the properties."),id(DISPID_NEWENUM),propget,hidden]
  939. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  940. };
  941. //@doc EVENTS EXTERNAL
  942. /*
  943. @interface IEventBinding | Provides access to an event binding. An event binding is a single
  944. instance of a sink being bound to an event source. IEventBinding provides access to information
  945. stored in the binding database for the binding - for example, the object to be run to sink which
  946. sinks events, data stored in the binding on behalf of the sink, etc.
  947. @meth HRESULT | ID [propget] | Get the binding ID.
  948. @meth HRESULT | DisplayName [propget] | Get the display name.
  949. @meth HRESULT | DisplayName [propput] | Set the display name.
  950. @meth HRESULT | DisplayName [propputref] | Set the display name.
  951. @meth HRESULT | SinkClass [propget] | Get the sink class.
  952. @meth HRESULT | SinkClass [propput] | Set the sink class.
  953. @meth HRESULT | SinkClass [propputref] | Set the sink class.
  954. @meth HRESULT | SinkProperties [propget] | Get the sink properties.
  955. @meth HRESULT | SourceProperties [propget] | Get the source properties.
  956. @meth HRESULT | EventBindingProperties [propget] | Get the event binding properties.
  957. @meth HRESULT | Enabled [propget] | Get the enabled state.
  958. @meth HRESULT | Enabled [propput] | Set the enabled state.
  959. @meth HRESULT | Enabled [propputref] | Set the enabled state.
  960. @meth HRESULT | Expiration [propget] | Get the expiration date.
  961. @meth HRESULT | Expiration [propput] | Set the expiration date.
  962. @meth HRESULT | Expiration [propputref] | Set the expiration date.
  963. @meth HRESULT | MaxFirings [propget] | Get the maximum firings.
  964. @meth HRESULT | MaxFirings [propput] | Set the maximum firings.
  965. @meth HRESULT | MaxFirings [propputref] | Set the maximum firings.
  966. @meth HRESULT | Save | Save changes.
  967. @xref <i IEventBindings>
  968. */
  969. [
  970. dual,
  971. helpstring("Provides access to an event binding."),
  972. object,
  973. oleautomation,
  974. pointer_default(unique),
  975. uuid(8e398ce0-a64e-11d0-a9ea-00aa00685c74)
  976. ]
  977. interface IEventBinding : IDispatch
  978. {
  979. import "wtypes.idl";
  980. import "ocidl.idl";
  981. //@method HRESULT | IEventBinding | ID [propget] | Get the binding ID. The binding ID
  982. // uniquely identifies the binding, in a persistable manner.
  983. [helpstring("Get the binding ID."),propget]
  984. HRESULT ID([out,retval] BSTR *pstrBindingID);
  985. //@method HRESULT | IEventBinding | DisplayName [propget] | Get the display name.
  986. //@parm BSTR * | pstrDisplayName | [out,retval] Receives the result.
  987. //@rvalue S_OK | Success.
  988. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  989. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  990. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  991. [helpstring("Get the display name."),propget]
  992. HRESULT DisplayName([out,retval] BSTR *pstrDisplayName);
  993. //@method HRESULT | IEventBinding | DisplayName [propput] | Set the display name.
  994. //@parm BSTR | pszDisplayName | [in] Specifies the name.
  995. //@rvalue S_OK | Success.
  996. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  997. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  998. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  999. [helpstring("Set the display name."),propput]
  1000. HRESULT DisplayName([in] BSTR pszDisplayName);
  1001. //@method HRESULT | IEventBinding | DisplayName [propputref] | Set the display name.
  1002. //@parm BSTR * | ppszDisplayName | [in] Specifies the name.
  1003. //@rvalue S_OK | Success.
  1004. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1005. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1006. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1007. [helpstring("Set the display name."),propputref]
  1008. HRESULT DisplayName([in] BSTR *ppszDisplayName);
  1009. //@method HRESULT | IEventBinding | SinkClass [propget] | Get the sink class. The sink
  1010. // class is the PROGID of the object which sinks events at this binding.
  1011. //@parm BSTR * | pstrSinkClass | [out,retval] Receives the result. This is the PROGID of
  1012. // the object which sinks events in this binding.
  1013. //@rvalue S_OK | Success.
  1014. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1015. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1016. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1017. [helpstring("Get the sink class."),propget]
  1018. HRESULT SinkClass([out,retval] BSTR *pstrSinkClass);
  1019. //@method HRESULT | IEventBinding | SinkClass [propput] | Set the sink class. The sink
  1020. // class is the PROGID of the object which sinks events at this binding.
  1021. //@parm BSTR | pszSinkClass | [in] A string for the PROGID of the object which is to sink
  1022. // events in this binding.
  1023. //@rvalue S_OK | Success.
  1024. //@rvalue EVENTS_E_BADCLASS | Failure, the object class is bad.
  1025. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1026. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1027. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1028. [helpstring("Set the sink class."),propput]
  1029. HRESULT SinkClass([in] BSTR pszSinkClass);
  1030. //@method HRESULT | IEventBinding | SinkClass [propputref] | Set the sink class. The sink
  1031. // class is the PROGID of the object which sinks events at this binding.
  1032. //@parm BSTR * | ppszSinkClass | [in] A string for the PROGID of the object which is to sink
  1033. // events in this binding.
  1034. //@rvalue S_OK | Success.
  1035. //@rvalue EVENTS_E_BADCLASS | Failure, the object class is bad.
  1036. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1037. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1038. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1039. [helpstring("Set the sink class."),propputref]
  1040. HRESULT SinkClass([in] BSTR *ppszSinkClass);
  1041. //@method HRESULT | IEventBinding | SinkProperties [propget] | Get the sink properties. The sink
  1042. // properties are stored in an IEventPropertyBag, and are available to the sink when the sink is
  1043. // created.
  1044. //@parm IEventPropertyBag ** | ppSinkProperties | [out,retval] Receives the result. This object
  1045. // implements IEventPropertyBag for accessing the sink's properties.
  1046. //@rvalue S_OK | Success.
  1047. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1048. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1049. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1050. //@xref <i IEventPropertyBag>
  1051. [helpstring("Get the sink properties."),propget]
  1052. HRESULT SinkProperties([out,retval] IEventPropertyBag **ppSinkProperties);
  1053. //@method HRESULT | IEventBinding | SourceProperties [propget] | Get the source properties. The
  1054. // source properties are stored in an IEventPropertyBag, and are available to the source for
  1055. // controlling how events are signaled.
  1056. //@parm IEventPropertyBag ** | ppSourceProperties | [out,retval] Receives the result. This object
  1057. // implements IEventPropertyBag for accessing the source's properties.
  1058. //@rvalue S_OK | Success.
  1059. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1060. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1061. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1062. //@xref <i IEventPropertyBag>
  1063. [helpstring("Get the source properties."),propget]
  1064. HRESULT SourceProperties([out,retval] IEventPropertyBag **ppSourceProperties);
  1065. //@method HRESULT | IEventBinding | EventBindingProperties [propget] | Get the event binding
  1066. // properties. The event binding properties are stored in an IEventPropertyBag, and are used by the
  1067. // event system for controlling how events are handled.
  1068. //@parm IEventPropertyBag ** | ppEventBindingProperties | [out,retval] Receives the result. This
  1069. // object implements IEventPropertyBag for accessing the event binding's properties.
  1070. //@rvalue S_OK | Success.
  1071. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1072. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1073. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1074. //@xref <i IEventPropertyBag>
  1075. [helpstring("Get the event binding data."),propget]
  1076. HRESULT EventBindingProperties([out,retval] IEventPropertyBag **ppEventBindingProperties);
  1077. //@method HRESULT | IEventBinding | Enabled [propget] | Get the enabled state.
  1078. //@parm VARIANT_BOOL * | pbEnabled | [out,retval] Receives the result - VARIANT_TRUE if the binding
  1079. // is enabled, and VARIANT_FALSE if the binding is disabled.
  1080. //@rvalue S_OK | Success.
  1081. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1082. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1083. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1084. [helpstring("Get the enabled state."),propget]
  1085. HRESULT Enabled([out,retval] VARIANT_BOOL *pbEnabled);
  1086. //@method HRESULT | IEventBinding | Enabled [propput] | Set the enabled state.
  1087. //@parm VARIANT_BOOL | bEnabled | [in] Sets the enabled state - VARIANT_TRUE if the binding is to be
  1088. // enabled, and VARIANT_FALSE if the binding is to be disabled.
  1089. //@rvalue S_OK | Success.
  1090. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1091. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1092. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1093. [helpstring("Get the enabled state."),propput]
  1094. HRESULT Enabled([in] VARIANT_BOOL bEnabled);
  1095. //@method HRESULT | IEventBinding | Enabled [propputref] | Set the enabled state.
  1096. //@parm VARIANT_BOOL * | pbEnabled | [in] Sets the enabled state - VARIANT_TRUE if the binding is
  1097. // to be enabled, and VARIANT_FALSE if the binding is to be disabled.
  1098. //@rvalue S_OK | Success.
  1099. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1100. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1101. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1102. [helpstring("Get the enabled state."),propputref]
  1103. HRESULT Enabled([in] VARIANT_BOOL *pbEnabled);
  1104. //@method HRESULT | IEventBinding | Expiration [propget] | Get the expiration date.
  1105. //@parm DATE * | pdateExpiration | [out,retval] Receives the result.
  1106. //@rvalue S_OK | Success.
  1107. //@rvalue S_FALSE | Success, there is no expiration set.
  1108. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1109. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1110. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1111. [helpstring("Get the expiration date."),propget]
  1112. HRESULT Expiration([out,retval] DATE *pdateExpiration);
  1113. //@method HRESULT | IEventBinding | Expiration [propput] | Set the expiration date.
  1114. //@parm DATE | dateExpiration | [in] Specifies the expiration. Setting an expiration of 0.0 will
  1115. // remove the expiration.
  1116. //@rvalue S_OK | Success.
  1117. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1118. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1119. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1120. [helpstring("Get the expiration date."),propput]
  1121. HRESULT Expiration([in] DATE dateExpiration);
  1122. //@method HRESULT | IEventBinding | Expiration [propputref] | Set the expiration date.
  1123. //@parm DATE * | pdateExpiration | [in] Specifies the expiration. Setting an expiration of 0.0 will
  1124. // remove the expiration.
  1125. //@rvalue S_OK | Success.
  1126. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1127. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1128. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1129. [helpstring("Get the expiration date."),propputref]
  1130. HRESULT Expiration([in] DATE *pdateExpiration);
  1131. //@method HRESULT | IEventBinding | MaxFirings [propget] | Get the maximum number of firings.
  1132. //@parm long * | plMaxFirings | [out,retval] Receives the result.
  1133. //@rvalue S_OK | Success.
  1134. //@rvalue S_FALSE | Success, there is no max firings limitation.
  1135. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1136. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1137. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1138. [helpstring("Get the maximum number of firings."),propget]
  1139. HRESULT MaxFirings([out,retval] long *plMaxFirings);
  1140. //@method HRESULT | IEventBinding | MaxFirings [propput] | Set the maximum number of firings.
  1141. //@parm long | lMaxFirings | [in] Specifies the maximum number of firings. Setting a max firings
  1142. // of -1 removes the max firings setting.
  1143. //@rvalue S_OK | Success.
  1144. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1145. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1146. [helpstring("Set the maximum number of firings."),propput]
  1147. HRESULT MaxFirings([in] long lMaxFirings);
  1148. //@method HRESULT | IEventBinding | MaxFirings [propputref] | Set the maximum number of firings.
  1149. //@parm long * | plMaxFirings | [in] Specifies the maximum number of firings. Setting a max firings
  1150. // of -1 removes the max firings setting.
  1151. //@rvalue S_OK | Success.
  1152. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1153. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1154. [helpstring("Set the maximum number of firings."),propputref]
  1155. HRESULT MaxFirings([in] long *plMaxFirings);
  1156. //@method HRESULT | IEventBinding | Save | Save changes. Changes made using the
  1157. // other methods of this interface are not written to the binding database until the Save()
  1158. // method is called.
  1159. //@rvalue S_OK | Success.
  1160. //@rvalue EVENTS_E_BADCLASS | Failure, the object class is bad.
  1161. //@rvalue EVENTS_E_BADEVENTTYPE | Failure, the event type is bad.
  1162. //@rvalue EVENTS_E_BADATA | Failure, the binding contains bad data.
  1163. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1164. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1165. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1166. [helpstring("Save changes.")]
  1167. HRESULT Save();
  1168. };
  1169. //@doc EVENTS EXTERNAL
  1170. /*
  1171. @interface IEventBindings | Provides access to a collection of event bindings.
  1172. @meth HRESULT | Item | Get an event binding.
  1173. @meth HRESULT | Add | Create an event binding.
  1174. @meth HRESULT | Remove | Remove an event binding.
  1175. @meth HRESULT | Count [propget] | Get the count of the event bindings.
  1176. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the event bindings.
  1177. @xref <i IEventBinding> <om IEventBindingManager::Bindings [propget]>
  1178. */
  1179. [
  1180. dual,
  1181. helpstring("Provides access to a collection of event bindings."),
  1182. object,
  1183. oleautomation,
  1184. pointer_default(unique),
  1185. uuid(1080b910-a636-11d0-a9ea-00aa00685c74)
  1186. ]
  1187. interface IEventBindings : IDispatch
  1188. {
  1189. import "wtypes.idl";
  1190. import "ocidl.idl";
  1191. //@method HRESULT | IEventBindings | Item | Get an event binding.
  1192. //@parm VARIANT * | pvarDesired | [in] Specifies the event binding to get. This is either a
  1193. // number which is the one-based index of the binding to get, or it is a string which is the ID
  1194. // of the binding to get.
  1195. //@parm IEventBinding ** | ppEventBinding | [out,retval] Receives the result.
  1196. //@rvalue S_OK | Success.
  1197. //@rvalue S_FALSE | Success, the binding is not present in the collection. *ppEventBinding is
  1198. // set to NULL.
  1199. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1200. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1201. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1202. //@xref <om IEventBinding::ID [propget]> <i IEventBinding>
  1203. [helpstring("Get an event binding."),id(DISPID_VALUE)]
  1204. HRESULT Item([in] VARIANT *pvarDesired, [out,retval] IEventBinding **ppEventBinding);
  1205. //@method HRESULT | IEventBindings | Add | Create an event binding. The new binding object is
  1206. // not initialized or written to the binding database - after creating it, the client must call
  1207. // methods in the IEventBinding interface to initialize it, and then call the
  1208. // IEventBinding::Save method to write the new binding to the binding database.
  1209. //@parm BSTR | strBinding | [in] Specifies the ID of the binding. This is a GUID, converted
  1210. // to a string using StringFromGUID2(). If this value is NULL, or an empty string, or the value
  1211. // GUID_NULL, then a new GUID will be generated for the binding (and the IEventBinding::ID
  1212. // [propget] method may be used to retrieve it).
  1213. //@parm IEventBinding ** | ppBinding | [out,retval] Receives the new binding object.
  1214. //@rvalue S_OK | Success.
  1215. //@rvalue S_FALSE | Success, the binding was already present. *ppBinding has a pointer to the
  1216. // pre-existing binding.
  1217. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1218. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1219. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1220. //@xref <om IEventBinding::ID [propget]> <i IEventBinding>
  1221. [helpstring("Create an event binding.")]
  1222. HRESULT Add([in] BSTR strBinding, [out,retval] IEventBinding **ppBinding);
  1223. //@method HRESULT | IEventBindings | Remove | Delete an event binding.
  1224. //@parm VARIANT * | pvarDesired | [in] Specifies the event binding to remove. This is either a
  1225. // number which is the one-based index of the binding to remove, or it is a string which is the
  1226. // ID of the binding to remove.
  1227. //@rvalue S_OK | Success.
  1228. //@rvalue S_FALSE | Success, the event binding was not present in the collection.
  1229. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1230. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1231. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1232. //@xref <om IEventBinding::ID [propget]>
  1233. [helpstring("Remove an event binding.")]
  1234. HRESULT Remove([in] VARIANT *pvarDesired);
  1235. //@method HRESULT | IEventBindings | Count [propget] | Get the count of the event bindings.
  1236. //@parm long * | plCount | [out,retval] Receives the result.
  1237. //@rvalue S_OK | Success.
  1238. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1239. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1240. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1241. [helpstring("Get the count of the event bindings."),propget]
  1242. HRESULT Count([out,retval] long *plCount);
  1243. //@method HRESULT | IEventBindings | _NewEnum [propget] | Get an enumerator for the bindings.
  1244. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result. This will be an object which
  1245. // implements IEnumVARIANT to enumerate the IEventBinding interfaces of the binding objects.
  1246. //@rvalue S_OK | Success.
  1247. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1248. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1249. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1250. //@xref <i IEventBinding>
  1251. [helpstring("Get an enumerator for the bindings."),id(DISPID_NEWENUM),propget,hidden]
  1252. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  1253. };
  1254. //@doc EVENTS EXTERNAL
  1255. /*
  1256. @interface IEventTypes | Provides access to a collection of event types.
  1257. @meth HRESULT | Item | Get an event type.
  1258. @meth HRESULT | Add | Add an event type.
  1259. @meth HRESULT | Remove | Remove an event type.
  1260. @meth HRESULT | Count [propget] | Get the count of the event types.
  1261. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the event types.
  1262. @xref <i IEventType> <om IEventSourceType::EventTypes [propget]>
  1263. */
  1264. [
  1265. dual,
  1266. helpstring("Provides access to a collection of event types."),
  1267. object,
  1268. oleautomation,
  1269. pointer_default(unique),
  1270. uuid(cab29ef0-a64f-11d0-a9ea-00aa00685c74)
  1271. ]
  1272. interface IEventTypes : IDispatch
  1273. {
  1274. import "wtypes.idl";
  1275. import "ocidl.idl";
  1276. //@method HRESULT | IEventTypes | Item | Get an event type.
  1277. //@parm VARIANT * | pvarDesired | [in] Specifies the event type to get. This is either a number
  1278. // representing the one-based index into the collection of the event type to get, or it is a
  1279. // string representing the CATID (converted using the StringFromGUID2() function) of the event
  1280. // type to get.
  1281. //@parm IEventType ** | ppEventType | [out,retval] Receives the result.
  1282. //@rvalue S_OK | Success.
  1283. //@rvalue S_FALSE | Success, the item is not present. *ppEvent is NULL.
  1284. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1285. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1286. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1287. //@xref <i IEventType>
  1288. [helpstring("Get an event type."),id(DISPID_VALUE)]
  1289. HRESULT Item([in] VARIANT *pvarDesired, [out,retval] IEventType ** ppEventType);
  1290. //@method HRESULT | IEventTypes | Add | Add an event type.
  1291. //@parm BSTR | pszEventType | [in] Specifies the CATID (converted using the
  1292. // StringFromGUID2() function) of the event type to add.
  1293. //@rvalue S_OK | Success.
  1294. //@rvalue S_FALSE | Success, the event type was already registered in the source type.
  1295. //@rvalue EVENTS_E_BADEVENTTYPE | Failure, the event type is not a valid component category.
  1296. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1297. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1298. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1299. //@xref <om IEventType::ID [propget]>
  1300. [helpstring("Add an event type.")]
  1301. HRESULT Add([in] BSTR pszEventType);
  1302. //@method HRESULT | IEventTypes | Remove | Remove an event type. This method can only be called if
  1303. // this object was returned by IEventManager::EventTypes() for a particular source type.
  1304. // When called under those circumstances, this method removes the event type from the list of
  1305. // event types which the source type supports.
  1306. //@parm BSTR | pszEventType | [in] Specifies the CATID (converted using the
  1307. // StringFromGUID2() function) of the event type to remove.
  1308. //@rvalue S_OK | Success.
  1309. //@rvalue S_FALSE | Success, the event type was not registered in the source type.
  1310. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1311. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1312. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1313. //@xref <om IEventType::ID [propget]>
  1314. [helpstring("Remove an event type.")]
  1315. HRESULT Remove([in] BSTR pszEventType);
  1316. //@method HRESULT | IEventTypes | Count [propget] | Get the count of the event types.
  1317. //@parm long * | plCount | [out,retval] Receives the result.
  1318. //@rvalue S_OK | Success.
  1319. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1320. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1321. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1322. [helpstring("Get the count of the event types."),propget]
  1323. HRESULT Count([out,retval] long *plCount);
  1324. //@method HRESULT | IEventTypes | _NewEnum [propget] | Get an enumerator for the event types.
  1325. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result, which is an object which
  1326. // implements IEnumVARIANT for enumerating the IEventType interfaces of the event types in the
  1327. // collection.
  1328. //@rvalue S_OK | Success.
  1329. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1330. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1331. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1332. //@xref <i IEventType>
  1333. [helpstring("Get an enumerator for the event types."),id(DISPID_NEWENUM),propget,hidden]
  1334. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  1335. };
  1336. //@doc EVENTS EXTERNAL
  1337. /*
  1338. @interface IEventBindingManager | Provides access to an instance of a binding database.
  1339. @meth HRESULT | Bindings [propget] | Get the event bindings.
  1340. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the event types.
  1341. @xref <i IEventBindings> <i IEventBinding> <i IEventTypes> <i IEventTypes>
  1342. <om IEventSource::GetBindingManager>
  1343. */
  1344. [
  1345. dual,
  1346. helpstring("Provides access to an instance of a binding database."),
  1347. object,
  1348. oleautomation,
  1349. pointer_default(unique),
  1350. uuid(0b4cdbc0-a64f-11d0-a9ea-00aa00685c74)
  1351. ]
  1352. interface IEventBindingManager : IDispatch
  1353. {
  1354. import "wtypes.idl";
  1355. import "ocidl.idl";
  1356. //@method HRESULT | IEventBindingManager | Bindings [propget] | Get the event bindings.
  1357. //@parm BSTR | pszEventType | [in] Specifies the event type of the bindings to get. It is
  1358. // a string representation of the CATID of the event type, generated by StringFromGUID2().
  1359. //@parm IEventBindings ** | ppBindings | [out,retval] Receives the result.
  1360. //@rvalue S_OK | Success.
  1361. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1362. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1363. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1364. //@xref <i IEventBindings> <i IEventBinding>
  1365. [helpstring("Get the event bindings."),propget]
  1366. HRESULT Bindings([in] BSTR pszEventType, [out,retval] IEventBindings **ppBindings);
  1367. //@method HRESULT | IEventBindingManager | _NewEnum [propget] | Get an enumerator for the event types.
  1368. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result. This will be an object which
  1369. // implements IEnumVARIANT to enumerate the BSTR values of the event types.
  1370. [helpstring("Get an enumerator for the sinks."),id(DISPID_NEWENUM),propget,hidden]
  1371. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  1372. };
  1373. //@doc EVENTS INTERNAL
  1374. /*
  1375. @interface IEventBindingManagerCopier | Makes copies of the IEventBindingManager object.
  1376. @meth HRESULT | Copy | Make a copy of the object.
  1377. @meth HRESULT | EmptyCopy | Make an empty copy of the object.
  1378. @xref <i IEventBindingManager>
  1379. */
  1380. [
  1381. dual,
  1382. helpstring("Makes copies of the IEventBindingManager object."),
  1383. hidden,
  1384. object,
  1385. oleautomation,
  1386. pointer_default(unique),
  1387. uuid(64bad540-f88d-11d0-aa14-00aa006bc80b)
  1388. ]
  1389. interface IEventBindingManagerCopier : IDispatch
  1390. {
  1391. import "wtypes.idl";
  1392. import "ocidl.idl";
  1393. //@method HRESULT | IEventBindingManagerCopier | Copy | Make a copy of the object. The copy is
  1394. // implemented in-memory - any changes made to the copy will not affect the original.
  1395. //@parm long | lTimeout | [in] Specifies the timeout in milliseconds.
  1396. //@parm IEventBindingManager ** | ppBindingManager | [out] Receives the result.
  1397. //@rvalue S_OK | Success.
  1398. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1399. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1400. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1401. [helpstring("Make a copy of the object.")]
  1402. HRESULT Copy([in] long lTimeout, [out,retval] IEventBindingManager **ppBindingManager);
  1403. //@method HRESULT | IEventBindingManagerCopier | EmptyCopy | Make an empty copy of the object. The
  1404. // copy is implemented in-memory - any changes made to the copy will not affect the original.
  1405. //@parm IEventBindingManager ** | ppBindingManager | [out] Receives the result.
  1406. //@rvalue S_OK | Success.
  1407. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1408. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1409. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1410. [helpstring("Make an empty copy of the object.")]
  1411. HRESULT EmptyCopy([out,retval] IEventBindingManager **ppBindingManager);
  1412. }
  1413. interface IEventDispatcher;
  1414. //@doc EVENTS INTERNAL
  1415. /*
  1416. @interface IEventRouter | Event router.
  1417. @meth HRESULT | Database [propget] | Get the binding database.
  1418. @meth HRESULT | Database [propput] | Set the binding database.
  1419. @meth HRESULT | Database [propputref] | Set the binding database.
  1420. @meth HRESULT | GetDispatcher | Get the dispatcher for an event type.
  1421. @meth HRESULT | GetDispatcherByCLSID | Get the dispatcher for an event type.
  1422. @meth HRESULT | GetDispatcherByClassFactory | Get the dispatcher for an event type.
  1423. */
  1424. [
  1425. helpstring("Event router."),
  1426. hidden,
  1427. object,
  1428. pointer_default(unique),
  1429. uuid(1a00b970-eda0-11d0-aa10-00aa006bc80b)
  1430. ]
  1431. interface IEventRouter : IUnknown
  1432. {
  1433. import "wtypes.idl";
  1434. import "ocidl.idl";
  1435. //@method HRESULT | IEventRouter | Database [propget] | Get the binding database.
  1436. //@parm IEventBindingManager ** | ppBindingManager | [out,retval] Receives the value. Will be NULL
  1437. // if the value has never been set.
  1438. //@rvalue S_OK | Success.
  1439. //@xref <om IEventRouter.Database [propput]>
  1440. [helpstring("Get the binding database."),propget]
  1441. HRESULT Database([out,retval] IEventBindingManager **ppBindingManager);
  1442. //@method HRESULT | IEventRouter | Database [propput] | Set the binding database.
  1443. //@parm IEventBindingManager * | pBindingManager | [in,unique] Specifies the value.
  1444. //@rvalue S_OK | Success.
  1445. //@xref <om IEventRouter.Database [propget]> <om IEventRouter.Database [propputref]>
  1446. [helpstring("Set the binding database."),propput]
  1447. HRESULT Database([in,unique] IEventBindingManager *pBindingManager);
  1448. //@method HRESULT | IEventRouter | Database [propputref] | Set the binding database.
  1449. //@parm IEventBindingManager ** | ppBindingManager | [in,unique] Specifies the value.
  1450. //@rvalue S_OK | Success.
  1451. //@xref <om IEventRouter.Database [propget]> <om IEventRouter.Database [propput]>
  1452. [helpstring("Set the binding database."),propputref]
  1453. HRESULT Database([in,unique] IEventBindingManager **ppBindingManager);
  1454. //@method HRESULT | IEventRouter | GetDispatcher | Get the dispatcher for an event type. If the
  1455. // dispatcher is present in the cache, then the cached instance is returned. If it is not present
  1456. // in the cache, then a new one is created - if the newly created instance supports the
  1457. // IEventDispatcher interface, then IEventDispatcher::SetContext is called on the newly created
  1458. // instance before the object is returned to the client.
  1459. //@parm REFIID | iidEvent | [in] Specifies the type of event.
  1460. //@parm REFIID | iidDesired | [in] Specifies the interface desired.
  1461. //@parm IUnknown ** | ppUnkResult | [out,iid_is(iidDesired),retval] Receives the result.
  1462. //@rvalue S_OK | Success.
  1463. //@rvalue E_POINTER | Failure, bad pointer value.
  1464. [helpstring("Get the dispatcher for an event type.")]
  1465. HRESULT GetDispatcher([in] REFIID iidEvent,
  1466. [in] REFIID iidDesired,
  1467. [out,iid_is(iidDesired),retval] IUnknown **ppUnkResult);
  1468. //@method HRESULT | IEventRouter | GetDispatcherByCLSID | Get the dispatcher for an event type. If
  1469. // the dispatcher is present in the cache, then the cached instance is returned. If it is not
  1470. // present in the cache, then a new one is created - if the newly created instance supports the
  1471. // IEventDispatcher interface, then IEventDispatcher::SetContext is called on the newly created
  1472. // instance before the object is returned to the client.
  1473. //@parm REFCLSID | clsidDispatcher | [in] Specifies the CLSID of the dispatcher to load.
  1474. //@parm REFIID | iidEvent | [in] Specifies the type of event.
  1475. //@parm REFIID | iidDesired | [in] Specifies the interface desired.
  1476. //@parm IUnknown ** | ppUnkResult | [out,iid_is(iidDesired),retval] Receives the result.
  1477. //@rvalue S_OK | Success.
  1478. //@rvalue E_POINTER | Failure, bad pointer value.
  1479. [helpstring("Get the dispatcher for an event type.")]
  1480. HRESULT GetDispatcherByCLSID([in] REFCLSID clsidDispatcher,
  1481. [in] REFIID iidEvent,
  1482. [in] REFIID iidDesired,
  1483. [out,iid_is(iidDesired),retval] IUnknown **ppUnkResult);
  1484. //@method HRESULT | IEventRouter | GetDispatcherByClassFactory | Get the dispatcher for an event
  1485. // type. If the dispatcher is present in the cache, then the caches instance is returned. If it is
  1486. // not present in the cache, then a new one is created - if the newly created instance supports the
  1487. // IEventDispatcher interface, then IEventDispatcher::SetContext is called on the newly created
  1488. // instance before the object is returned to the client.
  1489. //@parm REFCLSID | clsidDispatcher | [in] Specifies the CLSID of the dispatcher to load. If a
  1490. // dispatcher with this CLSID is not already loaded, then the piClassFactory object is used to create
  1491. // one.
  1492. //@parm IClassFactory * | piClassFactory | [in] Specifies the class factory which is to be used if
  1493. // the dispatcher needs to be created.
  1494. //@parm REFIID | iidEvent | [in] Specifies the type of event.
  1495. //@parm REFIID | iidDesired | [in] Specifies the interface desired.
  1496. //@parm IUnknown ** | ppUnkResult | [out,iid_is(iidDesired),retval] Receives the result.
  1497. //@rvalue S_OK | Success.
  1498. //@rvalue E_POINTER | Failure, bad pointer value.
  1499. [helpstring("Get the dispatcher for an event type.")]
  1500. HRESULT GetDispatcherByClassFactory([in] REFCLSID clsidDispatcher,
  1501. [in] IClassFactory *piClassFactory,
  1502. [in] REFIID iidEvent,
  1503. [in] REFIID iidDesired,
  1504. [out,iid_is(iidDesired),retval] IUnknown **ppUnkResult);
  1505. };
  1506. //@doc EVENTS EXTERNAL
  1507. /*
  1508. @interface IEventDispatcher | Dispatches an event.
  1509. @meth HRESULT | SetContext | Sets the object's context.
  1510. */
  1511. [
  1512. helpstring("Dispatches an event."),
  1513. hidden,
  1514. object,
  1515. pointer_default(unique),
  1516. uuid(c980f550-ed9e-11d0-aa10-00aa006bc80b)
  1517. ]
  1518. interface IEventDispatcher : IUnknown
  1519. {
  1520. import "wtypes.idl";
  1521. import "ocidl.idl";
  1522. //@method HRESULT | IEventDispatcher | SetContext | Sets the object's context.
  1523. //@parm REFGUID | guidEventType | [in] Specifies the event type.
  1524. //@parm IEventRouter * | piRouter | [in] Specifies the router.
  1525. //@parm IEventBindings * | pBindings | [in] Specifies the bindings.
  1526. [helpstring("Sets the object's context.")]
  1527. HRESULT SetContext([in] REFGUID guidEventType, [in] IEventRouter *piRouter, [in] IEventBindings *pBindings);
  1528. };
  1529. interface IEventSourceType;
  1530. //@doc EVENTS EXTERNAL
  1531. /*
  1532. @interface IEventSource | Provides information about an event source.
  1533. @meth HRESULT | ID [propget] | Get the ID.
  1534. @meth HRESULT | DisplayName [propget] | Get the display name.
  1535. @meth HRESULT | DisplayName [propput] | Set the display name.
  1536. @meth HRESULT | DisplayName [propputref] | Set the display name.
  1537. @meth HRESULT | BindingManagerMoniker [propget] | Get the moniker for the binding manager.
  1538. @meth HRESULT | BindingManagerMoniker [propput] | Set the moniker for the binding manager.
  1539. @meth HRESULT | BindingManagerMoniker [propputref] | Set the moniker for the binding manager.
  1540. @meth HRESULT | GetBindingManager | Get the binding manager.
  1541. @meth HRESULT | Save | Save changes.
  1542. @xref <i IEventSourceType>
  1543. */
  1544. [
  1545. dual,
  1546. helpstring("Provides information about an event source."),
  1547. object,
  1548. oleautomation,
  1549. pointer_default(unique),
  1550. uuid(b1dcb040-a652-11d0-a9ea-00aa00685c74)
  1551. ]
  1552. interface IEventSource : IDispatch
  1553. {
  1554. import "wtypes.idl";
  1555. import "ocidl.idl";
  1556. //@method HRESULT | IEventSource | ID [propget] | Get the ID.
  1557. //@parm BSTR * | pstrID | [out,retval] Receives the result. This is the GUID for the event
  1558. // source, converted to a string using the StringFromGUID2() function.
  1559. //@rvalue S_OK | Success.
  1560. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1561. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1562. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1563. [helpstring("Get the ID."),propget]
  1564. HRESULT ID([out,retval] BSTR *pstrID);
  1565. //@method HRESULT | IEventSource | DisplayName [propget] | Get the display name.
  1566. //@parm BSTR * | pstrDisplayName | [out,retval] Receives the result.
  1567. //@rvalue S_OK | Success.
  1568. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1569. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1570. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1571. [helpstring("Get the display name."),propget]
  1572. HRESULT DisplayName([out,retval] BSTR *pstrDisplayName);
  1573. //@method HRESULT | IEventSource | DisplayName [propput] | Set the display name.
  1574. //@parm BSTR | pszDisplayName | [in] Specifies the name.
  1575. //@rvalue S_OK | Success.
  1576. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1577. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1578. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1579. [helpstring("Set the display name."),propput]
  1580. HRESULT DisplayName([in] BSTR pszDisplayName);
  1581. //@method HRESULT | IEventSource | DisplayName [propputref] | Set the display name.
  1582. //@parm BSTR * | ppszDisplayName | [in] Specifies the name.
  1583. //@rvalue S_OK | Success.
  1584. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1585. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1586. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1587. [helpstring("Set the display name."),propputref]
  1588. HRESULT DisplayName([in] BSTR *ppszDisplayName);
  1589. //@method HRESULT | IEventSource | BindingManagerMoniker [propget] | Get the moniker for the
  1590. // binding manager.
  1591. //@parm IUnknown ** | ppUnkMoniker | [out,retval] Receives the result.
  1592. //@rvalue S_OK | Success.
  1593. //@rvalue EVENTS_E_BADDATA | Failure, the moniker for the binding manager has not been set.
  1594. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1595. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1596. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1597. //@xref <i IEventBindingManager> <om IEventSource::GetBindingManager>
  1598. [helpstring("Get the moniker for the binding manager."),propget]
  1599. HRESULT BindingManagerMoniker([out,retval] IUnknown **ppUnkMoniker);
  1600. //@method HRESULT | IEventSource | BindingManagerMoniker [propput] | Set the moniker for the
  1601. // binding manager.
  1602. //@parm IUnknown * | pUnkMoniker | [in] Specifies the value.
  1603. //@rvalue S_OK | Success.
  1604. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1605. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1606. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1607. //@xref <i IEventBindingManager> <om IEventSource::GetBindingManager>
  1608. [helpstring("Set the moniker for the binding manager."),propput]
  1609. HRESULT BindingManagerMoniker([in] IUnknown *pUnkMoniker);
  1610. //@method HRESULT | IEventSource | BindingManagerMoniker [propputref] | Set the moniker for the
  1611. // binding manager.
  1612. //@parm IUnknown ** | ppUnkMoniker | [in] Specifies the value.
  1613. //@rvalue S_OK | Success.
  1614. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1615. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1616. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1617. //@xref <i IEventBindingManager> <om IEventSource::GetBindingManager>
  1618. [helpstring("Set the moniker for the binding manager."),propputref]
  1619. HRESULT BindingManagerMoniker([in] IUnknown **ppUnkMoniker);
  1620. //@method HRESULT | IEventSource | GetBindingManager | Get the binding manager. This function is
  1621. // the equivalent of calling the BindingManagerMoniker() [propget] method, and then calling
  1622. // the IMoniker::BindToObject() method on the moniker.
  1623. //@parm IEventBindingManager ** | ppBindingManager | [out,retval] Receives the result.
  1624. //@rvalue S_OK | Success.
  1625. //@rvalue EVENTS_E_BADDATA | Failure, the moniker for the binding manager has not been set.
  1626. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1627. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1628. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1629. //@xref <om IEventSource::BindingManagerMoniker [propget]> <i IEventBindingManager>
  1630. [helpstring("Get the binding manager.")]
  1631. HRESULT GetBindingManager([out,retval] IEventBindingManager **ppBindingManager);
  1632. // @method HRESULT | IEventSource | Properties [propget] | Get the source properties.
  1633. //@parm IEventPropertyBag ** | ppProperties | [out,retval] Receives the result.
  1634. //@rvalue S_OK | Success.
  1635. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1636. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1637. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1638. [helpstring("Get the source properties."), propget]
  1639. HRESULT Properties([out,retval] IEventPropertyBag **ppProperties);
  1640. //@method HRESULT | IEventSource | Save | Save changes. Changes made with the other methods on
  1641. // this interface do not take effect until this method is called.
  1642. //@rvalue S_OK | Success.
  1643. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1644. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1645. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1646. [helpstring("Save changes.")]
  1647. HRESULT Save();
  1648. };
  1649. //@doc EVENTS EXTERNAL
  1650. /*
  1651. @interface IEventSources | Provides access to a collection of event sources.
  1652. @meth HRESULT | Item | Get a source.
  1653. @meth HRESULT | Add | Create a source.
  1654. @meth HRESULT | Remove | Remove a source.
  1655. @meth HRESULT | Count [propget] | Get the count of the sources.
  1656. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the sources.
  1657. @xref <i IEventSource>
  1658. */
  1659. [
  1660. dual,
  1661. helpstring("Provides access to a collection of event sources."),
  1662. object,
  1663. oleautomation,
  1664. pointer_default(unique),
  1665. uuid(73e8c930-a652-11d0-a9ea-00aa00685c74)
  1666. ]
  1667. interface IEventSources : IDispatch
  1668. {
  1669. import "wtypes.idl";
  1670. import "ocidl.idl";
  1671. //@method HRESULT | IEventSources | Item | Get a source.
  1672. //@parm VARIANT * | pvarDesired | [out,retval] Specifies the source to get. This is either a
  1673. // number representing the one-based index of the desired source in the collection, or it is a
  1674. // string representing the GUID of the source (presumably converted using the StringFromGUID2()
  1675. // function).
  1676. //@parm IEventSource ** | ppSource | [out,retval] Receives the result.
  1677. //@rvalue S_OK | Success.
  1678. //@rvalue S_FALSE | Success, the item was not present. *ppSource is NULL.
  1679. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1680. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1681. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1682. //@xref <i IEventSource>
  1683. [helpstring("Get a source."),id(DISPID_VALUE)]
  1684. HRESULT Item([in] VARIANT *pvarDesired, [out,retval] IEventSource **ppSource);
  1685. //@method HRESULT | IEventSources | Add | Create a source. This method creates an unitialized
  1686. // source - the client must call methods on the resulting IEventSource interface to set
  1687. // properties for the new source, and then must call IEventSource::Save() to save the new source.
  1688. //@parm BSTR | pszSource | [in] Specifies the ID of the new source. This must be a GUID,
  1689. // converted to a string using the StringFromGUID2() function. If this value is NULL, or an
  1690. // empty string, or GUID_NULL, then a new GUID will be generated for the source (and the
  1691. // IEventSource::ID() [propget] method can be used to retrieve it).
  1692. //@parm IEventSource ** | ppSource | [out,retval] Receives the result.
  1693. //@rvalue S_OK | Success.
  1694. //@rvalue S_FALSE | Success, the source already existed. A pointer to the pre-existing source is
  1695. // returned.
  1696. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1697. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1698. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1699. //@xref <i IEventSource> <om IEventSource::ID [propget]>
  1700. [helpstring("Create a source.")]
  1701. HRESULT Add([in] BSTR pszSource, [out,retval] IEventSource **ppSource);
  1702. //@method HRESULT | IEventSources | Remove | Remove a source.
  1703. //@parm VARIANT * | pvarDesired | [in] Specifies the source to remove. This must be a GUID,
  1704. // converted to a string using the StringFromGUID2() function.
  1705. //@rvalue S_OK | Success.
  1706. //@rvalue S_FALSE | Success, the source didn't exist.
  1707. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1708. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1709. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1710. //@xref <om IEventSource::ID [propget]>
  1711. [helpstring("Remove a source.")]
  1712. HRESULT Remove([in] VARIANT *pvarDesired);
  1713. //@method HRESULT | IEventSources | Count [propget] | Get the count of the sources.
  1714. //@parm long * | plCount | [out,retval] Receives the result.
  1715. //@rvalue S_OK | Success.
  1716. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1717. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1718. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1719. [helpstring("Get the count of the sources."),propget]
  1720. HRESULT Count([out,retval] long *plCount);
  1721. //@method HRESULT | IEventSources | _NewEnum [propget] | Get an enumerator for the sources.
  1722. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result, which is an object which
  1723. // implements IEnumVARIANT for enumerating the IEventSource interfaces of the event types in the
  1724. // collection.
  1725. //@rvalue S_OK | Success.
  1726. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1727. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1728. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1729. //@xref <i IEventSource>
  1730. [helpstring("Get an enumerator for the sources."),id(DISPID_NEWENUM),propget,hidden]
  1731. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  1732. };
  1733. //@doc EVENTS EXTERNAL
  1734. /*
  1735. @interface IEventSourceType | Provides access to information about a source type.
  1736. @meth HRESULT | ID [propget] | Get the ID.
  1737. @meth HRESULT | DisplayName [propget] | Get the display name.
  1738. @meth HRESULT | DisplayName [propput] | Set the display name.
  1739. @meth HRESULT | DisplayName [propputref] | Set the display name.
  1740. @meth HRESULT | EventTypes [propget] | Get the event types.
  1741. @meth HRESULT | Sources [propget] | Get the sources.
  1742. @meth HRESULT | Save | Save changes.
  1743. @xref <i IEventSources> <om IEventSourceType::Sources [propget]>
  1744. */
  1745. [
  1746. dual,
  1747. helpstring("Provides access to information about a source type."),
  1748. object,
  1749. oleautomation,
  1750. pointer_default(unique),
  1751. uuid(063a62e0-a652-11d0-a9ea-00aa00685c74)
  1752. ]
  1753. interface IEventSourceType : IDispatch
  1754. {
  1755. import "wtypes.idl";
  1756. import "ocidl.idl";
  1757. //@method HRESULT | IEventSourceType | ID [propget] | Get the ID.
  1758. //@parm BSTR * | pstrID | [out,retval] Receives the result. This will be the GUID of the
  1759. // source type, converted to a string using the StringFromGUID2() function.
  1760. //@rvalue S_OK | Success.
  1761. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1762. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1763. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1764. [helpstring("Get the ID."),propget]
  1765. HRESULT ID([out,retval] BSTR *pstrID);
  1766. //@method HRESULT | IEventSourceType | DisplayName [propget] | Get the display name.
  1767. //@parm BSTR * | pstrDisplayName | [out,retval] Receives the result.
  1768. //@rvalue S_OK | Success.
  1769. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1770. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1771. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1772. [helpstring("Get the display name."),propget]
  1773. HRESULT DisplayName([out,retval] BSTR *pstrDisplayName);
  1774. //@method HRESULT | IEventSourceType | DisplayName [propput] | Set the display name.
  1775. //@parm BSTR | pszDisplayName | [in] Specifies the value.
  1776. //@rvalue S_OK | Success.
  1777. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1778. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1779. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1780. [helpstring("Set the display name."),propput]
  1781. HRESULT DisplayName([in] BSTR pszDisplayName);
  1782. //@method HRESULT | IEventSourceType | DisplayName [propputref] | Set the display name.
  1783. //@parm BSTR * | ppszDisplayName | [in] Specifies the value.
  1784. //@rvalue S_OK | Success.
  1785. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1786. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1787. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1788. [helpstring("Set the display name."),propputref]
  1789. HRESULT DisplayName([in] BSTR *ppszDisplayName);
  1790. //@method HRESULT | IEventSourceType | EventTypes [propget] | Get the event types.
  1791. //@parm IEventTypes ** | ppEventTypes | [out,retval] Receives the result.
  1792. //@rvalue S_OK | Success.
  1793. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1794. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1795. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1796. //@xref <i IEventTypes> <i IEventType>
  1797. [helpstring("Get the event types."),propget]
  1798. HRESULT EventTypes([out,retval] IEventTypes **ppEventTypes);
  1799. //@method HRESULT | IEventSourceType | Sources [propget] | Get the event sources.
  1800. //@parm IEventSources ** | ppSources | [out,retval] Receives the result.
  1801. //@rvalue S_OK | Success.
  1802. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1803. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1804. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1805. //@xref <i IEventSources> <i IEventSource>
  1806. [helpstring("Get the event sources."),propget]
  1807. HRESULT Sources([out,retval] IEventSources **ppSources);
  1808. //@method HRESULT | IEventSourceType | Save | Save changes. Changes made with the other methods on
  1809. // this interface do not take effect until this method is called.
  1810. //@rvalue S_OK | Success.
  1811. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1812. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1813. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1814. [helpstring("Save changes.")]
  1815. HRESULT Save();
  1816. };
  1817. //@doc EVENTS EXTERNAL
  1818. /*
  1819. @interface IEventSourceTypes | Provides access to a collection of event source types.
  1820. @meth HRESULT | Item | Get a source type.
  1821. @meth HRESULT | Add | Create a source type.
  1822. @meth HRESULT | Remove | Remove a source type.
  1823. @meth HRESULT | Count [propget] | Get the count of the source types.
  1824. @meth HRESULT | _NewEnum [propget] | Get an enumerator for the source types.
  1825. @xref <i IEventSourceType> <om IEventManager::SourceTypes [propget]>
  1826. */
  1827. [
  1828. dual,
  1829. helpstring("Provides access to a collection of event source types."),
  1830. object,
  1831. oleautomation,
  1832. pointer_default(unique),
  1833. uuid(caf30fd0-a651-11d0-a9ea-00aa00685c74)
  1834. ]
  1835. interface IEventSourceTypes : IDispatch
  1836. {
  1837. import "wtypes.idl";
  1838. import "ocidl.idl";
  1839. //@method HRESULT | IEventSourceTypes | Item | Get a source type.
  1840. //@parm VARIANT * | pvarDesired | [in] Specifies the source type to get. This is either a number
  1841. // representing the one-based index of the source type in the collection, or it is the GUID of
  1842. // source type, converted to a string using the StringFromGUID2() function.
  1843. //@parm IEventSourceType ** | ppSourceType | [out,retval] Receives the result.
  1844. //@rvalue S_OK | Success.
  1845. //@rvalue S_FALSE | Success, the item is not present. *ppSourceType is NULL.
  1846. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1847. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1848. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1849. //@xref <i IEventSourceType>
  1850. [helpstring("Get a source type."),id(DISPID_VALUE)]
  1851. HRESULT Item([in] VARIANT *pvarDesired, [out,retval] IEventSourceType **ppSourceType);
  1852. //@method HRESULT | IEventSourceTypes | Add | Add a source type.
  1853. //@parm BSTR | pszSourceType | [in] Specifies the ID for the new source type. This is a
  1854. // GUID, converted to a string using the StringFromGUID2() function. If this value is NULL, or
  1855. // an empty string, or GUID_NULL, then a new GUID will be generated for the source type (and can
  1856. // be retrieved using the IEventSourceType::ID() method).
  1857. //@parm IEventSourceType ** | ppSourceType | [out,retval] Receives the result.
  1858. //@rvalue S_OK | Success.
  1859. //@rvalue S_FALSE | Success, the source type already existed, and a pointer to the pre-existing
  1860. // type is returned.
  1861. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1862. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1863. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1864. //@xref <i IEventSourceType>
  1865. [helpstring("Create a source type.")]
  1866. HRESULT Add([in] BSTR pszSourceType, [out,retval] IEventSourceType **ppSourceType);
  1867. //@method HRESULT | IEventSourceTypes | Remove | Remove a source type.
  1868. //@parm VARIANT * | pvarDesired | [in] Specifies the source type to remove. This must be a GUID,
  1869. // converted to a string using the StringFromGUID2() function.
  1870. //@rvalue S_OK | Success.
  1871. //@rvalue S_FALSE | Success, the source didn't exist.
  1872. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1873. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1874. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1875. [helpstring("Remove a source type.")]
  1876. HRESULT Remove([in] VARIANT *pvarDesired);
  1877. //@method HRESULT | IEventSourceTypes | Count [propget] | Get the count of the source types.
  1878. //@parm long * | plCount | [out,retval] Receives the result.
  1879. //@rvalue S_OK | Success.
  1880. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1881. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1882. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1883. [helpstring("Get the count of the source types."),propget]
  1884. HRESULT Count([out,retval] long *plCount);
  1885. //@method HRESULT | IEventSourceTypes | _NewEnum [propget] | Get an enumerator for the source types.
  1886. //@parm IUnknown ** | ppUnkEnum | [out,retval] Receives the result, which is an object which
  1887. // implements IEnumVARIANT for enumerating the IEventSourceType interfaces of the event types in
  1888. // the collection.
  1889. //@rvalue S_OK | Success.
  1890. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1891. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1892. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1893. //@xref <i IEventSourceType>
  1894. [helpstring("Get an enumerator for the source types."),id(DISPID_NEWENUM),propget,hidden]
  1895. HRESULT _NewEnum([out,retval] IUnknown **ppUnkEnum);
  1896. };
  1897. //@doc EVENTS EXTERNAL
  1898. /*
  1899. @interface IEventManager | Provides access to registered source types, and facilities for firing
  1900. events.
  1901. @meth HRESULT | SourceTypes [propget] | Get the source types.
  1902. @meth HRESULT | CreateSink | Creates an event sink from an event binding.
  1903. @xref <i IEventSourceTypes> <i IEventSourceType>
  1904. */
  1905. [
  1906. dual,
  1907. helpstring("Provides access to registered source types, and facilities for firing events."),
  1908. object,
  1909. oleautomation,
  1910. pointer_default(unique),
  1911. uuid(5f6012b0-a651-11d0-a9ea-00aa00685c74)
  1912. ]
  1913. interface IEventManager : IDispatch
  1914. {
  1915. import "wtypes.idl";
  1916. import "ocidl.idl";
  1917. //@method HRESULT | IEventManager | SourceTypes [propget] | Get the source types.
  1918. //@parm IEventSourceTypes ** | ppSourceTypes | [out,retval] Receives the result.
  1919. //@rvalue S_OK | Success.
  1920. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1921. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1922. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1923. //@xref <i IEventSourceTypes> <i IEventSourceType> <i IEventType>
  1924. [helpstring("Get the source types."),propget]
  1925. HRESULT SourceTypes([out,retval] IEventSourceTypes **ppSourceTypes);
  1926. //@method HRESULT | IEventManager | CreateSink | Creates a sink for a binding.
  1927. //@parm IEventBinding * | pBinding | [in,unique] Specifies the binding to create the sink for.
  1928. //@parm IEventDeliveryOptions * | pDeliveryOptions | [in,unique] Specifies the options for firing
  1929. // the event to this sink. If this value is NULL, then default options are used.
  1930. //@parm IUnknown ** | ppUnkSink | [out,retval] Receives the result.
  1931. //@rvalue S_OK | Success.
  1932. //@rvalue EVENTS_E_DISABLED | Failure, the binding is disabled.
  1933. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1934. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1935. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1936. [helpstring("Creates a sink for a binding.")]
  1937. HRESULT CreateSink([in,unique] IEventBinding *pBinding,
  1938. [in,unique] IEventDeliveryOptions *pDeliveryOptions,
  1939. [out,retval] IUnknown **ppUnkSink);
  1940. };
  1941. //@doc EVENTS INTERNAL
  1942. /*
  1943. @interface IEventDatabasePlugin | Provides facilities for pluggable binding database stores.
  1944. @meth HRESULT | Database [propget] | Get the binding database.
  1945. @meth HRESULT | Database [propput] | Set the binding database.
  1946. @meth HRESULT | Database [propputref] | Set the binding database.
  1947. @meth HRESULT | Name [propget] | Get the name.
  1948. @meth HRESULT | Name [propput] | Set the name.
  1949. @meth HRESULT | Name [propputref] | Set the name.
  1950. @meth HRESULT | Parent [propget] | Get the parent.
  1951. @meth HRESULT | Parent [propput] | Set the parent.
  1952. @meth HRESULT | Parent [propputref] | Set the parent.
  1953. */
  1954. [
  1955. helpstring("Provides facilities for pluggable binding database stores."),
  1956. hidden,
  1957. object,
  1958. oleautomation,
  1959. pointer_default(unique),
  1960. uuid(4915fb10-af97-11d0-a9eb-00aa00685c74)
  1961. ]
  1962. interface IEventDatabasePlugin : IUnknown
  1963. {
  1964. import "wtypes.idl";
  1965. import "ocidl.idl";
  1966. //@method HRESULT | IEventDatabasePlugin | Database [propget] | Get the binding database.
  1967. //@parm IEventPropertyBag ** | ppDatabase | [out,retval] Receives the result.
  1968. //@rvalue S_OK | Success.
  1969. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1970. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1971. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1972. [helpstring("Get the binding database."),propget]
  1973. HRESULT Database([out,retval] IEventPropertyBag **ppDatabase);
  1974. //@method HRESULT | IEventDatabasePlugin | Database [propput] | Set the binding database.
  1975. //@parm IEventPropertyBag * | pDatabase | [in] Specifies the binding database.
  1976. //@rvalue S_OK | Success.
  1977. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1978. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1979. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1980. [helpstring("Set the binding database."),propput]
  1981. HRESULT Database([in] IEventPropertyBag *pDatabase);
  1982. //@method HRESULT | IEventDatabasePlugin | Database [propputref] | Set the binding database.
  1983. //@parm IEventPropertyBag ** | ppDatabase | [in] Specifies the binding database.
  1984. //@rvalue S_OK | Success.
  1985. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1986. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1987. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1988. [helpstring("Set the binding database."),propputref]
  1989. HRESULT Database([in] IEventPropertyBag **ppDatabase);
  1990. //@method HRESULT | IEventDatabasePlugin | Name [propget] | Get the name.
  1991. //@parm BSTR * | pstrName | [out,retval] Receives the result.
  1992. //@rvalue S_OK | Success.
  1993. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  1994. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  1995. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  1996. [helpstring("Get the name."),propget]
  1997. HRESULT Name([out,retval] BSTR *pstrName);
  1998. //@method HRESULT | IEventDatabasePlugin | Name [propput] | Set the name.
  1999. //@parm BSTR | strName | [in] Specifies the name.
  2000. //@rvalue S_OK | Success.
  2001. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2002. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2003. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2004. [helpstring("Set the name."),propput]
  2005. HRESULT Name([in] BSTR strName);
  2006. //@method HRESULT | IEventDatabasePlugin | Name [propputref] | Set the name.
  2007. //@parm BSTR * | pstrName | [in] Specifies the name.
  2008. //@rvalue S_OK | Success.
  2009. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2010. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2011. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2012. [helpstring("Set the name."),propputref]
  2013. HRESULT Name([in] BSTR *pstrName);
  2014. //@method HRESULT | IEventDatabasePlugin | Parent [propget] | Get the parent.
  2015. //@parm IEventPropertyBag ** | ppParent | [out,retval] Receives the result.
  2016. //@rvalue S_OK | Success.
  2017. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2018. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2019. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2020. [helpstring("Get the parent."),propget]
  2021. HRESULT Parent([out,retval] IEventPropertyBag **ppParent);
  2022. //@method HRESULT | IEventDatabasePlugin | Parent [propput] | Set the Parent.
  2023. //@parm IEventPropertyBag * | pDatabase | [in] Specifies the parent.
  2024. //@rvalue S_OK | Success.
  2025. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2026. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2027. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2028. [helpstring("Set the parent."),propput]
  2029. HRESULT Parent([in] IEventPropertyBag *pParent);
  2030. //@method HRESULT | IEventDatabasePlugin | Parent [propputref] | Set the parent.
  2031. //@parm IEventPropertyBag ** | ppDatabase | [in] Specifies the parent.
  2032. //@rvalue S_OK | Success.
  2033. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2034. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2035. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2036. [helpstring("Set the parent."),propputref]
  2037. HRESULT Parent([in] IEventPropertyBag **ppParent);
  2038. };
  2039. //@doc EVENTS EXTERNAL
  2040. /*
  2041. @interface IEventDatabaseManager | Provides facilities for managing a binding database.
  2042. @meth HRESULT | CreateDatabase | Create a moniker for a database.
  2043. @meth HRESULT | EraseDatabase | Remove all of the information in a database.
  2044. @meth HRESULT | MakeVServerPath | Formats a service name and instance number into a complete path.
  2045. @meth HRESULT | MakeVRootPath | Formats a service name, instance number, and virtual root into a complete path.
  2046. */
  2047. [
  2048. helpstring("Provides facilities for managing a binding database."),
  2049. object,
  2050. oleautomation,
  2051. pointer_default(unique),
  2052. uuid(adc25b30-cbd8-11d0-a9f8-00aa00685c74)
  2053. ]
  2054. interface IEventDatabaseManager : IDispatch
  2055. {
  2056. import "wtypes.idl";
  2057. import "ocidl.idl";
  2058. //@method HRESULT | IEventDatabaseManager | CreateDatabase | Create a moniker for a database.
  2059. //@parm BSTR | strPath | [in] Specifies the complete path to the database.
  2060. //@parm IUnknown ** | ppMonDatabase | [out,retval] Receives the moniker - this object implements the
  2061. // IMoniker interface. Calling the moniker's IMoniker::BindToObject method yields an object which
  2062. // provides access to the database.
  2063. //@rvalue S_OK | Success.
  2064. //@rvalue S_FALSE | Success, the database already existed.
  2065. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2066. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2067. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2068. [helpstring("Create a moniker for a database.")]
  2069. HRESULT CreateDatabase([in] BSTR strPath, [out,retval] IUnknown **ppMonDatabase);
  2070. //@method HRESULT | IEventDatabaseManager | EraseDatabase | Remove all of the information in a
  2071. // database.
  2072. //@parm BSTR | strPath | [in] Specifies the complete path to the database.
  2073. //@rvalue S_OK | Success.
  2074. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2075. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2076. //@rvalue E_ACCESSDENIED | Failure, access is denied.
  2077. [helpstring("Remove all of the information in a database.")]
  2078. HRESULT EraseDatabase([in] BSTR strPath);
  2079. //@method HRESULT | IEventDatabaseManager | MakeVServerPath | Formats a service name and instance
  2080. // number into a complete path.
  2081. //@parm BSTR | strService | [in] Specifies the service name.
  2082. //@parm long | lInstance | [in] Specifies the service instance.
  2083. //@parm BSTR * | pstrPath | [out,retval] Receives the complete path.
  2084. //@rvalue S_OK | Success.
  2085. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2086. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2087. //@rvalue E_INVALIDARG | Failure, the strService is in a bad format, or lInstance is out of bounds.
  2088. [helpstring("Formats a service name and instance number into a complete path.")]
  2089. HRESULT MakeVServerPath([in] BSTR strService, [in] long lInstance, [out,retval] BSTR *pstrPath);
  2090. //@method HRESULT | IEventDatabaseManager | MakeVRootPath | Formats a service name, instance number,
  2091. // and virtual root into a complete path.
  2092. //@parm BSTR | strService | [in] Specifies the service name.
  2093. //@parm long | lInstance | [in] Specifies the service instance.
  2094. //@parm BSTR | strRoot | [in] Specifies the virtual root.
  2095. //@parm BSTR * | pstrPath | [out,retval] Receives the complete path.
  2096. //@rvalue S_OK | Success.
  2097. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2098. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2099. //@rvalue E_INVALIDARG | Failure, the strService or strRoot is in a bad format, or lInstance is out
  2100. // of bounds.
  2101. [helpstring("Formats a service name, virtual root, and instance number into a complete path.")]
  2102. HRESULT MakeVRootPath([in] BSTR strService, [in] long lInstance, [in] BSTR strRoot, [out,retval] BSTR *pstrPath);
  2103. };
  2104. //@doc EVENTS EXTERNAL
  2105. /*
  2106. @interface IEventUtil | Provide's utility functions.
  2107. @meth HRESULT | DisplayNameFromMoniker | Get a monker's display name.
  2108. @meth HRESULT | MonikerFromDisplayName | Create a moniker from a display name.
  2109. @meth HRESULT | ObjectFromMoniker | Perform IMoniker::BindToObject.
  2110. @meth HRESULT | GetNewGUID | Create a new GUID.
  2111. @meth HRESULT | CopyPropertyBag | Copy an IEventPropertyBag in-depth.
  2112. @meth HRESULT | CopyPropertyBagShallow | Perform a shallow copy of an IEventPropertyBag
  2113. @meth HRESULT | DispatchFromObject | Perform QueryInterface for IID_IDispatch.
  2114. @meth HRESULT | GetIndexedGUID | Get an indexed GUID.
  2115. @meth HRESULT | RegisterSource | Register a new source.
  2116. */
  2117. [
  2118. helpstring("Provides utility functions."),
  2119. object,
  2120. oleautomation,
  2121. pointer_default(unique),
  2122. uuid(c61670e0-cd6e-11d0-a9f8-00aa00685c74)
  2123. ]
  2124. interface IEventUtil : IDispatch
  2125. {
  2126. import "wtypes.idl";
  2127. import "ocidl.idl";
  2128. //@method HRESULT | IEventUtil | DisplayNameFromMoniker | Get a moniker's display name.
  2129. //@parm IUnknown * | pUnkMoniker | [in] Specifies the moniker.
  2130. //@parm BSTR * | pstrDisplayName | [out,retval] Receives the display name.
  2131. //@rvalue S_OK | Success.
  2132. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2133. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2134. //@rvalue E_NOINTERFACE | Failure, the object does not implement IMoniker.
  2135. [helpstring("Get a moniker's display name.")]
  2136. HRESULT DisplayNameFromMoniker([in] IUnknown *pUnkMoniker, [out,retval] BSTR *pstrDisplayName);
  2137. //@method HRESULT | IEventUtil | MonikerFromDisplayName | Create a moniker from a display name.
  2138. //@parm BSTR | strDisplayName | [in] Specifies the display name.
  2139. //@parm IUnknown ** | ppUnkMoniker | [out,retval] Receives the moniker.
  2140. //@rvalue S_OK | Success.
  2141. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2142. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2143. [helpstring("Create a moniker from a display name.")]
  2144. HRESULT MonikerFromDisplayName([in] BSTR strDisplayName, [out,retval] IUnknown **ppUnkMoniker);
  2145. //@method HRESULT | IEventUtil | ObjectFromMoniker | Perform IMoniker::BindToObject.
  2146. //@parm IUnknown * | pUnkMoniker | [in] Specifies the moniker.
  2147. //@parm IUnknown ** | ppUnkObject | [out,retval] Receives the object.
  2148. //@rvalue S_OK | Success.
  2149. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2150. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2151. [helpstring("Perform IMoniker::BindToObject.")]
  2152. HRESULT ObjectFromMoniker([in] IUnknown *pUnkMoniker, [out,retval] IUnknown **ppUnkObject);
  2153. //@method HRESULT | IEventUtil | GetNewGUID | Create a new GUID.
  2154. //@parm BSTR * | pstrGUID | [out,retval] Receives the new GUID.
  2155. //@rvalue S_OK | Success.
  2156. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2157. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2158. [helpstring("Create a new GUID.")]
  2159. HRESULT GetNewGUID([out,retval] BSTR *pstrGUID);
  2160. //@method HRESULT | IEventUtil | CopyPropertyBag | Copy an IEventPropertyBag in-depth. The result
  2161. // is implemented with an in-memory object.
  2162. //@parm IUnknown * | pUnkInput | [in] Specifies the input.
  2163. //@parm IUnknown ** | ppUnkOutput | [out,retval] Receives the result.
  2164. //@rvalue S_OK | Success.
  2165. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2166. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2167. [helpstring("Copy an IEventPropertyBag in-depth.")]
  2168. HRESULT CopyPropertyBag([in] IUnknown *pUnkInput, [out,retval] IUnknown **ppUnkOutput);
  2169. //@method HRESULT | IEventUtil | CopyPropertyBagShallow | Perform a shallow copy of an
  2170. // IEventPropertyBag. The result is implemented with an in-memory object.
  2171. //@parm IUnknown * | pUnkInput | [in] Specifies the input.
  2172. //@parm IUnknown ** | ppUnkOutput | [out,retval] Receives the result.
  2173. //@rvalue S_OK | Success.
  2174. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2175. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2176. [helpstring("Perform a shallow copy of an IEventPropertyBag.")]
  2177. HRESULT CopyPropertyBagShallow([in] IUnknown *pUnkInput, [out,retval] IUnknown **ppUnkOutput);
  2178. //@method HRESULT | IEventUtil | DispatchFromObject | Perform QueryInterface for IID_IDispatch.
  2179. //@parm IUnknown * | pUnkObject | [in] Specifies the object.
  2180. //@parm IDispatch ** | ppDispOutput | [out,retval] Receives the result.
  2181. //@rvalue S_OK | Success.
  2182. //@rvalue E_NOINTERFACE | Failure, the object does not support IDispatch.
  2183. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2184. [helpstring("Perform QueryInterface for IID_IDispatch.")]
  2185. HRESULT DispatchFromObject([in] IUnknown *pUnkObject, [out,retval] IDispatch **ppDispOutput);
  2186. //@method HRESULT | IEventUtil | GetIndexedGUID | Get an indexed GUID. For a given base GUID and
  2187. // index, this method will always return the same (unique) GUID.
  2188. //@parm BSTR | strGUID | [in] Specifies the base GUID.
  2189. //@parm long | lValue | [in] Specifies the index.
  2190. //@parm BSTR * | pstrResult | [out,retval] Receives the result.
  2191. //@rvalue S_OK | Success.
  2192. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2193. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2194. [helpstring("Get an indexed GUID.")]
  2195. HRESULT GetIndexedGUID([in] BSTR strGUID, [in] long lValue, [out,retval] BSTR *pstrResult);
  2196. //@method HRESULT | IEventUtil | RegisterSource | Register a new source.
  2197. //@parm BSTR | strSourceType | [in] Specifies the GUID of the Source Type for the new Source.
  2198. //@parm BSTR | strSource | [in] Specifies the GUID of the new Source. If lIndex is -1 then this
  2199. // parameter is the actual GUID. Otherwise, this parameter is the base GUID, and
  2200. // IEventUtil::GetIndexGUID is used the generate the actual GUID.
  2201. //@parm long | lInstance | [in] Specifies the instance of the GUID. See the strDatabaseManager
  2202. // parameter for how this parameter is used.
  2203. //@parm BSTR | strService | [in] Specifies the service name of the new Source. This is used as a
  2204. // parameter to either IEventDatabaseManager::MakeVRootPath or IEventDatabaseManager::MakeVServerPath.
  2205. //@parm BSTR | strVRoot | [in] Specifies the virtual root of the new Source. If this parameter is
  2206. // a zero-length string or is NULL, then no virtual root is used.
  2207. //@parm BSTR | strDatabaseManager | [in] Specifies the GUID or ProgID of the object which implements
  2208. // IEventDatabaseManager for generating the path of the binding database for the new Source. If the
  2209. // strVRoot parameter is specifies, then IEventDatabaseManager::MakeVRootPath is used - otherwise,
  2210. // IEventDatabaseManager::MakeVServerPath is used.
  2211. //@parm BSTR | strDisplayName | [in] Specifies the Display Name for the new Source.
  2212. //@parm IEventBindingManager ** | ppBindingManager | [out,retval,unique] Receives the
  2213. // IEventBindingManager interface for the object which stores the bindings for the new Source. This
  2214. // parameter may not be NULL - the output must be accepted.
  2215. // this parameter is NULL, then the interface is not returned.
  2216. //@rvalue S_OK | Success.
  2217. //@rvalue SEO_E_NOTPRESENT | Failure, the Source Type is not registered.
  2218. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2219. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2220. //@rvalue E_ACCESSDENIED | Failure, access denied.
  2221. [helpstring("Register a new source.")]
  2222. HRESULT RegisterSource([in] BSTR strSourceType,
  2223. [in] BSTR strSource,
  2224. [in] long lInstance,
  2225. [in] BSTR strService,
  2226. [in] BSTR strVRoot,
  2227. [in] BSTR strDatabaseManager,
  2228. [in] BSTR strDisplayName,
  2229. [out,retval] IEventBindingManager **ppBindingManager);
  2230. };
  2231. //@doc EVENTS EXTERNAL
  2232. /*
  2233. @interface IEventComCat | Provides access to component categories.
  2234. @meth HRESULT | RegisterCategory | Register a component category.
  2235. @meth HRESULT | UnRegisterCategory | Unregister a component category.
  2236. @meth HRESULT | RegisterClassImplementsCategory | Register a class as implementing a component category.
  2237. @meth HRESULT | UnRegisterClassImplementsCategory | Unregister a class as implementing a component category.
  2238. @meth HRESULT | RegisterClassRequiresCategory | Register a class as requiring a component category.
  2239. @meth HRESULT | UnRegisterClassRequiresCategory | Unregister a class as requiring a component category.
  2240. @meth HRESULT | GetCategories | Get the registered component categories.
  2241. @meth HRESULT | GetCategoryDescription | Get the description for a component category.
  2242. */
  2243. [
  2244. helpstring("Provides access to component categories."),
  2245. object,
  2246. oleautomation,
  2247. pointer_default(unique),
  2248. uuid(65a70ec0-cd87-11d0-a9f8-00aa00685c74)
  2249. ]
  2250. interface IEventComCat : IDispatch
  2251. {
  2252. import "wtypes.idl";
  2253. import "ocidl.idl";
  2254. //@method HRESULT | IEventComCat | RegisterCategory | Register a component category.
  2255. //@parm BSTR | pszCategory | [in] Specifies the component category.
  2256. //@parm BSTR | pszDescription | [in] Specifies the description.
  2257. //@parm long | lcidLanguage | [in] Specifies the LCID of the description. This should be 0 for
  2258. // LOCALE_NEUTRAL, 1024 for LOCALE_USER_DEFAULT, or 2048 for LOCALE_SYSTEM_DEFAULT - or some other
  2259. // language-specific value.
  2260. //@rvalue S_OK | Success.
  2261. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2262. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2263. [helpstring("Register a component category.")]
  2264. HRESULT RegisterCategory([in] BSTR pszCategory, [in] BSTR pszDescription, [in] long lcidLanguage);
  2265. //@method HRESULT | IEventComCat | UnRegisterCategory | Unregister a component category.
  2266. //@parm BSTR | pszCategory | [in] Specifies the component category.
  2267. //@rvalue S_OK | Success.
  2268. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2269. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2270. [helpstring("Unregister a component category.")]
  2271. HRESULT UnRegisterCategory([in] BSTR pszCategory);
  2272. //@method HRESULT | IEventComCat | RegisterClassImplementsCategory | Register a class as implementing
  2273. // a component category.
  2274. //@parm BSTR | pszClass | [in] Specifies the class.
  2275. //@parm BSTR | pszCategory | [in] Specifies the component category.
  2276. //@rvalue S_OK | Success.
  2277. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2278. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2279. [helpstring("Register a class as implementing a component category.")]
  2280. HRESULT RegisterClassImplementsCategory([in] BSTR pszClass, [in] BSTR pszCategory);
  2281. //@method HRESULT | IEventComCat | UnRegisterClassImplementsCategory | Unregister a class as
  2282. // implementing a component category.
  2283. //@parm BSTR | pszClass | [in] Specifies the class.
  2284. //@parm BSTR | pszCategory | [in] Specifies the category.
  2285. //@rvalue S_OK | Success.
  2286. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2287. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2288. [helpstring("Unregister a class as implementing a component category.")]
  2289. HRESULT UnRegisterClassImplementsCategory([in] BSTR pszClass, [in] BSTR pszCategory);
  2290. //@method HRESULT | IEventComCat | RegisterClassRequiresCategory | Register a class as requiring a
  2291. // component category.
  2292. //@parm BSTR | pszClass | [in] Specifies the class.
  2293. //@parm BSTR | pszCategory | [in] Specifies the category.
  2294. //@rvalue S_OK | Success.
  2295. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2296. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2297. [helpstring("Register a class as requiring a component category.")]
  2298. HRESULT RegisterClassRequiresCategory([in] BSTR pszClass, [in] BSTR pszCategory);
  2299. //@method HRESULT | IEventComCat | UnRegisterClassRequiresCategory | Unregister a class as requiring
  2300. // a component category.
  2301. //@parm BSTR | pszClass | [in] Specifies the class.
  2302. //@parm BSTR | pszCategory | [in] Specifies the category.
  2303. //@rvalue S_OK | Success.
  2304. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2305. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2306. [helpstring("Unregister a class as requiring a component category.")]
  2307. HRESULT UnRegisterClassRequiresCategory([in] BSTR pszClass, [in] BSTR pszCategory);
  2308. //@method HRESULT | IEventComCat | GetCategories | Get the registered component categories.
  2309. //@parm SAFEARRAY(VARIANT) * | psaCategories | [out,retval] Receives the list of registered component
  2310. // categories.
  2311. //@rvalue S_OK | Success.
  2312. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2313. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2314. [helpstring("Get the registered component categories.")]
  2315. HRESULT GetCategories([out,retval] SAFEARRAY(VARIANT) *psaCategories);
  2316. //@method HRESULT | IEventComCat | GetCategoryDescription | Get the description for a component category.
  2317. //@parm BSTR | pszCategory | [in] Specifies the category.
  2318. //@parm long | lcidLanguage | [in] Specifies the desired LCID of the description. This should be 0
  2319. // for LOCALE_NEUTRAL, 1024 for LOCALE_USER_DEFAULT, or 2048 for LOCALE_SYSTEM_DEFAULT - or some
  2320. // other language-specific value.
  2321. //@parm BSTR * | pstrDescription | [out,retval] Receives the description.
  2322. //@rvalue S_OK | Success.
  2323. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2324. //@rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2325. //@rvalue CAT_E_CATIDNOEXIST | Failure, the category does not exist.
  2326. //@rvalue CAT_E_NODESCRIPTION | Failure, there is not description string for the specified locale.
  2327. [helpstring("Get the description for a component category.")]
  2328. HRESULT GetCategoryDescription([in] BSTR pszCategory, [in] long lcidLanguage, [out,retval] BSTR *pstrDescription);
  2329. };
  2330. //@doc EVENTS INTERNAL
  2331. /*
  2332. @interface IEventNotifyBindingChange | Receives notifications of changes to a binding database.
  2333. @meth HRESULT | OnChange | Called when a change occurs.
  2334. @xref <i IEventNotifyBindingChangeDisp>
  2335. */
  2336. [
  2337. helpstring("Receives notifications of changes to a binding database."),
  2338. hidden,
  2339. object,
  2340. pointer_default(unique),
  2341. uuid(08f4f2a0-dc5b-11d0-aa0f-00aa006bc80b)
  2342. ]
  2343. interface IEventNotifyBindingChange : IUnknown
  2344. {
  2345. //@method HRESULT | IEventNotifyBindingChange | OnChange | Called when a change occurs.
  2346. //@rvalue S_OK | Success.
  2347. [helpstring("Called when a change occurs.")]
  2348. HRESULT OnChange();
  2349. };
  2350. //@doc EVENTS INTERNAL
  2351. /*
  2352. @interface IEventNotifyBindingChangeDisp | Receives notifications of changes to a binding database (IDispatch).
  2353. @meth HRESULT | OnChange | Called when a change occurs.
  2354. @xref <i IEventNotifyBindingChange>
  2355. */
  2356. [
  2357. dual,
  2358. helpstring("Receives notifications of changes to a binding database."),
  2359. hidden,
  2360. object,
  2361. pointer_default(unique),
  2362. uuid(dc3d83b0-e99f-11d0-aa10-00aa006bc80b)
  2363. ]
  2364. interface IEventNotifyBindingChangeDisp : IDispatch
  2365. {
  2366. //@method HRESULT | IEventNotifyBindingChangeDisp | OnChange | Called when a change occurs.
  2367. //@rvalue S_OK | Success.
  2368. [helpstring("Called when a change occurs."),id(1)]
  2369. HRESULT OnChange();
  2370. };
  2371. //@doc SEO
  2372. /*
  2373. @interface ISEOInitObject | Same interface as IPersistPropertyBag but uses shallow binding.
  2374. */
  2375. [
  2376. helpstring("Same interface as IPersistPropertyBag but uses shallow binding."),
  2377. hidden,
  2378. object,
  2379. pointer_default(unique),
  2380. uuid(9bb6aab0-af6d-11d0-8bd2-00c04fd42e37)
  2381. ]
  2382. interface ISEOInitObject : IPersistPropertyBag
  2383. {
  2384. // No methods (uses IPersistPropertyBag methods).
  2385. };
  2386. //@doc EVENTS EXTERNAL
  2387. /*
  2388. @interface IEventRuleEngine | Evaluates events against rules.
  2389. @meth HRESULT | Evaluate | Evaluate the event against the rule.
  2390. */
  2391. [
  2392. helpstring("Evaluates events against rules."),
  2393. object,
  2394. pointer_default(unique),
  2395. uuid(da816090-f343-11d0-aa14-00aa006bc80b)
  2396. ]
  2397. interface IEventRuleEngine : IUnknown
  2398. {
  2399. import "wtypes.idl";
  2400. import "ocidl.idl";
  2401. //@method HRESULT | IEventRuleEngine | Evaluate | Evaluate the event against the rule.
  2402. //@parm IEventPropertyBag | pEvent | [in] Specifies the event.
  2403. //@rvalue S_OK | Success, the rule evaluated to TRUE.
  2404. //@rvalue S_FALSE | Success, the rule evaluated to FALSE.
  2405. //@xref <i IEventPropertyBag>
  2406. [helpstring("Evaluate the event against the rule.")]
  2407. HRESULT Evaluate([in,unique] IUnknown *pEvent);
  2408. };
  2409. //@doc EVENTS EXTERNAL
  2410. /*
  2411. @interface IEventPersistBinding | Persists an object to/from a binding. This interface derives from IPersist.
  2412. @meth HRESULT | IsDirty | Checks the object for changes since it was last saved.
  2413. @meth HRESULT | Load | Initializes an object from the binding where it was previously saved.
  2414. @meth HRESULT | Save | Saves an object to the specified binding.
  2415. */
  2416. [
  2417. helpstring("Persists an object to/from a binding."),
  2418. object,
  2419. pointer_default(unique),
  2420. uuid(e9311660-1a98-11d1-aa26-00aa006bc80b)
  2421. ]
  2422. interface IEventPersistBinding : IPersist
  2423. {
  2424. import "wtypes.idl";
  2425. import "ocidl.idl";
  2426. //@method HRESULT | IEventPersistBinding | IsDirty | Checks the object for changes since it was last saved.
  2427. //@rvalue S_OK | Success, the object has changed since the last time it was saved.
  2428. //@rvalue S_FALSE | Success, the object has not changed since the last time it was saved.
  2429. [helpstring("Checks the object for changes since it was last saved.")]
  2430. HRESULT IsDirty();
  2431. //@method HRESULT | IEventPersistBinding | Load | Initializes an object from the binding where it was previously saved.
  2432. //@parm IEventBinding * | piBinding | [in] Specifies the binding to load from.
  2433. //@rvalue S_OK | Success, the object successfully initialized itself.
  2434. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2435. [helpstring("Initializes an object from the binding where it was previously saved.")]
  2436. HRESULT Load([in] IEventBinding *piBinding);
  2437. //@method HRESULT | IEventPersistBinding | Save | Saves an object to the specified binding.
  2438. //@parm IEventBinding * | piBinding | [in] Specifies the binding to save to.
  2439. //@parm VARIANT_BOOL | fClearDirty | [in] Specifies whether or not the object should clear its dirty flag.
  2440. //@rvalue S_OK | Success, the object successfully saved itself.
  2441. //@rvalue E_OUTOFMEMORY | Failure, out of memory.
  2442. [helpstring("Saves an object to the specified binding.")]
  2443. HRESULT Save([in] IEventBinding * piBinding, [in] VARIANT_BOOL fClearDirty);
  2444. };
  2445. //@doc EVENTS EXTERNAL
  2446. /*
  2447. @interface IEventSinkNotify | Generic sink interface.
  2448. @meth HRESULT | OnEvent | Called when the event happens.
  2449. */
  2450. [
  2451. helpstring("Generic sink interface."),
  2452. object,
  2453. pointer_default(unique),
  2454. uuid(bdf065b0-f346-11d0-aa14-00aa006bc80b)
  2455. ]
  2456. interface IEventSinkNotify : IUnknown
  2457. {
  2458. import "wtypes.idl";
  2459. import "ocidl.idl";
  2460. //@method HRESULT | IEventSinkNotify | OnEvent | Called when the event happens.
  2461. //@rvalue S_OK | Success, the rule evaluated to TRUE.
  2462. [helpstring("Called when the event happens."),id(DISPID_VALUE)]
  2463. HRESULT OnEvent();
  2464. };
  2465. //@doc EVENTS EXTERNAL
  2466. /*
  2467. @interface IEventSinkNotifyDisp | Generic sink interface (IDispatch).
  2468. @meth HRESULT | OnEvent | Called when the event happens.
  2469. */
  2470. [
  2471. helpstring("Generic sink interface (IDispatch)."),
  2472. object,
  2473. pointer_default(unique),
  2474. uuid(33a79660-f347-11d0-aa14-00aa006bc80b)
  2475. ]
  2476. interface IEventSinkNotifyDisp : IDispatch
  2477. {
  2478. import "wtypes.idl";
  2479. import "ocidl.idl";
  2480. //@method HRESULT | IEventSinkNotifyDisp | OnEvent | Called when the event happens.
  2481. //@rvalue S_OK | Success, the rule evaluated to TRUE.
  2482. [helpstring("Called when the event happens."),id(DISPID_VALUE)]
  2483. HRESULT OnEvent();
  2484. };
  2485. //@doc EVENTS EXTERNAL
  2486. /*
  2487. @interface IEventIsCacheable | Determine whether or not the object should be cached.
  2488. @meth HRESULT | IsCacheable | Determine whether or not the object should be cached.
  2489. */
  2490. [
  2491. helpstring("Determine whether or not the object should be cached"),
  2492. object,
  2493. pointer_default(unique),
  2494. uuid(22e0f830-1e81-11d1-aa29-00aa006bc80b)
  2495. ]
  2496. interface IEventIsCacheable : IUnknown
  2497. {
  2498. import "wtypes.idl";
  2499. import "ocidl.idl";
  2500. //@method HRESULT | IEventIsCacheable | IsCacheable | Determine whether or not the object should be cached
  2501. //@rvalue S_OK | Success, the object should be cached.
  2502. //@rvalue S_FALSE | Success, the object should not be cached.
  2503. [helpstring("Determine whether or not the object should be cached")]
  2504. HRESULT IsCacheable();
  2505. };
  2506. //@doc EVENTS EXTERNAL
  2507. /*
  2508. @interface IEventCreateOptions | Provide options for creating objects. Objects implementating this
  2509. interface may be passed as the pDeliveryOptions parameter to IEventManager::CreateSink, so that
  2510. operations during the object creation may be overridden.
  2511. @meth HRESULT | CreateBindCtx | Override the Win32 CreateBindCtx function.
  2512. @meth HRESULT | MkParseDisplayName | Override the Win32 MkParseDisplayName function.
  2513. @meth HRESULT | BindToObject | Override the IMoniker:BindToObject method.
  2514. @meth HRESULT | CoCreateInstance | Override the Win32 CoCreateInstance function.
  2515. @meth HRESULT | Init | Override initialization.
  2516. */
  2517. [
  2518. helpstring("Provide options for creating objects."),
  2519. hidden,
  2520. object,
  2521. pointer_default(unique),
  2522. uuid(c0287bfe-ef7f-11d1-9fff-00c04fa37348)
  2523. ]
  2524. interface IEventCreateOptions : IEventDeliveryOptions
  2525. {
  2526. //@method HRESULT | IEventCreateOptions | CreateBindCtx | Override the Win32 CreateBindCtx function.
  2527. // By implementating this method, the object can provide its own IBindCtx for use during object
  2528. // creation. See the documentation for the Win32 CreateBindCtx function for more information.
  2529. //@parm DWORD | dwReserved | [in] Reserved. Must be 0.
  2530. //@parm IBindCtx ** | ppBindCtx | [out] Receives the result.
  2531. //@rvalue SUCCEEDED() | Success.
  2532. //@rvalue E_NOTIMPL | Not implemented. The caller should call the Win32 CreateBindCtx function.
  2533. //@rvalue FAILED() | Failure.
  2534. [helpstring("Override the Win32 CreateBindCtx function.")]
  2535. HRESULT CreateBindCtx([in] DWORD dwReserved, [out] IBindCtx **ppBindCtx);
  2536. //@method HRESULT | IEventCreateOptions | MkParseDisplayName | Override the Win32 MkParseDisplayName
  2537. // function. By implementing this method, the object can perform its own logic for converting a
  2538. // display name into an IMoniker interface during object creation. See the documentation for the
  2539. // Win32 MkParseDisplayName function for more information.
  2540. //@parm IBindCtx * | pBindCtx | [in] Specifies the bind context.
  2541. //@parm LPCOLESTR | pszUserName | [in] Specifes the display name.
  2542. //@parm ULONG * | pchEaten | [out] Receives the number of characters consumed from the display name.
  2543. //@parm IMoniker ** | ppMoniker | [out] Receives the result.
  2544. //@rvalue SUCCEEDED() | Success.
  2545. //@rvalue E_NOTIMPL | Not implemented. The caller should call the Win32 MkParseDisplayName function.
  2546. //@rvalue FAILED() | Failure.
  2547. [helpstring("Override the Win32 MkParseDisplayName function.")]
  2548. HRESULT MkParseDisplayName([in] IBindCtx *pBindCtx,
  2549. [in] LPCOLESTR pszUserName,
  2550. [out] ULONG * pchEaten,
  2551. [out] LPMONIKER *ppMoniker);
  2552. //@method HRESULT | IEventCreateOptions | BindToObject | Override the IMoniker::BindToObject method.
  2553. // By implementing this method, the object can perform its own logic for binding a moniker to an
  2554. // object during object creation. See the documentation for IMoniker::BindToObject for more
  2555. // information.
  2556. //@parm IMoniker * | pMoniker | [in] Specifies the moniker to bind.
  2557. //@parm IBindCtx * | pBindCtx | [in[ Specifies the bind context.
  2558. //@parm IMoniker * | pmkLeft | [in] Specifies the moniker to the left.
  2559. //@parm REFIID | riidResult | [in] Specifies the desired interface on the object.
  2560. //@parm LPVOID * | ppvResult | [out,iid_is(riidResult)] Receives the result.
  2561. //@rvalue SUCCEEDED() | Success.
  2562. //@rvalue E_NOTIMPL | Not implemented. The caller should call the moniker's IMoniker::BindToObject
  2563. // method.
  2564. //@rvalue FAILED() | Failure.
  2565. [helpstring("Override the IMoniker::BindToObject method.")]
  2566. HRESULT BindToObject([in] IMoniker *pMoniker,
  2567. [in] IBindCtx *pBindCtx,
  2568. [in] IMoniker *pmkLeft,
  2569. [in] REFIID riidResult,
  2570. [out,iid_is(riidResult)] LPVOID *ppvResult);
  2571. //@method HRESULT | IEventCreateOptions | CoCreateInstance | Override the Win32 CoCreateInstance
  2572. // function. By implementing this method, the object can perform its own logic for creating an
  2573. // object. See the documentation for the Win32 CoCreateInstance function for more information.
  2574. //@parm REFCLSID | rclsidDesired | [in] Specifies the CLSID of the object to create.
  2575. //@parm IUnkown * | pUnkOuter | [in] Specifies the outer unknown which is aggregating the new object.
  2576. //@parm DWORD | dwClsCtx | [in] Specifies the creation context.
  2577. //@parm REFIID | riidResult | [in] Specifies the IID of the interface which to be returned.
  2578. //@parm LPVOID * | ppvResult | [out,iid_is(riidResult)] Receives the result.
  2579. //@rvalue SUCCEEDED() | Success.
  2580. //@rvalue E_NOTIMPL | Not implemented. The caller should call the Win32 CoCreateInstance function.
  2581. //@rvalue FAILED() | Failure.
  2582. [helpstring("Override the Win32 CoCreateInstance function.")]
  2583. HRESULT CoCreateInstance([in] REFCLSID rclsidDesired,
  2584. [in] IUnknown *pUnkOuter,
  2585. [in] DWORD dwClsCtx,
  2586. [in] REFIID riidResult,
  2587. [out,iid_is(riidResult)] LPVOID *ppvResult);
  2588. //@method HRESULT | IEventCreateOptions | Init | Override the initialization. By implementing this
  2589. // method, the object can perform its own logic to initialize the object.
  2590. //@parm REFIID | riidObject | [in] Specifies the IID of the interface on the object.
  2591. //@parm IUnknown ** | ppUnkObject | [in,out,iid_is(riidObject)] Specifies the object. The method
  2592. // can cause a different object to be used by placing it in this output parameter.
  2593. //@parm IEventBinding * | pBinding | [in,unique] Specifies the binding for which the object is being
  2594. // created. May be NULL.
  2595. //@parm IUnknown * | pInitProps | [in,unique] Specifies additional initialization parameters. May be
  2596. // NULL.
  2597. //@rvalue SUCCEEDED() | Success. The caller should not invoke its own initialization logic for the
  2598. // object.
  2599. //@rvalue E_NOTIMPL | Not implemented. The caller should invoke its own initialization logic. Note
  2600. // that even if this value it returned, the method may still have placed a different interface
  2601. // pointer into *ppUnkObject.
  2602. //@rvalue FAILED() | Failure.
  2603. [helpstring("Override the object initialization.")]
  2604. HRESULT Init([in] REFIID riidObject,
  2605. [in,out,iid_is(riidObject)] IUnknown **ppUnkObject,
  2606. [in,unique] IEventBinding *pBinding,
  2607. [in,unique] IUnknown *pInitProps);
  2608. };
  2609. //@doc EVENTS EXTERNAL
  2610. /*
  2611. @interface IEventDispatcherChain | Provide chaining of dispatcher instances.
  2612. @meth HRESULT | SetPrevious | Set the previous dispatcher.
  2613. */
  2614. [
  2615. helpstring("Provide chaining of dispatcher instances."),
  2616. hidden,
  2617. object,
  2618. pointer_default(unique),
  2619. uuid(58a90754-fb15-11d1-a00c-00c04fa37348)
  2620. ]
  2621. interface IEventDispatcherChain : IUnknown
  2622. {
  2623. //@method HRESULT | IEventDispatcherChain | SetPrevious | Set the previous dispatcher. During
  2624. // a binding change notification, if the old dispatcher supports the IClassFactory interface
  2625. // the router will use the old dispatcher to create a new dispatcher. Once the new dispatcher
  2626. // is created, before the router calls the new dispatcher's IEventDispatcher::SetContext method,
  2627. // if the new dispatcher supports IEventDispatcherChain, the router will call the new dispatcher's
  2628. // IEventDispatcherChain::SetPrevious method, passing in the interface pointer of the old
  2629. // dispatcher - this gives the new dispatcher an opportunity to cooperate with the old
  2630. // dispatcher during a binding change notification. The new dispatcher may also return an
  2631. // enumerator for the event types which the router should preload into the new dispatcher.
  2632. //@parm IUnknown * | pUnkPrevious | [in] Specifies the old dispatcher.
  2633. //@parm IUnknown ** | ppUnkPreload | [out] Receives an interface pointer for preloading. If this
  2634. // object is non-NULL and implements IEnumGUID, the router will (attempt to) immediately call
  2635. // IEventDispatcher::SetContext for each event type returned by IEnumGUID::Next. (The router may
  2636. // not be able to make the call immediately due to locks held on the binding database - in this
  2637. // case, the router will hold the IEnumGUID interface, and will make the SetContext calls the next
  2638. // time the server calls one of the IEventRouter::GetDispatcher... methods.)
  2639. //@rvalue S_OK | Success.
  2640. //@rvalue E_NOTIMPLE | Not implemented.
  2641. [helpstring("Set the previous dispatcher.")]
  2642. HRESULT SetPrevious([in] IUnknown *pUnkPrevious, [out] IUnknown **ppUnkPreload);
  2643. };
  2644. [
  2645. helpstring("Server Extension Objects COM Library"),
  2646. uuid(bbf0fc10-2238-11d0-a9ce-00aa00685c74),
  2647. version(1.0)
  2648. ]
  2649. library SEOLib
  2650. {
  2651. importlib("stdole2.tlb");
  2652. interface ISEODictionaryItem;
  2653. interface ISEODictionary;
  2654. interface IEventLock;
  2655. interface ISEORouter;
  2656. interface IMCISMessageFilter;
  2657. interface ISEOBindingRuleEngine;
  2658. interface ISEOEventSink;
  2659. interface ISEORegDictionary;
  2660. interface ISEOBindingConverter;
  2661. interface ISEODispatcher;
  2662. interface IEventDeliveryOptions;
  2663. interface IEventTypeSinks;
  2664. interface IEventType;
  2665. interface IEventPropertyBag;
  2666. interface IEventBinding;
  2667. interface IEventBindings;
  2668. interface IEventTypes;
  2669. interface IEventBindingManager;
  2670. interface IEventSource;
  2671. interface IEventSources;
  2672. interface IEventSourceType;
  2673. interface IEventSourceTypes;
  2674. interface IEventManager;
  2675. interface ISEOInitObject;
  2676. interface IEventDatabasePlugin;
  2677. interface IEventDatabaseManager;
  2678. interface IEventUtil;
  2679. interface IEventComCat;
  2680. interface IEventNotifyBindingChange;
  2681. interface IEventNotifyBindingChangeDisp;
  2682. interface IEventRouter;
  2683. interface IEventDispatcher;
  2684. interface IEventRuleEngine;
  2685. interface IEventSinkNotify;
  2686. interface IEventSinkNotifyDisp;
  2687. interface IEventPersistBinding;
  2688. interface IEventIsCacheable;
  2689. interface IEventCreateOptions;
  2690. interface IEventDispatcherChain;
  2691. //@doc SEO
  2692. //@const HRESULT | SEO_S_MOREDATA | Success, the buffer was not large enough to contain all of the data.
  2693. const DWORD SEO_S_MOREDATA = 0x00041001; // Equal to MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_ITF,0x1001)
  2694. //@const HRESULT | SEO_E_NOTPRESENT | Failure, the item is not present.
  2695. const DWORD SEO_E_NOTPRESENT = 0x80041002; // Equal to MAKE_HRESULT(SEVERITY_FAILURE,FACITILY_ITF,0x1002)
  2696. //@const HRESULT | SEO_E_TIMEOUT | Failure, the timeout expired.
  2697. const DWORD SEO_E_TIMEOUT = 0x80041003; // Equal to MAKE_HRESULT(SEVERITY_FAILURE,FACITILY_ITF,0x1003)
  2698. //@const HRESULT | SEO_S_DONEPROCESSING | Success, the message should not be handed to any other
  2699. // extension objects at this binding point.
  2700. const DWORD SEO_S_DONEPROCESSING = 0x80041004; // Equal to MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_ITF,0x1004)
  2701. //@doc EVENTS EXTERNAL
  2702. //@const HRESULT | EVENTS_E_BADATA | Failure, bad data was presented.
  2703. const DWORD EVENTS_E_BADDATA = 0x80041005; // Equal to MAKE_HRESULT(SEVERITY_FAILURE,FACILITY_ITF,0x1005)
  2704. //@const HRESULT | EVENTS_E_TIMEOUT | Failure, the timeout expired.
  2705. const DWORD EVENTS_E_TIMEOUT = 0x80041006; // Equal to MAKE_HRESULT(SEVERITY_FAILURE,FACILITY_ITF,0x1006)
  2706. //@const HRESULT | EVENTS_E_DISABLED | Failure, the binding is disabled.
  2707. const DWORD EVENTS_E_DISABLED = 0x80041007; // Equal to MAKE_HRESULT(SEVERITY_FAILURE,FACILITY_ITF,0x1007)
  2708. //@doc SEO
  2709. [
  2710. control,
  2711. helpstring("Class which implements an ISEODictionary in the registry."),
  2712. hidden,
  2713. uuid(c4df0040-2d33-11d0-a9cf-00aa00685c74),
  2714. version(1.0)
  2715. ]
  2716. coclass CSEORegDictionary
  2717. {
  2718. [default] interface ISEODictionary;
  2719. }
  2720. //@doc SEO
  2721. [
  2722. control,
  2723. helpstring("Class which wraps MimeOle with an ISEODictionary."),
  2724. hidden,
  2725. uuid(c4df0041-2d33-11d0-a9cf-00aa00685c74),
  2726. version(1.0)
  2727. ]
  2728. coclass CSEOMimeDictionary
  2729. {
  2730. [default] interface ISEODictionary;
  2731. }
  2732. //@doc SEO
  2733. [
  2734. control,
  2735. helpstring("Class provides an ISEODictionary in memory."),
  2736. hidden,
  2737. uuid(c4df0042-2d33-11d0-a9cf-00aa00685c74),
  2738. version(1.0)
  2739. ]
  2740. coclass CSEOMemDictionary
  2741. {
  2742. [default] interface ISEODictionary;
  2743. interface IPropertyBag;
  2744. interface IEventPropertyBag;
  2745. }
  2746. //@doc SEO
  2747. [
  2748. control,
  2749. helpstring("Class provides an ISEODictionary on the Metabase."),
  2750. hidden,
  2751. uuid(c4df0043-2d33-11d0-a9cf-00aa00685c74),
  2752. version(1.0)
  2753. ]
  2754. coclass CSEOMetaDictionary
  2755. {
  2756. interface ISEODictionary;
  2757. interface ISEOInitObject;
  2758. interface IPropertyBag;
  2759. [default] interface IEventPropertyBag;
  2760. interface IEventLock;
  2761. }
  2762. //@doc SEO
  2763. //@object CSEODictionaryItem | Provides an ISEODictionaryItem in memory.
  2764. //@supint ISEODictionaryItem | General-purpose access to a single dictionary item.
  2765. //@xref <i ISEODictionary>
  2766. [
  2767. control,
  2768. helpstring("Class provides an ISEODictionaryItem in memory."),
  2769. hidden,
  2770. uuid(2e3a0ec0-89d7-11d0-a9e6-00aa00685c74),
  2771. version(1.0)
  2772. ]
  2773. coclass CSEODictionaryItem
  2774. {
  2775. [default] interface ISEODictionaryItem;
  2776. }
  2777. //@doc SEO
  2778. [
  2779. control,
  2780. helpstring("Class implements an ISEORouter."),
  2781. hidden,
  2782. uuid(83d63730-94fd-11d0-a9e8-00aa00685c74),
  2783. version(1.0)
  2784. ]
  2785. coclass CSEORouter
  2786. {
  2787. [default] interface ISEORouter;
  2788. }
  2789. //@doc EVENTS INTERNAL
  2790. //@object CEventLock | Provides an IEventLock.
  2791. //@supint IEventLock | Contention control.
  2792. [
  2793. control,
  2794. helpstring("Class provides IEventLock."),
  2795. hidden,
  2796. uuid(2e3abb30-af88-11d0-a9eb-00aa00685c74),
  2797. version(1.0)
  2798. ]
  2799. coclass CEventLock
  2800. {
  2801. [default] interface IEventLock;
  2802. }
  2803. //@doc SEO
  2804. [
  2805. helpstring("Class which implements IStream."),
  2806. hidden,
  2807. uuid(ed1343b0-a8a6-11d0-a9ea-00aa00685c74),
  2808. version(1.0)
  2809. ]
  2810. coclass CSEOStream
  2811. {
  2812. [default] interface IStream;
  2813. }
  2814. //@doc EVENTS EXTERNAL
  2815. //@object CEventManager | Implements the global event source manager (ProgID = "Event.Manager").
  2816. //@supint IEventManager | Provides access to registered source types, and facilities for firing events.
  2817. [
  2818. control,
  2819. helpstring("CEventManager"),uuid(35172920-a700-11d0-a9ea-00aa00685c74),
  2820. version(1.0)
  2821. ]
  2822. coclass CEventManager
  2823. {
  2824. [default] interface IEventManager;
  2825. interface IEventDatabasePlugin;
  2826. }
  2827. //@doc EVENTS INTERNAL
  2828. [
  2829. control,
  2830. helpstring("Class which implements IEventBindingManager."),
  2831. hidden,
  2832. uuid(53d01080-af98-11d0-a9eb-00aa00685c74),
  2833. version(1.0)
  2834. ]
  2835. coclass CEventBindingManager
  2836. {
  2837. [default] interface IEventBindingManager;
  2838. interface IEventDatabasePlugin;
  2839. interface ISEOInitObject;
  2840. interface IConnectionPointContainer;
  2841. [source,default] interface IEventNotifyBindingChangeDisp;
  2842. [source] interface IEventNotifyBindingChange;
  2843. }
  2844. //@doc SEO
  2845. [
  2846. helpstring("Generic Moniker class for objects which support ISEOInitObject."),
  2847. hidden,
  2848. uuid(7e3bf330-b28e-11d0-8bd8-00c04fd42e37),
  2849. version(1.0)
  2850. ]
  2851. coclass CSEOGenericMoniker
  2852. {
  2853. [default] interface IMoniker;
  2854. interface IParseDisplayName;
  2855. }
  2856. //@doc EVENTS EXTERNAL
  2857. //@object CEventMetabaseDatabaseManager | Class which implements IEventDatabaseManager for the metabase (ProgID = "Event.MetabaseDatabaseManager").
  2858. //@supint IEventDatabaseManager | Provides facilities for managing a binding database.
  2859. [
  2860. control,
  2861. helpstring("Class which implements IEventDatabaseManager for the metabase."),
  2862. uuid(8a58cdc0-cbdc-11d0-a9f8-00aa00685c74),
  2863. version(1.0)
  2864. ]
  2865. coclass CEventMetabaseDatabaseManager
  2866. {
  2867. [default] interface IEventDatabaseManager;
  2868. }
  2869. //@doc EVENTS EXTERNAL
  2870. //@object CEventUtil | Class which implements IEventUtil (ProgID = "Event.Util").
  2871. //@supint IEventUtil | Provides utility functions.
  2872. [
  2873. control,
  2874. helpstring("Class which implement IEventUtil."),
  2875. uuid(a1e041d0-cd73-11d0-a9f8-00aa00685c74),
  2876. version(1.0)
  2877. ]
  2878. coclass CEventUtil
  2879. {
  2880. [default] interface IEventUtil;
  2881. }
  2882. //@doc EVENTS EXTERNAL
  2883. //@object CEventComCat | Class which implements IEventComCat (ProgID = "Event.ComCat").
  2884. //@supint IEventComCat | Provides access to component categories.
  2885. [
  2886. control,
  2887. helpstring("Class which implements IEventComCat."),
  2888. uuid(ae1ef300-cd8f-11d0-a9f8-00aa00685c74),
  2889. version(1.0)
  2890. ]
  2891. coclass CEventComCat
  2892. {
  2893. [default] interface IEventComCat;
  2894. }
  2895. //@doc EVENTS INTERNAL
  2896. //@object CEventRouter | Class which implements IEventRouter (ProgID = "Event.Router").
  2897. //@supint IEventRouter | Event router.
  2898. [
  2899. control,
  2900. helpstring("Class which implements IEventRouter."),
  2901. hidden,
  2902. uuid(9f82f020-f6fd-11d0-aa14-00aa006bc80b),
  2903. version(1.0)
  2904. ]
  2905. coclass CEventRouter
  2906. {
  2907. [default] interface IEventRouter;
  2908. }
  2909. };
  2910. //@doc SEO
  2911. /*
  2912. @func HRESULT | MCISInitSEOA | Initialize SEO. Creates an ISEORouter object which routes events
  2913. within the specified service and virtual server.
  2914. @parm LPCSTR | pszService | [in] Specifies the name of the service.
  2915. @parm DWORD | dwVirtualServer | [in] Specifies the virtual server instance.
  2916. @parm ISEORouter ** | pprouterResult | [out,retval] Receives the result.
  2917. @rvalue S_OK | Success.
  2918. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2919. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  2920. @xref <i ISEORouter> <f MCISInitSEOW>
  2921. */
  2922. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE MCISInitSEOA( LPCSTR pszService,")
  2923. cpp_quote(" DWORD dwVirtualServer,")
  2924. cpp_quote(" ISEORouter **pprouterResult);")
  2925. //@doc SEO
  2926. /*
  2927. @func HRESULT | MCISInitSEOW | Initialize SEO. Creates an ISEORouter object which routes events
  2928. within the specified service and virtual server.
  2929. @parm LPCWSTR | pszService | [in] Specifies the name of the service.
  2930. @parm DWORD | dwVirtualServer | [in] Specifies the virtual server instance.
  2931. @parm ISEORouter ** | pprouterResult | [out,retval] Receives the result.
  2932. @rvalue S_OK | Success.
  2933. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2934. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  2935. @xref <i ISEORouter> <f MCISInitSEOA>
  2936. */
  2937. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE MCISInitSEOW( LPCWSTR pszService,")
  2938. cpp_quote(" DWORD dwVirtualServer,")
  2939. cpp_quote(" ISEORouter **pprouterResult);")
  2940. //@doc SEO
  2941. /*
  2942. @func HRESULT | SEOCreateDictionaryFromMultiSzA | Creates an ISEODictionary object from an array of
  2943. property names and an array of property values.
  2944. @parm DWORD | dwCount | [in] The count of the elements in the ppszNames and ppszValues arrays.
  2945. @parm LPCSTR * | ppszNames | [in] An array of pointers to strings which are the names of the properties
  2946. in the dictionary.
  2947. @parm LPCSTR * | ppszValues | [in] An array of pointers to MULTI_SZ strings which are the values of the
  2948. properties in the dictionary. Any value which contains only a single string will be placed in the
  2949. dictionary as a string. Any value which contains multiple strings will be placed in the dictionary as
  2950. an ISEODictionaryItem object.
  2951. @parm BOOL | bCopy | [in] Whether or not to make a copy of the data in ppszNames and ppszValues. This
  2952. parameter is ignored if the value of bReadOnly is TRUE, and a copy will always be made (i.e. if the
  2953. resulting dictionary is to allow writes, then a copy must be made of the input data).
  2954. @parm BOOL | bReadOnly | [in] Whether or not the resulting dictionary should be read-only. If this
  2955. parameter is FALSE, then the bCopy parameter will be ignored and a copy will always be made (i.e. if the
  2956. resulting dictionary is to allow writes, then a copy must be made of the input data).
  2957. @parm ISEODictionary ** | ppdictResult | [out,retval] The resulting dictionary.
  2958. @rvalue S_OK | Success.
  2959. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2960. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  2961. @xref <i ISEODictionary> <i ISEODictionaryItem> <f SEOCreateDictionaryFromMultiSzW>
  2962. <f SEOCreateMultiSzFromDictionaryA> <f SEOCreateMultiSzFromDictionaryW>
  2963. */
  2964. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateDictionaryFromMultiSzA( DWORD dwCount,")
  2965. cpp_quote(" LPCSTR *ppszNames,")
  2966. cpp_quote(" LPCSTR *ppszValues,")
  2967. cpp_quote(" BOOL bCopy,")
  2968. cpp_quote(" BOOL bReadOnly,")
  2969. cpp_quote(" ISEODictionary **ppdictResult);")
  2970. //@doc SEO
  2971. /*
  2972. @func HRESULT | SEOCreateDictionaryFromMultiSzW | Creates an ISEODictionary object from an array of
  2973. property names and an array of property values.
  2974. @parm DWORD | dwCount | [in] The count of the elements in the ppszNames and ppszValues arrays.
  2975. @parm LPCWSTR * | ppszNames | [in] An array of pointers to strings which are the names of the properties
  2976. in the dictionary.
  2977. @parm LPCWSTR * | ppszValues | [in] An array of pointers to MULTI_SZ strings which are the values of the
  2978. properties in the dictionary. Any value which contains only a single string will be placed in the
  2979. dictionary as a string. Any value which contains multiple strings will be placed in the dictionary as
  2980. an ISEODictionaryItem object.
  2981. @parm BOOL | bCopy | [in] Whether or not to make a copy of the data in ppszNames and ppszValues. This
  2982. parameter is ignored if the value of bReadOnly is TRUE, and a copy will always be made (i.e. if the
  2983. resulting dictionary is to allow writes, then a copy must be made of the input data).
  2984. @parm BOOL | bReadOnly | [in] Whether or not the resulting dictionary should be read-only. If this
  2985. parameter is FALSE, then the bCopy parameter will be ignored and a copy will always be made (i.e. if the
  2986. resulting dictionary is to allow writes, then a copy must be made of the input data).
  2987. @parm ISEODictionary ** | ppdictResult | [out,retval] The resulting dictionary.
  2988. @rvalue S_OK | Success.
  2989. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  2990. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  2991. @xref <i ISEODictionary> <i ISEODictionaryItem> <f SEOCreateDictionaryFromMultiSzA>
  2992. <f SEOCreateMultiSzFromDictionaryA> <f SEOCreateMultiSzFromDictionaryW>
  2993. */
  2994. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateDictionaryFromMultiSzW( DWORD dwCount,")
  2995. cpp_quote(" LPCWSTR *ppszNames,")
  2996. cpp_quote(" LPCWSTR *ppszValues,")
  2997. cpp_quote(" BOOL bCopy,")
  2998. cpp_quote(" BOOL bReadOnly,")
  2999. cpp_quote(" ISEODictionary **ppdictResult);")
  3000. //@doc SEO
  3001. /*
  3002. @func HRESULT | SEOCreateMultiSzFromDictionaryA | Creates two arrays of strings from an ISEODictionary object.
  3003. @parm ISEODictionary * | pdictDictionary | [in,unique] Specifies the dictionary to get the values from.
  3004. @parm DWORD * | pdwCount | [out] Receives the count of the elements in the pppszNames and pppszValues arrays.
  3005. @parm LPSTR ** | pppszNames | [out] Receives a pointer to the array of strings which are the names of the
  3006. properties. This array is allocated by SEOCreateMultiSzFromDictionary() using the CoTaskMemAlloc()
  3007. function, and the caller must use CoTaskMemFree(*pppszNames) to free it.
  3008. @parm LPSTR ** | ppszValues | [out] Recieves a pointer to the array of MULTI_SZ strings which are the
  3009. values of the properties. This array is allocated by SEOCreateMultiSzFromDictionary() using the
  3010. CoTaskMemAlloc() function, and the caller must use CoTaskMemFree(*pppszValues) to free it.
  3011. @rvalue S_OK | Success.
  3012. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3013. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3014. @xref <i ISEODictionary> <i ISEODictionaryItem> <f SEOCreateMultiSzFromDictionaryW>
  3015. <f SEOCreateDictionaryFromMultiSzA> <f SEOCreateDictionaryFromMultiSzW>
  3016. */
  3017. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateMultiSzFromDictionaryA( ISEODictionary *pdictDictionary,")
  3018. cpp_quote(" DWORD *pdwCount,")
  3019. cpp_quote(" LPSTR **pppszNames,")
  3020. cpp_quote(" LPSTR **pppszValues);")
  3021. //@doc SEO
  3022. /*
  3023. @func HRESULT | SEOCreateMultiSzFromDictionaryW | Creates two arrays of strings from an ISEODictionary object.
  3024. @parm ISEODictionary * | pdictDictionary | [in,unique] Specifies the dictionary to get the values from.
  3025. @parm DWORD * | pdwCount | [out] Receives the count of the elements in the pppszNames and pppszValues arrays.
  3026. @parm LPWSTR ** | pppszNames | [out] Receives a pointer to the array of strings which are the names of the
  3027. properties. This array is allocated by SEOCreateMultiSzFromDictionary() using the CoTaskMemAlloc()
  3028. function, and the caller must use CoTaskMemFree(*pppszNames) to free it.
  3029. @parm LPWSTR ** | ppszValues | [out] Recieves a pointer to the array of MULTI_SZ strings which are the
  3030. values of the properties. This array is allocated by SEOCreateMultiSzFromDictionary() using the
  3031. CoTaskMemAlloc() function, and the caller must use CoTaskMemFree(*pppszValues) to free it.
  3032. @rvalue S_OK | Success.
  3033. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3034. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3035. @xref <i ISEODictionary> <i ISEODictionaryItem> <f SEOCreateMultiSzFromDictionaryA>
  3036. <f SEOCreateDictionaryFromMultiSzA> <f SEOCreateDictionaryFromMultiSzW>
  3037. */
  3038. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateMultiSzFromDictionaryW( ISEODictionary *pdictDictionary,")
  3039. cpp_quote(" DWORD *pdwCount,")
  3040. cpp_quote(" LPWSTR **pppszNames,")
  3041. cpp_quote(" LPWSTR **pppszValues);")
  3042. //@doc SEO
  3043. /*
  3044. @func HRESULT | MCISGetBindingInMetabaseA | Creates an ISEODictionary for a binding in the metabase.
  3045. @parm LPCSTR | pszService | [in] Specifies the name of the service.
  3046. @parm DWORD | dwVirtualServer | [in] Specifies the virtual server instance.
  3047. @parm REFGUID | guidEventSource | [in] Specifies the event source. May be GUID_NULL, in which case
  3048. the pszBinding parameter is ignored and the returned dictionary is for the root of the binding tree.
  3049. @parm LPCSTR | pszBinding | [in] Specifies the name of the binding. If this value is NULL, and bCreate
  3050. is TRUE, then the function creates a new binding.
  3051. @parm BOOL | bCreate | [in] Specifies whether or not to create the binding. If this value is TRUE, then
  3052. if the binding is not already present, it will be created. If this value is FALSE, and the binding is not
  3053. already present, then the function returns SEO_E_NOTPRESENT.
  3054. @parm BOOL | bLock | [in] Specifies whether the ISEODictionary should hold a lock on the Metabase. If
  3055. this value is TRUE, then the lock lasts for the lifetime of the ISEODictionary object. If this value is
  3056. FALSE, then the caller is responsible for managing locking - the caller should query the returned object
  3057. for an IEventLock interface.
  3058. @parm ISEODictionary ** | ppdictResult | [out,retval] Receives the result.
  3059. @rvalue S_OK | Success.
  3060. @rvalue SEO_E_NOTPRESENT | Failure, the binding is not present and bCreate was FALSE.
  3061. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3062. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3063. @xref <i ISEODictionary> <i IEventLock> <f MCISGetBindingInMetabaseW>
  3064. */
  3065. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE MCISGetBindingInMetabaseA( LPCSTR pszService,")
  3066. cpp_quote(" DWORD dwVirtualServer,")
  3067. cpp_quote(" REFGUID guidEventSource,")
  3068. cpp_quote(" LPCSTR pszBinding,")
  3069. cpp_quote(" BOOL bCreate,")
  3070. cpp_quote(" BOOL fLock,")
  3071. cpp_quote(" ISEODictionary **ppdictResult);")
  3072. //@doc SEO
  3073. /*
  3074. @func HRESULT | MCISGetBindingInMetabaseW | Creates an ISEODictionary for a binding in the metabase.
  3075. @parm LPCWSTR | pszService | [in] Specifies the name of the service.
  3076. @parm DWORD | dwVirtualServer | [in] Specifies the virtual server instance.
  3077. @parm REFGUID | guidEventSource | [in] Specifies the event source. May be GUID_NULL, in which case
  3078. the pszBinding parameter is ignore and the returned dictionary is for the root of the binding tree.
  3079. @parm LPCWSTR | pszBinding | [in] Specifies the name of the binding. If this value is NULL, and bCreate
  3080. is TRUE, then the function creates a new binding.
  3081. @parm BOOL | bCreate | [in] Specifies whether or not to create the binding. If this value is TRUE, then
  3082. if the binding is not already present, it will be created. If this value is FALSE, and the binding is not
  3083. already present, then the function returns SEO_E_NOTPRESENT.
  3084. @parm BOOL | bLock | [in] Specifies whether the ISEODictionary should hold a lock on the Metabase. If
  3085. this value is TRUE, then the lock lasts for the lifetime of the ISEODictionary object. If this value is
  3086. FALSE, then the caller is responsible for managing locking - the caller should query the returned object
  3087. for an IEventLock interface.
  3088. @parm ISEODictionary ** | ppdictResult | [out,retval] Receives the result.
  3089. @rvalue S_OK | Success.
  3090. @rvalue SEO_E_NOTPRESENT | Failure, the binding is not present and bCreate was FALSE.
  3091. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3092. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3093. @xref <i ISEODictionary> <i IEventLock> <f MCISGetBindingInMetabaseA>
  3094. */
  3095. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE MCISGetBindingInMetabaseW( LPCWSTR pszService,")
  3096. cpp_quote(" DWORD dwVirtualServer,")
  3097. cpp_quote(" REFGUID guidEventSource,")
  3098. cpp_quote(" LPCWSTR pszBinding,")
  3099. cpp_quote(" BOOL bCreate,")
  3100. cpp_quote(" BOOL fLock,")
  3101. cpp_quote(" ISEODictionary **ppdictResult);")
  3102. //@doc SEO
  3103. /*
  3104. @func HRESULT | SEOListenForEvent | Registers a callback object which gets called when a handle is
  3105. signaled. This function gives the hEvent handle to a background thread - that single thread watches
  3106. all of the handles given to it (using the WaitForMultipleObjectsEx() function), and when any one of
  3107. them is signaled, calls the corresponding event sink.
  3108. @parm ISEORouter * | piRouter | [in,unique] Specifies the router in whose context the listening happens.
  3109. @parm HANDLE | hEvent | [in] Specifies the handle of the event.
  3110. @parm ISEOEventSink * | psinkEventSink | [in,unique] Specifies the event sink object to call when the handle
  3111. is signaled.
  3112. @parm BOOL | bOnce | [in] If TRUE, then the event is only fired once, and then is removed from the
  3113. list of watched events.
  3114. @parm DWORD * | pdwListenHandle | [out] Receives a value which is passed to SEOCancelListenForEvent()
  3115. when the client no longer wants the event to be watched.
  3116. @rvalue S_OK | Success.
  3117. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3118. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3119. @xref <i ISEOEventSink> <f SEOCancelListenForEvent>
  3120. */
  3121. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOListenForEvent( ISEORouter *piRouter,")
  3122. cpp_quote(" HANDLE hEvent,")
  3123. cpp_quote(" ISEOEventSink *psinkEventSink,")
  3124. cpp_quote(" BOOL bOnce,")
  3125. cpp_quote(" DWORD *pdwListenHandle);")
  3126. //@doc SEO
  3127. /*
  3128. @func HRESULT | SEOCancelListenForEvent | Cancels the effects of the SEOListenForEvent() function.
  3129. @parm ISEORouter * | piRouter | [in] Specifies the context in which the event handling is to take place.
  3130. @parm DWORD | dwHandle | [in] Specifies the instance of SEOListenForEvent() which is to be canceled.
  3131. @rvalue S_OK | Success.
  3132. @rvalue SEO_E_NOTPRESENT | Failure, the specified instance of SEOListenForEvent was not found.
  3133. @xref <f SEOListenForEvent> <i ISEORouter>
  3134. */
  3135. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCancelListenForEvent( DWORD dwHandle);")
  3136. //@doc SEO
  3137. /*
  3138. @func HRESULT | SEOCreateIStreamFromFileA | Creates an IStream object for a file.
  3139. @parm HANDLE | hFile | [in] Species the handle of an open file to create the IStream from. If this
  3140. value is NULL, then the pszFile parameter is used. If this value is non-NULL, then the handle is
  3141. duplicated and that duplicate is used by the IStream.
  3142. @parm LPCSTR | pszFile | [in] Specifies the name of the file. If hFile is non-NULL, then this name
  3143. will be saved - the file will only be opened if one of the IStream's methods actually needs to access
  3144. the file. (Note that if this is a relative pathname, and if the current directory changes between
  3145. when the IStream is created and when the IStream attempts to open the file, then unexpected results
  3146. may occur.)
  3147. @parm IStream ** | ppstreamResult | [out,retval] Receives the result.
  3148. @rvalue S_OK | Success.
  3149. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3150. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3151. @xref <f SEOCreateIStreamFromFileW>
  3152. */
  3153. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateIStreamFromFileA( HANDLE hFile,")
  3154. cpp_quote(" LPCSTR pszFile,")
  3155. cpp_quote(" IStream **ppstreamResult);")
  3156. //@doc SEO
  3157. /*
  3158. @func HRESULT | SEOCreateIStreamFromFileW | Creates an IStream object for a file.
  3159. @parm HANDLE | hFile | [in] Species the handle of an open file to create the IStream from. If this
  3160. value is NULL, then the pszFile parameter is used. If this value is non-NULL, then the handle is
  3161. duplicated and that duplicate is used by the IStream.
  3162. @parm LPCWSTR | pszFile | [in] Specifies the name of the file. If hFile is non-NULL, then this name
  3163. will be saved - the file will only be opened if one of the IStream's methods actually needs to access
  3164. the file. (Note that if this is a relative pathname, and if the current directory changes between
  3165. when the IStream is created and when the IStream attempts to open the file, then unexpected results
  3166. may occur.)
  3167. @parm IStream ** | ppstreamResult | [out,retval] Receives the result.
  3168. @rvalue S_OK | Success.
  3169. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3170. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3171. @xref <f SEOCreateIStreamFromFileA>
  3172. */
  3173. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateIStreamFromFileW( HANDLE hFile,")
  3174. cpp_quote(" LPCWSTR pszFile,")
  3175. cpp_quote(" IStream **ppstreamResult);")
  3176. //@doc SEO
  3177. /*
  3178. @func HRESULT | SEOCopyDictionary | Copies a dictionary in-depth - the resulting object is a
  3179. CSEOMemDictionary.
  3180. @parm ISEODictionary * | pdictIn | [in,unique] Specifies the input dictionary.
  3181. @parm ISEODictionary ** |ppdictResult | [out,retval] Receives the result.
  3182. @rvalue S_OK | Success.
  3183. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3184. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3185. @xref <i ISEODictionary>
  3186. */
  3187. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCopyDictionary( ISEODictionary *pdictIn, ISEODictionary **ppdictResult);")
  3188. //@doc SEO
  3189. /*
  3190. @func HRESULT | SEOCreateDictionaryFromIStream | Creates a dictionary from a stream.
  3191. @parm IStream * | pstreamIn | [in] The source stream.
  3192. @parm ISEODictionary ** | ppdictResult | [out,retval] Receives the result.
  3193. @rvalue S_OK | Success.
  3194. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3195. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3196. @xref <i ISEODictionary> <f SEOWriteDictionaryToIStream>
  3197. */
  3198. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOCreateDictionaryFromIStream( IStream *pstreamIn, ISEODictionary **ppdictResult);")
  3199. //@doc SEO
  3200. /*
  3201. @func HRESULT | SEOWriteDictionaryToIStream | Writes a dictionary to a stream.
  3202. @parm ISEODictionary * | pdictIn | [in] Specifies the dictionary.
  3203. @parm IStream * | pstreamOut | [in] The stream to write the dictionary to.
  3204. @rvalue S_OK | Success.
  3205. @rvalue E_POINTER | Failure, a bad pointer was passed to the function.
  3206. @rvalue E_OUTOFMEMORY | Failure, out of memory.
  3207. @xref <i ISEODictionary> <f SEOCreateDictionaryFromIStream>
  3208. */
  3209. cpp_quote("SEODLLDEF HRESULT STDAPICALLTYPE SEOWriteDictionaryToIStream( ISEODictionary *pdictIn, IStream *pstreamOut);")