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.

542 lines
22 KiB

  1. //*****************************************************************************
  2. //
  3. // Microsoft Windows Media
  4. // Copyright (C) Microsoft Corporation. All rights reserved.
  5. //
  6. // FileName: wmspacket.idl
  7. //
  8. // Abstract:
  9. //
  10. //*****************************************************************************
  11. cpp_quote("//*****************************************************************************")
  12. cpp_quote("//")
  13. cpp_quote("// Microsoft Windows Media")
  14. cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
  15. cpp_quote("//")
  16. cpp_quote("// Automatically generated by Midl from wmspacket.idl" )
  17. cpp_quote("//")
  18. cpp_quote("// DO NOT EDIT THIS FILE.")
  19. cpp_quote("//")
  20. cpp_quote("//*****************************************************************************")
  21. cpp_quote("#if _MSC_VER > 1000")
  22. cpp_quote("#pragma once")
  23. cpp_quote("#endif // _MSC_VER > 1000")
  24. import "objidl.idl";
  25. import "WMSBuffer.idl";
  26. import "WMSContext.idl";
  27. cpp_quote( "EXTERN_GUID( IID_IWMSPacket, 0x3309C901,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
  28. cpp_quote( "EXTERN_GUID( IID_IWMSPacketList, 0x3309C902,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
  29. cpp_quote( "EXTERN_GUID( IID_IWMSPacketParser, 0x8b59f7e1, 0x5411, 0x11d2, 0x9e, 0xff, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
  30. cpp_quote( "EXTERN_GUID( IID_IWMSPacketListCallback, 0x49c2a6f1, 0x64b8, 0x11d2, 0x9f, 0xe, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
  31. cpp_quote( "EXTERN_GUID( IID_IWMSStreamSignalHandler, 0x7B10F261,0x26AA,0x11d2,0x9E,0xF2,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
  32. // These are the defined packet attributes.
  33. // WMSPACKETDESC structure is using the fact that first N fields have exact order.
  34. // DO NOT MODIFY ORDER ON ENUM WITHOUT UPDATING WMSPACKETDESC
  35. typedef [public] enum WMS_PACKET_ATTRIBUTES
  36. {
  37. WMS_PACKET_PACKET_NUM = 0,
  38. WMS_PACKET_NUM_BUFFERS,
  39. WMS_PACKET_LENGTH,
  40. WMS_PACKET_SEND_TIME_HI,
  41. WMS_PACKET_SEND_TIME,
  42. WMS_PACKET_STREAM_NUM,
  43. WMS_PACKET_FLAGS,
  44. WMS_PACKET_NET_SEQUENCE_NUMBER,
  45. WMS_PACKET_PRESENT_TIME_HI,
  46. WMS_PACKET_PRESENT_TIME,
  47. WMS_PACKET_RECV_TIME,
  48. WMS_PACKET_NUM_NACKS,
  49. WMS_PACKET_DURATION,
  50. WMS_PACKET_ERASURES_DETECTED,
  51. WMS_PACKET_SEND_TIME_ADJUSTMENT,
  52. WMS_PACKET_PACKETIZED_HDRLEN,
  53. [hidden] WMS_LAST_PACKET_ATTRIBUTE = WMS_PACKET_PACKETIZED_HDRLEN,
  54. } WMS_PACKET_ATTRIBUTES;
  55. // These are the packet flags.
  56. typedef [public] enum WMS_PACKET_FLAG_TYPES
  57. {
  58. WMS_KEY_FRAME_PACKET = 0x0001, // used by server, intrinsic media packet property
  59. WMS_RETRANSMITTED_PACKET = 0x0002, // used by network receiver and netsource
  60. WMS_PACKET_REPORTED = 0x0004, // used by netsource
  61. WMS_PACKET_PACKETIZED = 0x0008, // used by network sender
  62. WMS_RECOVERED_PACKET = 0x0010, // used by fec protocol parser and netsource
  63. WMS_FEC_PACKET = 0x0020, // used by networksender
  64. WMS_FEC_ENCODED_PACKET = 0x0040, // used by network sender and makes sense only if it is a fecpacket
  65. WMS_PACKET_BURST_FLAG = 0x0080, // used by network sender and control protocol packetizer
  66. WMS_PACKET_FIRST_PAYLOAD_FLAG = 0x0100, // used by server, intrinsic media packet property
  67. } WMS_PACKET_FLAG_TYPES;
  68. // These are the defined packet list attributes.
  69. typedef [public] enum WMS_PACKET_LIST_ATTRIBUTES
  70. {
  71. WMS_PACKET_LIST_FLAGS = 0,
  72. WMS_STREAM_SIGNAL = 1,
  73. WMS_PACKET_LIST_GENID = 2,
  74. WMS_PACKET_LIST_SEND_TIME = 3,
  75. WMS_PACKET_LIST_SEND_TIME_HI = 4,
  76. WMS_PACKET_LIST_PLAYLIST_GEN_ID = 5,
  77. [hidden] WMS_LAST_PACKET_LIST_ATTRIBUTE = WMS_PACKET_LIST_PLAYLIST_GEN_ID
  78. } WMS_PACKET_LIST_ATTRIBUTES;
  79. // These are the packet list flags.
  80. typedef [public] enum WMS_PACKET_LIST_FLAG_TYPES
  81. {
  82. WMS_PACKET_LIST_NEEDS_FIXUP = 0x0001,
  83. WMS_PACKET_LIST_UDP_RESEND = 0x0002,
  84. WMS_PACKET_LIST_PRESTUFF = 0x0004,
  85. WMS_PACKET_LIST_PLAYLIST_CHANGE_RECEDING = 0x0008,
  86. } WMS_PACKET_LIST_FLAG_TYPES;
  87. typedef [public] enum WMS_PACKET_LIST_EX_FLAGS
  88. {
  89. WMS_NO_ADDREF = 0x80000000,
  90. WMS_PACKET_NO_ADDREF = 0x80000000,
  91. WMS_PACKET_NO_RELEASE = 0x40000000,
  92. WMS_PLIST_BUFFER_NO_ADDREF = 0x80000000,
  93. WMS_PLIST_BUFFER_NO_RELEASE = 0x40000000,
  94. WMS_PLIST_NO_ADDREF = 0x80000000,
  95. } WMS_PACKET_LIST_EX_FLAGS;
  96. typedef [public] enum WMS_PACKET_BUFFER_FLAGS
  97. {
  98. WMS_INSERT_BUFFER_AT_END = 0xFFFFFFFF
  99. } WMS_PACKET_BUFFER_FLAGS;
  100. typedef [public] enum WMS_PACKET_BUFFER_EX_FLAGS
  101. {
  102. WMS_BUFFER_NO_ADDREF = 0x80000000,
  103. WMS_BUFFER_NO_RELEASE = 0x40000000,
  104. WMS_BUFFER_NO_REFCOUNT = 0x20000000,
  105. WMS_BUFFER_COMBINE = 0x10000000,
  106. } WMS_PACKET_BUFFER_EX_FLAGS;
  107. typedef [public] enum WMS_PACKET_STATUS_FLAGS
  108. {
  109. WMS_START_NEXT_READ = 0x0001,
  110. WMS_WRITE_COMPLETED = 0x0002,
  111. WMS_REQUEST_BUFFER = 0x0004,
  112. WMS_HEADER_BUFFER = 0x0008,
  113. } WMS_PACKET_STATUS_FLAGS;
  114. typedef [public] enum WMS_PARSER_FLAG_TYPES
  115. {
  116. WMS_PARSER_PRESERVE_PADDING = 0x0001,
  117. } WMS_PARSER_FLAG_TYPES;
  118. typedef unsigned __int64 QWORD;
  119. interface IWMSPacketParser;
  120. interface IWMSPacketList;
  121. interface IWMSPacketListCallback;
  122. //////////////////////////////////////////////////////////////////////////////
  123. //
  124. // PACKETS
  125. //
  126. //////////////////////////////////////////////////////////////////////////////
  127. //////////////////////////////////////////////////////////////////////////////
  128. [
  129. object,
  130. pointer_default(unique),
  131. uuid(3309C901-10A4-11d2-9EEE-006097D2D7CF),
  132. version(9.0),
  133. helpstring("Contains methods for managing the buffers, attributes, and headers associated with a packet.")
  134. ]
  135. interface IWMSPacket : IUnknown
  136. {
  137. typedef struct
  138. {
  139. INSSBuffer * pBuffer;
  140. DWORD dwBufferOffset;
  141. DWORD dwBufferLen;
  142. WORD wFlags;
  143. } WMSBUFFERDESC;
  144. // Every packet can be a scatter/gather list. Packets
  145. // are variable size, but the raw IO reads fixed sized
  146. // buffers. Note, the buffer pointer is not marshalled,
  147. // so this won't work over dcom.
  148. [helpstring("Retrieves an array of WMSBUFFERDESC structures. Each WMSBUFFERDESC structure contains the location and size of a specific buffer region that contains the packet's data.")] HRESULT
  149. GetAllBuffers(
  150. [in] DWORD dwMaxNumBuffers,
  151. [out] WMSBUFFERDESC *pDesc,
  152. [out] DWORD *pdwNumBuffers,
  153. [in] DWORD dwExFlags
  154. );
  155. [helpstring("Retrieves the location of a specific buffer region that contains the packet's data.")] HRESULT
  156. GetBuffer(
  157. [in] DWORD dwBufferNum,
  158. [out] INSSBuffer **ppBuffer,
  159. [out] DWORD *pdwBufferOffset,
  160. [out] DWORD *pdwBufferLen,
  161. [out] WORD *pwFlags,
  162. [in, defaultvalue(0)] DWORD dwExFlags
  163. );
  164. [helpstring("Adds a new region in a buffer to the collection of buffer regions associated with the packet.")] HRESULT
  165. InsertBuffer(
  166. [in] DWORD dwBufferNum, // -1 means at the end
  167. [in] INSSBuffer *pBuffer,
  168. [in] DWORD dwBufferOffset,
  169. [in] DWORD dwBufferLen,
  170. [in] WORD wFlags,
  171. [in, defaultvalue(0)] DWORD dwExFlags
  172. );
  173. [helpstring("Removes the specified region in a buffer from the collection of buffer regions associated with the packet.")] HRESULT
  174. RemoveBuffer( [in] DWORD dwBufferNum);
  175. [helpstring("Removes all of the buffer regions associated with the packet.")] HRESULT
  176. RemoveAllBuffers();
  177. // Packet attributes. Different parts of the server may read
  178. // and write these attributes.
  179. [helpstring("Retrieves the value for a packet attribute defined by WMS_PACKET_ATTRIBUTES.")] HRESULT
  180. GetAttribute( [in] DWORD dwValueName, [out] DWORD *pdwValue );
  181. [helpstring("Specifies the value for a packet attribute defined by WMS_PACKET_ATTRIBUTES.")] HRESULT
  182. SetAttribute( [in] DWORD dwValueName, [in] DWORD dwValue );
  183. [helpstring("Retrieves the value for an extended packet attribute defined by a plug-in.")] HRESULT
  184. GetExtendedAttribute(
  185. [in] DWORD dwValueName,
  186. [out] VARIANT *pVariantValue );
  187. [helpstring("Retrieves the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
  188. GetExtendedAttributeByIndex(
  189. [in] DWORD dwIndex,
  190. [out] DWORD * pdwValueName,
  191. [out] VARIANT *pVariantValue );
  192. [helpstring("Specifies the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
  193. SetExtendedAttribute(
  194. [in] DWORD dwValueName,
  195. [in] VARIANT VariantValue );
  196. [helpstring("Retrieves the number of extended packet attributes.")] HRESULT
  197. GetExtendedAttributeCount(
  198. [out] DWORD * pdwAttrs );
  199. [helpstring("Copies the specified attributes to another packet.")] HRESULT
  200. CopyAttributes(
  201. [in] IWMSPacket * pDest,
  202. [in, defaultvalue(NULL)] DWORD * pdwAttrNames,
  203. [in, defaultvalue(0)] DWORD dwNumAttr,
  204. [in, defaultvalue(FALSE)] BOOL fCopyExtAttr );
  205. // Packet header manipulation. Appends header to first buffer in packet or creates new buffer and writes header to it
  206. [helpstring("Appends header data to the first buffer region associated with the packet or to a new buffer.")] HRESULT
  207. AppendHeader(
  208. [in] IWMSBufferAllocator * pAlloc,
  209. [in] DWORD dwHeaderLen,
  210. [in] BYTE * pbHeader );
  211. // Packet header manipulation. Copies data to specific location within packet header
  212. [helpstring("Copies data to specific location within packet header.")] HRESULT
  213. SetInHeader(
  214. [in] DWORD cbOffset,
  215. [in] BYTE * pbData,
  216. [in] DWORD cbData );
  217. };
  218. //////////////////////////////////////////////////////////////////////////////
  219. //
  220. // PACKET LISTS
  221. //
  222. // Each packet lists contains data from exactly one buffer.
  223. //////////////////////////////////////////////////////////////////////////////
  224. //////////////////////////////////////////////////////////////////////////////
  225. [
  226. object,
  227. pointer_default(unique),
  228. uuid(49C2A6F1-64B8-11d2-9F0E-006097D2D7CF),
  229. version(9.0),
  230. helpstring("Contains a method to respond to the IWMSPacketList::ReportStatus method call.")
  231. ]
  232. interface IWMSPacketListCallback : IUnknown
  233. {
  234. [helpstring("Specifies the results of the the IWMSPacketList::ReportStatus method call.")] HRESULT
  235. OnReportPacketListStatus( [in] IWMSPacketList *pBuffer,
  236. [in] DWORD dwStatus );
  237. };
  238. //////////////////////////////////////////////////////////////////////////////
  239. [
  240. object,
  241. pointer_default(unique),
  242. uuid(3309C902-10A4-11d2-9EEE-006097D2D7CF),
  243. version(9.0),
  244. helpstring("Contains methods for managing the packets, attributes, and buffers associated with a packet list.")
  245. ]
  246. interface IWMSPacketList : IWMSBufferAllocator
  247. {
  248. typedef struct
  249. {
  250. IWMSPacket * pPacket;
  251. struct {
  252. DWORD dwPacketNum; // WMS_PACKET_PACKET_NUM = 0,
  253. DWORD dwPacketNumBuffers; //WMS_PACKET_NUM_BUFFERS,
  254. DWORD dwPacketLength; //WMS_PACKET_LENGTH,
  255. DWORD dwPacketSendTimeHi; //WMS_PACKET_SEND_TIME_HI,
  256. DWORD dwPacketSendTime; //WMS_PACKET_SEND_TIME,
  257. DWORD dwPacketStreamNum;//WMS_PACKET_STREAM_NUM,
  258. DWORD dwPacketFlags; //WMS_PACKET_FLAGS,
  259. DWORD dwPacketNetSequenceNum;//WMS_PACKET_NET_SEQUENCE_NUMBER,
  260. } Attrs;
  261. } WMSPACKETDESC;
  262. [helpstring("Retrieves the number of packets in the packet list.")] HRESULT
  263. GetPacketCount(
  264. [out] DWORD *pdwNumPackets );
  265. [helpstring("Retrieves a specific packet.")] HRESULT
  266. GetPacket(
  267. [in] DWORD dwPacketNum,
  268. [out] IWMSPacket **ppPacket,
  269. [in, defaultvalue(0)] DWORD dwExFlags );
  270. [helpstring("Retrieves either an array of WMSPACKETDESC structures or an array of packets in the packet list.")] HRESULT
  271. GetAllPackets(
  272. [in] DWORD dwFirstPacket,
  273. [in] DWORD dwMaxNumPackets,
  274. [out] WMSPACKETDESC * pPacketDesc,
  275. [out] IWMSPacket ** ppPacket,
  276. [out] DWORD * pdwDescNum,
  277. [in] DWORD dwExFlags );
  278. [helpstring("Adds a packet to the packet list at the specified location.")] HRESULT
  279. InsertPacket(
  280. [in] DWORD dwPacketNum,
  281. [in] IWMSPacket *pPacket,
  282. [in, defaultvalue(0)] DWORD dwExFlags );
  283. [helpstring("Adds a packet to the end of the packet list.")] HRESULT
  284. AppendPacket(
  285. [in] IWMSPacket *pPacket,
  286. [in, defaultvalue(0)] DWORD dwExFlags );
  287. [helpstring("Removes the specified packet from the packet list.")] HRESULT
  288. RemovePacket(
  289. [in] DWORD dwPacketNum );
  290. [helpstring("Removes all of the packets from the packet list.")] HRESULT
  291. RemoveAllPackets(
  292. [in, defaultvalue(0)] DWORD dwExFlags );
  293. // Packet list attributes. Different parts of the server may read
  294. // and write these attributes.
  295. [helpstring("Retrieves the value for a packet list attribute defined by WMS_PACKET_LIST_ATTRIBUTES.")] HRESULT
  296. GetAttribute( [in] DWORD dwValueName, [in] DWORD *pdwValue );
  297. [helpstring("Specifies the value for a packet list attribute defined by WMS_PACKET_LIST_ATTRIBUTES.")] HRESULT
  298. SetAttribute( [in] DWORD dwValueName, [in] DWORD dwValue );
  299. [helpstring("Retrieves the stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
  300. GetStreamSignalParam( [out] VARIANT *pParameter );
  301. [helpstring("Specifies the stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
  302. SetStreamSignalParam( [in] VARIANT *pParameter );
  303. [helpstring("Retrieves the packet parser object that created the packet list.")] HRESULT
  304. GetPacketParser(
  305. [out] IWMSPacketParser **ppSource,
  306. [in, defaultvalue(0)] DWORD dwExFlags );
  307. [helpstring("Specifies the packet parser object that created the packet list.")] HRESULT
  308. SetPacketParser(
  309. [in] IWMSPacketParser *pSource );
  310. [helpstring("Retrieves the buffer associated with this packet list.")] HRESULT
  311. GetBuffer(
  312. [out] INSSBuffer **ppBuffer,
  313. [in, defaultvalue(0)] DWORD dwExFlags );
  314. [helpstring("Specifies the buffer associated with this packet list.")] HRESULT
  315. SetBuffer(
  316. [in] INSSBuffer *pBuffer );
  317. [helpstring("Specifies the callback object that is used to respond to the ReportStatus method call.")] HRESULT
  318. SetCompletionCallback( [in] IWMSPacketListCallback *pCallback );
  319. [helpstring("Retrieves the callback object that is used to respond to the ReportStatus method call.")] HRESULT
  320. GetCompletionCallback( [out] IWMSPacketListCallback **ppCallback );
  321. [helpstring("Retrieves the value for an extended packet list attribute defined by a plug-in.")] HRESULT
  322. GetExtendedAttribute(
  323. [in] DWORD dwValueName,
  324. [out] VARIANT *pVariantValue );
  325. [helpstring("Retrieves the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
  326. GetExtendedAttributeByIndex(
  327. [in] DWORD dwIndex,
  328. [out] DWORD * pdwValueName,
  329. [out] VARIANT *pVariantValue );
  330. [helpstring("Specifies the value for an extended packet attribute defined by a plug-in.")] HRESULT
  331. SetExtendedAttribute(
  332. [in] DWORD dwValueName,
  333. [in] VARIANT VariantValue );
  334. [helpstring("Retrieves the number of extended attributes.")] HRESULT
  335. GetExtendedAttributeCount(
  336. [out] DWORD * pdwAttrs );
  337. [helpstring("Requests the status for a packet list.")] HRESULT
  338. ReportStatus( [in] DWORD dwStatus );
  339. [helpstring("Creates a copy of the packet list.")] HRESULT
  340. ClonePacketList( [out] IWMSPacketList **ppClonedPacketList );
  341. [helpstring("Allocates a new packet.")] HRESULT
  342. AllocPacket( [out] IWMSPacket **ppPacket );
  343. };
  344. //////////////////////////////////////////////////////////////////////////////
  345. //
  346. // PACKET PARSERS
  347. //
  348. //////////////////////////////////////////////////////////////////////////////
  349. //////////////////////////////////////////////////////////////////////////////
  350. [
  351. object,
  352. pointer_default(unique),
  353. uuid(8B59F7E1-5411-11d2-9EFF-006097D2D7CF),
  354. version(9.0),
  355. helpstring("Provides methods to manipulate individual packets. This interface is implemented by a media parser plug-in.")
  356. ]
  357. interface IWMSPacketParser : IUnknown
  358. {
  359. // Call this if you change packet attributes.
  360. [helpstring("Updates the packet data to reflect the packets attribute values.")] HRESULT
  361. UpdatePacket( [in] IWMSPacket *pPacket );
  362. [helpstring("Adds an array of packets to a packet list.")] HRESULT
  363. CombinePackets(
  364. [in] DWORD dwNumInputPackets,
  365. [in] IWMSPacket **pInputPacketArray,
  366. [in] IWMSPacketList *pPacketList,
  367. [in] DWORD dwFlags
  368. );
  369. }
  370. //////////////////////////////////////////////////////////////////////////////
  371. //
  372. // STREAM EVENT INTERFACES
  373. //
  374. //////////////////////////////////////////////////////////////////////////////
  375. // These specify types of stream signals
  376. typedef [public] enum WMS_STREAM_SIGNAL_TYPE
  377. {
  378. WMS_NO_STREAM_CHANGE, // 0x0
  379. // Param: None
  380. // There are different errors passed in hr:
  381. // 1. the source crashed
  382. // 2. we hit the last packet, but the source is still
  383. // running so it may be seeked back to the beginning.
  384. WMS_STREAM_ERROR, // 0x1
  385. // Param: None
  386. // This happens when a stream error causes a fail-over in
  387. // a playlist. This will be followed by a playlistchange.
  388. WMS_STREAM_ERROR_HANDLED_BY_PLAYLIST, // 0x2
  389. // Param: The header of the new stream
  390. // This happens when a playlist changes its active entry.
  391. WMS_PLAYLIST_CHANGED, // 0x3
  392. // Param: see below for EOS type or none
  393. WMS_END_OF_STREAM, // 0x4
  394. // Param: The header of the queued stream
  395. WMS_PLAYLIST_STREAM_QUEUED, // 0x5
  396. // Param: The expected amount of dead air in milliseconds
  397. WMS_BEGIN_NO_DATA_PERIOD, // 0x6
  398. // Param: The name of the event as a BSTR
  399. WMS_PLAYLIST_EVENT, // 0x7
  400. // Param: The name of the event as a BSTR
  401. WMS_PLAYLIST_CUE_EVENT, // 0x8
  402. // Param: The name of the event as a BSTR
  403. WMS_PLAYLIST_UNCUE_EVENT, // 0x9
  404. // Param: The name of the element as a BSTR
  405. WMS_PLAYLIST_BEGIN_ELEMENT_EVENT, // 0xA
  406. // Param: The name of the element as a BSTR
  407. WMS_PLAYLIST_END_ELEMENT_EVENT, // 0xB
  408. // Param: None
  409. WMS_STREAM_SWITCH_DONE, // 0xC
  410. // Param: None
  411. WMS_RESET_TO_REAL_TIME, // 0xD
  412. // Param : QWORD, first DWORD contains the number of packets lost
  413. // while second DWORD contains the total packets recieved so far
  414. WMS_DATA_LOSS_DETECTED, // 0xE
  415. WMS_REUSE_ACCEL_PARAMS // 0xf
  416. } WMS_STREAM_SIGNAL_TYPE;
  417. // These are the EOS types.
  418. typedef [public] enum WMS_STREAM_SIGNAL_EOS_TYPE
  419. {
  420. WMS_STREAM_SIGNAL_EOS_RESERVED = 1, // internal type don't use
  421. WMS_STREAM_SIGNAL_EOS_RECEDING = 2,
  422. }WMS_STREAM_SIGNAL_EOS_TYPE;
  423. //////////////////////////////////////////////////////////////////////////////
  424. [
  425. object,
  426. pointer_default(unique),
  427. uuid(7B10F261-26AA-11d2-9EF2-006097D2D7CF),
  428. version(9.0),
  429. helpstring("Contains a method to provide notification of stream signals defined by WMS_STREAM_SIGNAL_TYPE.")
  430. ]
  431. interface IWMSStreamSignalHandler : IUnknown
  432. {
  433. //
  434. // The input parameter dwSignalType should have one of the enumerated values
  435. // in WMS_STREAM_SIGNAL_TYPE.
  436. //
  437. [helpstring("Provides notification of a stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
  438. OnStreamSignal(
  439. [in] DWORD dwSignalType, // WMS_STREAM_SIGNAL_TYPE
  440. [in] VARIANT *pSignalParameter,
  441. [in] IWMSContext *pPresentation
  442. );
  443. };