wmsdkidl.h
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:644k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2.  /* File created by MIDL compiler version 6.00.0361 */
  3. /* Compiler settings for wmsdkidl.idl:
  4.     Oicf, W1, Zp8, env=Win32 (32b run)
  5.     protocol : dce , ms_ext, c_ext, robust
  6.     error checks: allocation ref bounds_check enum stub_data 
  7.     VC __declspec() decoration level: 
  8.          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
  9.          DECLSPEC_UUID(), MIDL_INTERFACE()
  10. */
  11. //@@MIDL_FILE_HEADING(  )
  12. #pragma warning( disable: 4049 )  /* more than 64k source lines */
  13. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  14. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  15. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  16. #endif
  17. #include "rpc.h"
  18. #include "rpcndr.h"
  19. #ifndef __RPCNDR_H_VERSION__
  20. #error this stub requires an updated version of <rpcndr.h>
  21. #endif // __RPCNDR_H_VERSION__
  22. #ifndef COM_NO_WINDOWS_H
  23. #include "windows.h"
  24. #include "ole2.h"
  25. #endif /*COM_NO_WINDOWS_H*/
  26. #ifndef __wmsdkidl_h__
  27. #define __wmsdkidl_h__
  28. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  29. #pragma once
  30. #endif
  31. /* Forward Declarations */ 
  32. #ifndef __IWMMediaProps_FWD_DEFINED__
  33. #define __IWMMediaProps_FWD_DEFINED__
  34. typedef interface IWMMediaProps IWMMediaProps;
  35. #endif  /* __IWMMediaProps_FWD_DEFINED__ */
  36. #ifndef __IWMVideoMediaProps_FWD_DEFINED__
  37. #define __IWMVideoMediaProps_FWD_DEFINED__
  38. typedef interface IWMVideoMediaProps IWMVideoMediaProps;
  39. #endif  /* __IWMVideoMediaProps_FWD_DEFINED__ */
  40. #ifndef __IWMWriter_FWD_DEFINED__
  41. #define __IWMWriter_FWD_DEFINED__
  42. typedef interface IWMWriter IWMWriter;
  43. #endif  /* __IWMWriter_FWD_DEFINED__ */
  44. #ifndef __IWMDRMWriter_FWD_DEFINED__
  45. #define __IWMDRMWriter_FWD_DEFINED__
  46. typedef interface IWMDRMWriter IWMDRMWriter;
  47. #endif  /* __IWMDRMWriter_FWD_DEFINED__ */
  48. #ifndef __IWMInputMediaProps_FWD_DEFINED__
  49. #define __IWMInputMediaProps_FWD_DEFINED__
  50. typedef interface IWMInputMediaProps IWMInputMediaProps;
  51. #endif  /* __IWMInputMediaProps_FWD_DEFINED__ */
  52. #ifndef __IWMPropertyVault_FWD_DEFINED__
  53. #define __IWMPropertyVault_FWD_DEFINED__
  54. typedef interface IWMPropertyVault IWMPropertyVault;
  55. #endif  /* __IWMPropertyVault_FWD_DEFINED__ */
  56. #ifndef __IWMIStreamProps_FWD_DEFINED__
  57. #define __IWMIStreamProps_FWD_DEFINED__
  58. typedef interface IWMIStreamProps IWMIStreamProps;
  59. #endif  /* __IWMIStreamProps_FWD_DEFINED__ */
  60. #ifndef __IWMReader_FWD_DEFINED__
  61. #define __IWMReader_FWD_DEFINED__
  62. typedef interface IWMReader IWMReader;
  63. #endif  /* __IWMReader_FWD_DEFINED__ */
  64. #ifndef __IWMSyncReader_FWD_DEFINED__
  65. #define __IWMSyncReader_FWD_DEFINED__
  66. typedef interface IWMSyncReader IWMSyncReader;
  67. #endif  /* __IWMSyncReader_FWD_DEFINED__ */
  68. #ifndef __IWMSyncReader2_FWD_DEFINED__
  69. #define __IWMSyncReader2_FWD_DEFINED__
  70. typedef interface IWMSyncReader2 IWMSyncReader2;
  71. #endif  /* __IWMSyncReader2_FWD_DEFINED__ */
  72. #ifndef __IWMOutputMediaProps_FWD_DEFINED__
  73. #define __IWMOutputMediaProps_FWD_DEFINED__
  74. typedef interface IWMOutputMediaProps IWMOutputMediaProps;
  75. #endif  /* __IWMOutputMediaProps_FWD_DEFINED__ */
  76. #ifndef __IWMStatusCallback_FWD_DEFINED__
  77. #define __IWMStatusCallback_FWD_DEFINED__
  78. typedef interface IWMStatusCallback IWMStatusCallback;
  79. #endif  /* __IWMStatusCallback_FWD_DEFINED__ */
  80. #ifndef __IWMReaderCallback_FWD_DEFINED__
  81. #define __IWMReaderCallback_FWD_DEFINED__
  82. typedef interface IWMReaderCallback IWMReaderCallback;
  83. #endif  /* __IWMReaderCallback_FWD_DEFINED__ */
  84. #ifndef __IWMCredentialCallback_FWD_DEFINED__
  85. #define __IWMCredentialCallback_FWD_DEFINED__
  86. typedef interface IWMCredentialCallback IWMCredentialCallback;
  87. #endif  /* __IWMCredentialCallback_FWD_DEFINED__ */
  88. #ifndef __IWMMetadataEditor_FWD_DEFINED__
  89. #define __IWMMetadataEditor_FWD_DEFINED__
  90. typedef interface IWMMetadataEditor IWMMetadataEditor;
  91. #endif  /* __IWMMetadataEditor_FWD_DEFINED__ */
  92. #ifndef __IWMMetadataEditor2_FWD_DEFINED__
  93. #define __IWMMetadataEditor2_FWD_DEFINED__
  94. typedef interface IWMMetadataEditor2 IWMMetadataEditor2;
  95. #endif  /* __IWMMetadataEditor2_FWD_DEFINED__ */
  96. #ifndef __IWMDRMEditor_FWD_DEFINED__
  97. #define __IWMDRMEditor_FWD_DEFINED__
  98. typedef interface IWMDRMEditor IWMDRMEditor;
  99. #endif  /* __IWMDRMEditor_FWD_DEFINED__ */
  100. #ifndef __IWMHeaderInfo_FWD_DEFINED__
  101. #define __IWMHeaderInfo_FWD_DEFINED__
  102. typedef interface IWMHeaderInfo IWMHeaderInfo;
  103. #endif  /* __IWMHeaderInfo_FWD_DEFINED__ */
  104. #ifndef __IWMHeaderInfo2_FWD_DEFINED__
  105. #define __IWMHeaderInfo2_FWD_DEFINED__
  106. typedef interface IWMHeaderInfo2 IWMHeaderInfo2;
  107. #endif  /* __IWMHeaderInfo2_FWD_DEFINED__ */
  108. #ifndef __IWMHeaderInfo3_FWD_DEFINED__
  109. #define __IWMHeaderInfo3_FWD_DEFINED__
  110. typedef interface IWMHeaderInfo3 IWMHeaderInfo3;
  111. #endif  /* __IWMHeaderInfo3_FWD_DEFINED__ */
  112. #ifndef __IWMProfileManager_FWD_DEFINED__
  113. #define __IWMProfileManager_FWD_DEFINED__
  114. typedef interface IWMProfileManager IWMProfileManager;
  115. #endif  /* __IWMProfileManager_FWD_DEFINED__ */
  116. #ifndef __IWMProfileManager2_FWD_DEFINED__
  117. #define __IWMProfileManager2_FWD_DEFINED__
  118. typedef interface IWMProfileManager2 IWMProfileManager2;
  119. #endif  /* __IWMProfileManager2_FWD_DEFINED__ */
  120. #ifndef __IWMProfileManagerLanguage_FWD_DEFINED__
  121. #define __IWMProfileManagerLanguage_FWD_DEFINED__
  122. typedef interface IWMProfileManagerLanguage IWMProfileManagerLanguage;
  123. #endif  /* __IWMProfileManagerLanguage_FWD_DEFINED__ */
  124. #ifndef __IWMProfile_FWD_DEFINED__
  125. #define __IWMProfile_FWD_DEFINED__
  126. typedef interface IWMProfile IWMProfile;
  127. #endif  /* __IWMProfile_FWD_DEFINED__ */
  128. #ifndef __IWMProfile2_FWD_DEFINED__
  129. #define __IWMProfile2_FWD_DEFINED__
  130. typedef interface IWMProfile2 IWMProfile2;
  131. #endif  /* __IWMProfile2_FWD_DEFINED__ */
  132. #ifndef __IWMProfile3_FWD_DEFINED__
  133. #define __IWMProfile3_FWD_DEFINED__
  134. typedef interface IWMProfile3 IWMProfile3;
  135. #endif  /* __IWMProfile3_FWD_DEFINED__ */
  136. #ifndef __IWMStreamConfig_FWD_DEFINED__
  137. #define __IWMStreamConfig_FWD_DEFINED__
  138. typedef interface IWMStreamConfig IWMStreamConfig;
  139. #endif  /* __IWMStreamConfig_FWD_DEFINED__ */
  140. #ifndef __IWMStreamConfig2_FWD_DEFINED__
  141. #define __IWMStreamConfig2_FWD_DEFINED__
  142. typedef interface IWMStreamConfig2 IWMStreamConfig2;
  143. #endif  /* __IWMStreamConfig2_FWD_DEFINED__ */
  144. #ifndef __IWMStreamConfig3_FWD_DEFINED__
  145. #define __IWMStreamConfig3_FWD_DEFINED__
  146. typedef interface IWMStreamConfig3 IWMStreamConfig3;
  147. #endif  /* __IWMStreamConfig3_FWD_DEFINED__ */
  148. #ifndef __IWMPacketSize_FWD_DEFINED__
  149. #define __IWMPacketSize_FWD_DEFINED__
  150. typedef interface IWMPacketSize IWMPacketSize;
  151. #endif  /* __IWMPacketSize_FWD_DEFINED__ */
  152. #ifndef __IWMPacketSize2_FWD_DEFINED__
  153. #define __IWMPacketSize2_FWD_DEFINED__
  154. typedef interface IWMPacketSize2 IWMPacketSize2;
  155. #endif  /* __IWMPacketSize2_FWD_DEFINED__ */
  156. #ifndef __IWMStreamList_FWD_DEFINED__
  157. #define __IWMStreamList_FWD_DEFINED__
  158. typedef interface IWMStreamList IWMStreamList;
  159. #endif  /* __IWMStreamList_FWD_DEFINED__ */
  160. #ifndef __IWMMutualExclusion_FWD_DEFINED__
  161. #define __IWMMutualExclusion_FWD_DEFINED__
  162. typedef interface IWMMutualExclusion IWMMutualExclusion;
  163. #endif  /* __IWMMutualExclusion_FWD_DEFINED__ */
  164. #ifndef __IWMMutualExclusion2_FWD_DEFINED__
  165. #define __IWMMutualExclusion2_FWD_DEFINED__
  166. typedef interface IWMMutualExclusion2 IWMMutualExclusion2;
  167. #endif  /* __IWMMutualExclusion2_FWD_DEFINED__ */
  168. #ifndef __IWMBandwidthSharing_FWD_DEFINED__
  169. #define __IWMBandwidthSharing_FWD_DEFINED__
  170. typedef interface IWMBandwidthSharing IWMBandwidthSharing;
  171. #endif  /* __IWMBandwidthSharing_FWD_DEFINED__ */
  172. #ifndef __IWMStreamPrioritization_FWD_DEFINED__
  173. #define __IWMStreamPrioritization_FWD_DEFINED__
  174. typedef interface IWMStreamPrioritization IWMStreamPrioritization;
  175. #endif  /* __IWMStreamPrioritization_FWD_DEFINED__ */
  176. #ifndef __IWMWriterAdvanced_FWD_DEFINED__
  177. #define __IWMWriterAdvanced_FWD_DEFINED__
  178. typedef interface IWMWriterAdvanced IWMWriterAdvanced;
  179. #endif  /* __IWMWriterAdvanced_FWD_DEFINED__ */
  180. #ifndef __IWMWriterAdvanced2_FWD_DEFINED__
  181. #define __IWMWriterAdvanced2_FWD_DEFINED__
  182. typedef interface IWMWriterAdvanced2 IWMWriterAdvanced2;
  183. #endif  /* __IWMWriterAdvanced2_FWD_DEFINED__ */
  184. #ifndef __IWMWriterAdvanced3_FWD_DEFINED__
  185. #define __IWMWriterAdvanced3_FWD_DEFINED__
  186. typedef interface IWMWriterAdvanced3 IWMWriterAdvanced3;
  187. #endif  /* __IWMWriterAdvanced3_FWD_DEFINED__ */
  188. #ifndef __IWMWriterPreprocess_FWD_DEFINED__
  189. #define __IWMWriterPreprocess_FWD_DEFINED__
  190. typedef interface IWMWriterPreprocess IWMWriterPreprocess;
  191. #endif  /* __IWMWriterPreprocess_FWD_DEFINED__ */
  192. #ifndef __IWMWriterPostViewCallback_FWD_DEFINED__
  193. #define __IWMWriterPostViewCallback_FWD_DEFINED__
  194. typedef interface IWMWriterPostViewCallback IWMWriterPostViewCallback;
  195. #endif  /* __IWMWriterPostViewCallback_FWD_DEFINED__ */
  196. #ifndef __IWMWriterPostView_FWD_DEFINED__
  197. #define __IWMWriterPostView_FWD_DEFINED__
  198. typedef interface IWMWriterPostView IWMWriterPostView;
  199. #endif  /* __IWMWriterPostView_FWD_DEFINED__ */
  200. #ifndef __IWMWriterSink_FWD_DEFINED__
  201. #define __IWMWriterSink_FWD_DEFINED__
  202. typedef interface IWMWriterSink IWMWriterSink;
  203. #endif  /* __IWMWriterSink_FWD_DEFINED__ */
  204. #ifndef __IWMRegisterCallback_FWD_DEFINED__
  205. #define __IWMRegisterCallback_FWD_DEFINED__
  206. typedef interface IWMRegisterCallback IWMRegisterCallback;
  207. #endif  /* __IWMRegisterCallback_FWD_DEFINED__ */
  208. #ifndef __IWMWriterFileSink_FWD_DEFINED__
  209. #define __IWMWriterFileSink_FWD_DEFINED__
  210. typedef interface IWMWriterFileSink IWMWriterFileSink;
  211. #endif  /* __IWMWriterFileSink_FWD_DEFINED__ */
  212. #ifndef __IWMWriterFileSink2_FWD_DEFINED__
  213. #define __IWMWriterFileSink2_FWD_DEFINED__
  214. typedef interface IWMWriterFileSink2 IWMWriterFileSink2;
  215. #endif  /* __IWMWriterFileSink2_FWD_DEFINED__ */
  216. #ifndef __IWMWriterFileSink3_FWD_DEFINED__
  217. #define __IWMWriterFileSink3_FWD_DEFINED__
  218. typedef interface IWMWriterFileSink3 IWMWriterFileSink3;
  219. #endif  /* __IWMWriterFileSink3_FWD_DEFINED__ */
  220. #ifndef __IWMWriterNetworkSink_FWD_DEFINED__
  221. #define __IWMWriterNetworkSink_FWD_DEFINED__
  222. typedef interface IWMWriterNetworkSink IWMWriterNetworkSink;
  223. #endif  /* __IWMWriterNetworkSink_FWD_DEFINED__ */
  224. #ifndef __IWMClientConnections_FWD_DEFINED__
  225. #define __IWMClientConnections_FWD_DEFINED__
  226. typedef interface IWMClientConnections IWMClientConnections;
  227. #endif  /* __IWMClientConnections_FWD_DEFINED__ */
  228. #ifndef __IWMClientConnections2_FWD_DEFINED__
  229. #define __IWMClientConnections2_FWD_DEFINED__
  230. typedef interface IWMClientConnections2 IWMClientConnections2;
  231. #endif  /* __IWMClientConnections2_FWD_DEFINED__ */
  232. #ifndef __IWMReaderAdvanced_FWD_DEFINED__
  233. #define __IWMReaderAdvanced_FWD_DEFINED__
  234. typedef interface IWMReaderAdvanced IWMReaderAdvanced;
  235. #endif  /* __IWMReaderAdvanced_FWD_DEFINED__ */
  236. #ifndef __IWMReaderAdvanced2_FWD_DEFINED__
  237. #define __IWMReaderAdvanced2_FWD_DEFINED__
  238. typedef interface IWMReaderAdvanced2 IWMReaderAdvanced2;
  239. #endif  /* __IWMReaderAdvanced2_FWD_DEFINED__ */
  240. #ifndef __IWMReaderAdvanced3_FWD_DEFINED__
  241. #define __IWMReaderAdvanced3_FWD_DEFINED__
  242. typedef interface IWMReaderAdvanced3 IWMReaderAdvanced3;
  243. #endif  /* __IWMReaderAdvanced3_FWD_DEFINED__ */
  244. #ifndef __IWMReaderAdvanced4_FWD_DEFINED__
  245. #define __IWMReaderAdvanced4_FWD_DEFINED__
  246. typedef interface IWMReaderAdvanced4 IWMReaderAdvanced4;
  247. #endif  /* __IWMReaderAdvanced4_FWD_DEFINED__ */
  248. #ifndef __IWMReaderAllocatorEx_FWD_DEFINED__
  249. #define __IWMReaderAllocatorEx_FWD_DEFINED__
  250. typedef interface IWMReaderAllocatorEx IWMReaderAllocatorEx;
  251. #endif  /* __IWMReaderAllocatorEx_FWD_DEFINED__ */
  252. #ifndef __IWMReaderTypeNegotiation_FWD_DEFINED__
  253. #define __IWMReaderTypeNegotiation_FWD_DEFINED__
  254. typedef interface IWMReaderTypeNegotiation IWMReaderTypeNegotiation;
  255. #endif  /* __IWMReaderTypeNegotiation_FWD_DEFINED__ */
  256. #ifndef __IWMReaderCallbackAdvanced_FWD_DEFINED__
  257. #define __IWMReaderCallbackAdvanced_FWD_DEFINED__
  258. typedef interface IWMReaderCallbackAdvanced IWMReaderCallbackAdvanced;
  259. #endif  /* __IWMReaderCallbackAdvanced_FWD_DEFINED__ */
  260. #ifndef __IWMDRMReader_FWD_DEFINED__
  261. #define __IWMDRMReader_FWD_DEFINED__
  262. typedef interface IWMDRMReader IWMDRMReader;
  263. #endif  /* __IWMDRMReader_FWD_DEFINED__ */
  264. #ifndef __IWMReaderNetworkConfig_FWD_DEFINED__
  265. #define __IWMReaderNetworkConfig_FWD_DEFINED__
  266. typedef interface IWMReaderNetworkConfig IWMReaderNetworkConfig;
  267. #endif  /* __IWMReaderNetworkConfig_FWD_DEFINED__ */
  268. #ifndef __IWMReaderNetworkConfig2_FWD_DEFINED__
  269. #define __IWMReaderNetworkConfig2_FWD_DEFINED__
  270. typedef interface IWMReaderNetworkConfig2 IWMReaderNetworkConfig2;
  271. #endif  /* __IWMReaderNetworkConfig2_FWD_DEFINED__ */
  272. #ifndef __IWMReaderStreamClock_FWD_DEFINED__
  273. #define __IWMReaderStreamClock_FWD_DEFINED__
  274. typedef interface IWMReaderStreamClock IWMReaderStreamClock;
  275. #endif  /* __IWMReaderStreamClock_FWD_DEFINED__ */
  276. #ifndef __IWMIndexer_FWD_DEFINED__
  277. #define __IWMIndexer_FWD_DEFINED__
  278. typedef interface IWMIndexer IWMIndexer;
  279. #endif  /* __IWMIndexer_FWD_DEFINED__ */
  280. #ifndef __IWMIndexer2_FWD_DEFINED__
  281. #define __IWMIndexer2_FWD_DEFINED__
  282. typedef interface IWMIndexer2 IWMIndexer2;
  283. #endif  /* __IWMIndexer2_FWD_DEFINED__ */
  284. #ifndef __IWMLicenseBackup_FWD_DEFINED__
  285. #define __IWMLicenseBackup_FWD_DEFINED__
  286. typedef interface IWMLicenseBackup IWMLicenseBackup;
  287. #endif  /* __IWMLicenseBackup_FWD_DEFINED__ */
  288. #ifndef __IWMLicenseRestore_FWD_DEFINED__
  289. #define __IWMLicenseRestore_FWD_DEFINED__
  290. typedef interface IWMLicenseRestore IWMLicenseRestore;
  291. #endif  /* __IWMLicenseRestore_FWD_DEFINED__ */
  292. #ifndef __IWMBackupRestoreProps_FWD_DEFINED__
  293. #define __IWMBackupRestoreProps_FWD_DEFINED__
  294. typedef interface IWMBackupRestoreProps IWMBackupRestoreProps;
  295. #endif  /* __IWMBackupRestoreProps_FWD_DEFINED__ */
  296. #ifndef __IWMCodecInfo_FWD_DEFINED__
  297. #define __IWMCodecInfo_FWD_DEFINED__
  298. typedef interface IWMCodecInfo IWMCodecInfo;
  299. #endif  /* __IWMCodecInfo_FWD_DEFINED__ */
  300. #ifndef __IWMCodecInfo2_FWD_DEFINED__
  301. #define __IWMCodecInfo2_FWD_DEFINED__
  302. typedef interface IWMCodecInfo2 IWMCodecInfo2;
  303. #endif  /* __IWMCodecInfo2_FWD_DEFINED__ */
  304. #ifndef __IWMCodecInfo3_FWD_DEFINED__
  305. #define __IWMCodecInfo3_FWD_DEFINED__
  306. typedef interface IWMCodecInfo3 IWMCodecInfo3;
  307. #endif  /* __IWMCodecInfo3_FWD_DEFINED__ */
  308. #ifndef __IWMLanguageList_FWD_DEFINED__
  309. #define __IWMLanguageList_FWD_DEFINED__
  310. typedef interface IWMLanguageList IWMLanguageList;
  311. #endif  /* __IWMLanguageList_FWD_DEFINED__ */
  312. #ifndef __IWMWriterPushSink_FWD_DEFINED__
  313. #define __IWMWriterPushSink_FWD_DEFINED__
  314. typedef interface IWMWriterPushSink IWMWriterPushSink;
  315. #endif  /* __IWMWriterPushSink_FWD_DEFINED__ */
  316. #ifndef __IWMWatermarkInfo_FWD_DEFINED__
  317. #define __IWMWatermarkInfo_FWD_DEFINED__
  318. typedef interface IWMWatermarkInfo IWMWatermarkInfo;
  319. #endif  /* __IWMWatermarkInfo_FWD_DEFINED__ */
  320. #ifndef __IWMReaderAccelerator_FWD_DEFINED__
  321. #define __IWMReaderAccelerator_FWD_DEFINED__
  322. typedef interface IWMReaderAccelerator IWMReaderAccelerator;
  323. #endif  /* __IWMReaderAccelerator_FWD_DEFINED__ */
  324. #ifndef __IWMReaderTimecode_FWD_DEFINED__
  325. #define __IWMReaderTimecode_FWD_DEFINED__
  326. typedef interface IWMReaderTimecode IWMReaderTimecode;
  327. #endif  /* __IWMReaderTimecode_FWD_DEFINED__ */
  328. #ifndef __IWMAddressAccess_FWD_DEFINED__
  329. #define __IWMAddressAccess_FWD_DEFINED__
  330. typedef interface IWMAddressAccess IWMAddressAccess;
  331. #endif  /* __IWMAddressAccess_FWD_DEFINED__ */
  332. #ifndef __IWMAddressAccess2_FWD_DEFINED__
  333. #define __IWMAddressAccess2_FWD_DEFINED__
  334. typedef interface IWMAddressAccess2 IWMAddressAccess2;
  335. #endif  /* __IWMAddressAccess2_FWD_DEFINED__ */
  336. #ifndef __IWMImageInfo_FWD_DEFINED__
  337. #define __IWMImageInfo_FWD_DEFINED__
  338. typedef interface IWMImageInfo IWMImageInfo;
  339. #endif  /* __IWMImageInfo_FWD_DEFINED__ */
  340. /* header files for imported files */
  341. #include "oaidl.h"
  342. #include "wmsbuffer.h"
  343. #include "drmexternals.h"
  344. #ifdef __cplusplus
  345. extern "C"{
  346. #endif 
  347. void * __RPC_USER MIDL_user_allocate(size_t);
  348. void __RPC_USER MIDL_user_free( void * ); 
  349. /* interface __MIDL_itf_wmsdkidl_0000 */
  350. /* [local] */ 
  351. //=========================================================================
  352. //
  353. // Microsoft Windows Media Technologies
  354. // Copyright (C) Microsoft Corporation.  All Rights Reserved.
  355. //
  356. //=========================================================================
  357. typedef unsigned __int64 QWORD;
  358. ////////////////////////////////////////////////////////////////
  359. //
  360. // These are the special case attributes that give information 
  361. // about the Windows Media file.
  362. //
  363. static const DWORD g_dwWMSpecialAttributes = 20;
  364. static const WCHAR g_wszWMDuration[] =L"Duration";
  365. static const WCHAR g_wszWMBitrate[] =L"Bitrate";
  366. static const WCHAR g_wszWMSeekable[] =L"Seekable";
  367. static const WCHAR g_wszWMStridable[] =L"Stridable";
  368. static const WCHAR g_wszWMBroadcast[] =L"Broadcast";
  369. static const WCHAR g_wszWMProtected[] =L"Is_Protected";
  370. static const WCHAR g_wszWMTrusted[] =L"Is_Trusted";
  371. static const WCHAR g_wszWMSignature_Name[] =L"Signature_Name";
  372. static const WCHAR g_wszWMHasAudio[] =L"HasAudio";
  373. static const WCHAR g_wszWMHasImage[] =L"HasImage";
  374. static const WCHAR g_wszWMHasScript[] =L"HasScript";
  375. static const WCHAR g_wszWMHasVideo[] =L"HasVideo";
  376. static const WCHAR g_wszWMCurrentBitrate[] =L"CurrentBitrate";
  377. static const WCHAR g_wszWMOptimalBitrate[] =L"OptimalBitrate";
  378. static const WCHAR g_wszWMHasAttachedImages[] =L"HasAttachedImages";
  379. static const WCHAR g_wszWMSkipBackward[] =L"Can_Skip_Backward";
  380. static const WCHAR g_wszWMSkipForward[] =L"Can_Skip_Forward";
  381. static const WCHAR g_wszWMNumberOfFrames[] =L"NumberOfFrames";
  382. static const WCHAR g_wszWMFileSize[] =L"FileSize";
  383. static const WCHAR g_wszWMHasArbitraryDataStream[] =L"HasArbitraryDataStream";
  384. static const WCHAR g_wszWMHasFileTransferStream[] =L"HasFileTransferStream";
  385. static const WCHAR g_wszWMContainerFormat[] =L"WM/ContainerFormat";
  386. ////////////////////////////////////////////////////////////////
  387. //
  388. // The content description object supports 5 basic attributes.
  389. //
  390. static const DWORD g_dwWMContentAttributes = 5;
  391. static const WCHAR g_wszWMTitle[] =L"Title";
  392. static const WCHAR g_wszWMAuthor[] =L"Author";
  393. static const WCHAR g_wszWMDescription[] =L"Description";
  394. static const WCHAR g_wszWMRating[] =L"Rating";
  395. static const WCHAR g_wszWMCopyright[] =L"Copyright";
  396. ////////////////////////////////////////////////////////////////
  397. //
  398. // These attributes are used to configure and query DRM settings in the reader and writer.
  399. //
  400. static const WCHAR g_wszWMUse_DRM[] = L"Use_DRM";
  401. static const WCHAR g_wszWMDRM_Flags[] = L"DRM_Flags";
  402. static const WCHAR g_wszWMDRM_Level[] = L"DRM_Level";
  403. static const WCHAR g_wszWMUse_Advanced_DRM[] = L"Use_Advanced_DRM";
  404. static const WCHAR g_wszWMDRM_KeySeed[] = L"DRM_KeySeed";
  405. static const WCHAR g_wszWMDRM_KeyID[] = L"DRM_KeyID";
  406. static const WCHAR g_wszWMDRM_ContentID[] = L"DRM_ContentID";
  407. static const WCHAR g_wszWMDRM_IndividualizedVersion[] = L"DRM_IndividualizedVersion";
  408. static const WCHAR g_wszWMDRM_LicenseAcqURL[] = L"DRM_LicenseAcqURL";
  409. static const WCHAR g_wszWMDRM_V1LicenseAcqURL[] = L"DRM_V1LicenseAcqURL";
  410. static const WCHAR g_wszWMDRM_HeaderSignPrivKey[] = L"DRM_HeaderSignPrivKey";
  411. static const WCHAR g_wszWMDRM_LASignaturePrivKey[] = L"DRM_LASignaturePrivKey";
  412. static const WCHAR g_wszWMDRM_LASignatureCert[] = L"DRM_LASignatureCert";
  413. static const WCHAR g_wszWMDRM_LASignatureLicSrvCert[] = L"DRM_LASignatureLicSrvCert";
  414. static const WCHAR g_wszWMDRM_LASignatureRootCert[] = L"DRM_LASignatureRootCert";
  415. ////////////////////////////////////////////////////////////////
  416. //
  417. // These are the additional attributes defined in the WM attribute
  418. // namespace that give information about the content.
  419. //
  420. static const WCHAR g_wszWMAlbumTitle[] =L"WM/AlbumTitle";
  421. static const WCHAR g_wszWMTrack[] =L"WM/Track";
  422. static const WCHAR g_wszWMPromotionURL[] =L"WM/PromotionURL";
  423. static const WCHAR g_wszWMAlbumCoverURL[] =L"WM/AlbumCoverURL";
  424. static const WCHAR g_wszWMGenre[] =L"WM/Genre";
  425. static const WCHAR g_wszWMYear[] =L"WM/Year";
  426. static const WCHAR g_wszWMGenreID[] =L"WM/GenreID";
  427. static const WCHAR g_wszWMMCDI[] =L"WM/MCDI";
  428. static const WCHAR g_wszWMComposer[] =L"WM/Composer";
  429. static const WCHAR g_wszWMLyrics[] =L"WM/Lyrics";
  430. static const WCHAR g_wszWMTrackNumber[] =L"WM/TrackNumber";
  431. static const WCHAR g_wszWMToolName[] =L"WM/ToolName";
  432. static const WCHAR g_wszWMToolVersion[] =L"WM/ToolVersion";
  433. static const WCHAR g_wszWMIsVBR[] =L"IsVBR";
  434. static const WCHAR g_wszWMAlbumArtist[] =L"WM/AlbumArtist";
  435. ////////////////////////////////////////////////////////////////
  436. //
  437. // These optional attributes may be used to give information 
  438. // about the branding of the content.
  439. //
  440. static const WCHAR g_wszWMBannerImageType[] =L"BannerImageType";
  441. static const WCHAR g_wszWMBannerImageData[] =L"BannerImageData";
  442. static const WCHAR g_wszWMBannerImageURL[] =L"BannerImageURL";
  443. static const WCHAR g_wszWMCopyrightURL[] =L"CopyrightURL";
  444. ////////////////////////////////////////////////////////////////
  445. //
  446. // Optional attributes, used to give information 
  447. // about video stream properties.
  448. //
  449. static const WCHAR g_wszWMAspectRatioX[] =L"AspectRatioX";
  450. static const WCHAR g_wszWMAspectRatioY[] =L"AspectRatioY";
  451. ////////////////////////////////////////////////////////////////
  452. //
  453. // Optional attributes, used to give information 
  454. // about the overall streaming properties of VBR files.
  455. // This attribute takes the format:
  456. //  WORD wReserved (must be 0)
  457. //  WM_LEAKY_BUCKET_PAIR pair1
  458. //  WM_LEAKY_BUCKET_PAIR pair2
  459. //  ...
  460. //
  461. static const WCHAR g_wszASFLeakyBucketPairs[] =L"ASFLeakyBucketPairs";
  462. ////////////////////////////////////////////////////////////////
  463. //
  464. // The NSC file supports the following attributes.
  465. //
  466. static const DWORD g_dwWMNSCAttributes = 5;
  467. static const WCHAR g_wszWMNSCName[] =L"NSC_Name";
  468. static const WCHAR g_wszWMNSCAddress[] =L"NSC_Address";
  469. static const WCHAR g_wszWMNSCPhone[] =L"NSC_Phone";
  470. static const WCHAR g_wszWMNSCEmail[] =L"NSC_Email";
  471. static const WCHAR g_wszWMNSCDescription[] =L"NSC_Description";
  472. ////////////////////////////////////////////////////////////////
  473. //
  474. // Attributes introduced in V9
  475. //
  476. static const WCHAR g_wszWMWriter[] =L"WM/Writer";
  477. static const WCHAR g_wszWMConductor[] =L"WM/Conductor";
  478. static const WCHAR g_wszWMProducer[] =L"WM/Producer";
  479. static const WCHAR g_wszWMDirector[] =L"WM/Director";
  480. static const WCHAR g_wszWMContentGroupDescription[] =L"WM/ContentGroupDescription";
  481. static const WCHAR g_wszWMSubTitle[] =L"WM/SubTitle";
  482. static const WCHAR g_wszWMPartOfSet[] =L"WM/PartOfSet";
  483. static const WCHAR g_wszWMProtectionType[] =L"WM/ProtectionType";
  484. static const WCHAR g_wszWMVideoHeight[] =L"WM/VideoHeight";
  485. static const WCHAR g_wszWMVideoWidth[] =L"WM/VideoWidth";
  486. static const WCHAR g_wszWMVideoFrameRate[] =L"WM/VideoFrameRate";
  487. static const WCHAR g_wszWMMediaClassPrimaryID[] =L"WM/MediaClassPrimaryID";
  488. static const WCHAR g_wszWMMediaClassSecondaryID[] =L"WM/MediaClassSecondaryID";
  489. static const WCHAR g_wszWMPeriod[] = L"WM/Period";
  490. static const WCHAR g_wszWMCategory[] = L"WM/Category";
  491. static const WCHAR g_wszWMPicture[] =L"WM/Picture";
  492. static const WCHAR g_wszWMLyrics_Synchronised[] =L"WM/Lyrics_Synchronised";
  493. static const WCHAR g_wszWMOriginalLyricist[] =L"WM/OriginalLyricist";
  494. static const WCHAR g_wszWMOriginalArtist[] =L"WM/OriginalArtist";
  495. static const WCHAR g_wszWMOriginalAlbumTitle[] =L"WM/OriginalAlbumTitle";
  496. static const WCHAR g_wszWMOriginalReleaseYear[] =L"WM/OriginalReleaseYear";
  497. static const WCHAR g_wszWMOriginalFilename[] =L"WM/OriginalFilename";
  498. static const WCHAR g_wszWMPublisher[] =L"WM/Publisher";
  499. static const WCHAR g_wszWMEncodedBy[] =L"WM/EncodedBy";
  500. static const WCHAR g_wszWMEncodingSettings[] =L"WM/EncodingSettings";
  501. static const WCHAR g_wszWMEncodingTime[] =L"WM/EncodingTime";
  502. static const WCHAR g_wszWMAuthorURL[] =L"WM/AuthorURL";
  503. static const WCHAR g_wszWMUserWebURL[] =L"WM/UserWebURL";
  504. static const WCHAR g_wszWMAudioFileURL[] =L"WM/AudioFileURL";
  505. static const WCHAR g_wszWMAudioSourceURL[] =L"WM/AudioSourceURL";
  506. static const WCHAR g_wszWMLanguage[] =L"WM/Language";
  507. static const WCHAR g_wszWMParentalRating[] =L"WM/ParentalRating";
  508. static const WCHAR g_wszWMBeatsPerMinute[] =L"WM/BeatsPerMinute";
  509. static const WCHAR g_wszWMInitialKey[] =L"WM/InitialKey";
  510. static const WCHAR g_wszWMMood[] =L"WM/Mood";
  511. static const WCHAR g_wszWMText[] =L"WM/Text";
  512. static const WCHAR g_wszWMDVDID[] =L"WM/DVDID";
  513. static const WCHAR g_wszWMWMContentID[] =L"WM/WMContentID";
  514. static const WCHAR g_wszWMWMCollectionID[] =L"WM/WMCollectionID";
  515. static const WCHAR g_wszWMWMCollectionGroupID[] =L"WM/WMCollectionGroupID";
  516. static const WCHAR g_wszWMUniqueFileIdentifier[] =L"WM/UniqueFileIdentifier";
  517. static const WCHAR g_wszWMModifiedBy[] =L"WM/ModifiedBy";
  518. static const WCHAR g_wszWMRadioStationName[] =L"WM/RadioStationName";
  519. static const WCHAR g_wszWMRadioStationOwner[] =L"WM/RadioStationOwner";
  520. static const WCHAR g_wszWMPlaylistDelay[] =L"WM/PlaylistDelay";
  521. static const WCHAR g_wszWMCodec[] =L"WM/Codec";
  522. static const WCHAR g_wszWMDRM[] =L"WM/DRM";
  523. static const WCHAR g_wszWMISRC[] =L"WM/ISRC";
  524. static const WCHAR g_wszWMProvider[] =L"WM/Provider";
  525. static const WCHAR g_wszWMProviderRating[] =L"WM/ProviderRating";
  526. static const WCHAR g_wszWMProviderStyle[] =L"WM/ProviderStyle";
  527. static const WCHAR g_wszWMContentDistributor[] =L"WM/ContentDistributor";
  528. static const WCHAR g_wszWMSubscriptionContentID[] =L"WM/SubscriptionContentID";
  529. static const WCHAR g_wszWMWMADRCPeakReference[] =L"WM/WMADRCPeakReference";
  530. static const WCHAR g_wszWMWMADRCPeakTarget[] =L"WM/WMADRCPeakTarget";
  531. static const WCHAR g_wszWMWMADRCAverageReference[] =L"WM/WMADRCAverageReference";
  532. static const WCHAR g_wszWMWMADRCAverageTarget[] =L"WM/WMADRCAverageTarget";
  533. ////////////////////////////////////////////////////////////////
  534. //
  535. // These are setting names for use in Get/SetOutputSetting
  536. //
  537. static const WCHAR g_wszEarlyDataDelivery[] =L"EarlyDataDelivery";
  538. static const WCHAR g_wszJustInTimeDecode[] =L"JustInTimeDecode";
  539. static const WCHAR g_wszSingleOutputBuffer[] =L"SingleOutputBuffer";
  540. static const WCHAR g_wszSoftwareScaling[] =L"SoftwareScaling";
  541. static const WCHAR g_wszDeliverOnReceive[] =L"DeliverOnReceive";
  542. static const WCHAR g_wszScrambledAudio[] =L"ScrambledAudio";
  543. static const WCHAR g_wszDedicatedDeliveryThread[] =L"DedicatedDeliveryThread";
  544. static const WCHAR g_wszEnableDiscreteOutput[] = L"EnableDiscreteOutput";
  545. static const WCHAR g_wszSpeakerConfig[] = L"SpeakerConfig";
  546. static const WCHAR g_wszDynamicRangeControl[] = L"DynamicRangeControl";
  547. static const WCHAR g_wszAllowInterlacedOutput[] = L"AllowInterlacedOutput";
  548. static const WCHAR g_wszVideoSampleDurations[] =L"VideoSampleDurations";
  549. static const WCHAR g_wszStreamLanguage[] =L"StreamLanguage";
  550. ////////////////////////////////////////////////////////////////
  551. //
  552. // These are setting names for use in Get/SetInputSetting
  553. //
  554. static const WCHAR g_wszDeinterlaceMode[] =L"DeinterlaceMode";
  555. static const WCHAR g_wszInitialPatternForInverseTelecine[] =L"InitialPatternForInverseTelecine";
  556. static const WCHAR g_wszJPEGCompressionQuality[] =L"JPEGCompressionQuality";
  557. static const WCHAR g_wszWatermarkCLSID[] =L"WatermarkCLSID";
  558. static const WCHAR g_wszWatermarkConfig[] =L"WatermarkConfig";
  559. static const WCHAR g_wszInterlacedCoding[] =L"InterlacedCoding";
  560. static const WCHAR g_wszFixedFrameRate[] =L"FixedFrameRate";
  561. ////////////////////////////////////////////////////////////////
  562. //
  563. // All known IWMPropertyVault property names
  564. //
  565. // g_wszOriginalSourceFormatTag is obsolete and has been superceded by g_wszOriginalWaveFormat
  566. static const WCHAR g_wszOriginalSourceFormatTag[] =L"_SOURCEFORMATTAG";
  567. static const WCHAR g_wszOriginalWaveFormat[] =L"_ORIGINALWAVEFORMAT";
  568. static const WCHAR g_wszEDL[] =L"_EDL";
  569. static const WCHAR g_wszComplexity[] =L"_COMPLEXITYEX";
  570. static const WCHAR g_wszDecoderComplexityRequested[] =L"_DECODERCOMPLEXITYPROFILE";
  571. ////////////////////////////////////////////////////////////////
  572. //
  573. // All known IWMIStreamProps property names
  574. //
  575. static const WCHAR g_wszReloadIndexOnSeek[] =L"ReloadIndexOnSeek";
  576. static const WCHAR g_wszStreamNumIndexObjects[] =L"StreamNumIndexObjects";
  577. static const WCHAR g_wszFailSeekOnError[] =L"FailSeekOnError";
  578. static const WCHAR g_wszPermitSeeksBeyondEndOfStream[] =L"PermitSeeksBeyondEndOfStream";
  579. static const WCHAR g_wszUsePacketAtSeekPoint[] =L"UsePacketAtSeekPoint";
  580. static const WCHAR g_wszSourceBufferTime[] =L"SourceBufferTime";
  581. static const WCHAR g_wszSourceMaxBytesAtOnce[] =L"SourceMaxBytesAtOnce";
  582. ////////////////////////////////////////////////////////////////
  583. //
  584. // VBR encoding settings
  585. //
  586. static const WCHAR g_wszVBREnabled[] =L"_VBRENABLED";
  587. static const WCHAR g_wszVBRQuality[] =L"_VBRQUALITY";
  588. static const WCHAR g_wszVBRBitrateMax[] =L"_RMAX";
  589. static const WCHAR g_wszVBRBufferWindowMax[] =L"_BMAX";
  590. ////////////////////////////////////////////////////////////////
  591. //
  592. // VBR Video settings
  593. //
  594. static const WCHAR g_wszVBRPeak[] = L"VBR Peak";
  595. static const WCHAR g_wszBufferAverage[] = L"Buffer Average";
  596. ////////////////////////////////////////////////////////////////
  597. //
  598. // Codec encoding complexity settings
  599. //
  600. // g_wszComplexity should be used to set desired encoding complexity on the
  601. // stream's IWMPropertyVault (see above for definition) 
  602. // The below settings can be queried from IWMCodecInfo3::GetCodecProp()
  603. //
  604. static const WCHAR g_wszComplexityMax[] =L"_COMPLEXITYEXMAX";
  605. static const WCHAR g_wszComplexityOffline[] =L"_COMPLEXITYEXOFFLINE";
  606. static const WCHAR g_wszComplexityLive[] =L"_COMPLEXITYEXLIVE";
  607. static const WCHAR g_wszIsVBRSupported[] =L"_ISVBRSUPPORTED";
  608. ////////////////////////////////////////////////////////////////
  609. //
  610. // Codec enumeration settings
  611. //
  612. // g_wszVBREnabled can be used as a codec enumeration setting (see above for definition)
  613. static const WCHAR g_wszNumPasses[] = L"_PASSESUSED";
  614. ////////////////////////////////////////////////////////////////
  615. //
  616. // These are WMA Voice V9 attribute names and values
  617. //
  618. static const WCHAR g_wszMusicSpeechClassMode[] = L"MusicSpeechClassMode";
  619. static const WCHAR g_wszMusicClassMode[] = L"MusicClassMode";
  620. static const WCHAR g_wszSpeechClassMode[] = L"SpeechClassMode";
  621. static const WCHAR g_wszMixedClassMode[] = L"MixedClassMode";
  622. ////////////////////////////////////////////////////////////////
  623. //
  624. // The WMA Voice V9 supports the following format property.
  625. //
  626. static const WCHAR g_wszSpeechCaps[] = L"SpeechFormatCap";
  627. ////////////////////////////////////////////////////////////////
  628. //
  629. // Multi-channel WMA properties
  630. //
  631. static const WCHAR g_wszPeakValue[] = L"PeakValue";
  632. static const WCHAR g_wszAverageLevel[] = L"AverageLevel";
  633. static const WCHAR g_wszFold6To2Channels3[] = L"Fold6To2Channels3";
  634. static const WCHAR g_wszFoldToChannelsTemplate[] = L"Fold%luTo%luChannels%lu";
  635. ////////////////////////////////////////////////////////////////
  636. //
  637. // Complexity profile description strings
  638. //
  639. static const WCHAR g_wszDeviceConformanceTemplate[] = L"DeviceConformanceTemplate";
  640. ////////////////////////////////////////////////////////////////
  641. //
  642. // Frame interpolation on video decode
  643. //
  644. static const WCHAR g_wszEnableFrameInterpolation[] =L"EnableFrameInterpolation";
  645. ////////////////////////////////////////////////////////////////
  646. //
  647. // Needs previous sample for Delta frame on video decode
  648. //
  649. static const WCHAR g_wszNeedsPreviousSample[] =L"NeedsPreviousSample";
  650. ////////////////////////////////////////////////////////////////
  651. //
  652. // Flags that can be passed into the Start method of IWMReader
  653. //
  654. #define WM_START_CURRENTPOSITION     ( ( QWORD )-1 )
  655. #define WM_BACKUP_OVERWRITE    ((DWORD) 0x00000001)
  656. #define WM_RESTORE_INDIVIDUALIZE    ((DWORD) 0x00000002)
  657. #define WAVE_FORMAT_DRM            0x0009
  658. enum __MIDL___MIDL_itf_wmsdkidl_0000_0001
  659.     { WEBSTREAM_SAMPLE_TYPE_FILE = 0x1,
  660. WEBSTREAM_SAMPLE_TYPE_RENDER = 0x2
  661.     } ;
  662. enum __MIDL___MIDL_itf_wmsdkidl_0000_0002
  663.     { WM_SF_CLEANPOINT = 0x1,
  664. WM_SF_DISCONTINUITY = 0x2,
  665. WM_SF_DATALOSS = 0x4
  666.     } ;
  667. enum __MIDL___MIDL_itf_wmsdkidl_0000_0003
  668.     { WM_SFEX_NOTASYNCPOINT = 0x2,
  669. WM_SFEX_DATALOSS = 0x4
  670.     } ;
  671. typedef 
  672. enum WMT_STATUS
  673.     { WMT_ERROR = 0,
  674. WMT_OPENED = 1,
  675. WMT_BUFFERING_START = 2,
  676. WMT_BUFFERING_STOP = 3,
  677. WMT_EOF = 4,
  678. WMT_END_OF_FILE = 4,
  679. WMT_END_OF_SEGMENT = 5,
  680. WMT_END_OF_STREAMING = 6,
  681. WMT_LOCATING = 7,
  682. WMT_CONNECTING = 8,
  683. WMT_NO_RIGHTS = 9,
  684. WMT_MISSING_CODEC = 10,
  685. WMT_STARTED = 11,
  686. WMT_STOPPED = 12,
  687. WMT_CLOSED = 13,
  688. WMT_STRIDING = 14,
  689. WMT_TIMER = 15,
  690. WMT_INDEX_PROGRESS = 16,
  691. WMT_SAVEAS_START = 17,
  692. WMT_SAVEAS_STOP = 18,
  693. WMT_NEW_SOURCEFLAGS = 19,
  694. WMT_NEW_METADATA = 20,
  695. WMT_BACKUPRESTORE_BEGIN = 21,
  696. WMT_SOURCE_SWITCH = 22,
  697. WMT_ACQUIRE_LICENSE = 23,
  698. WMT_INDIVIDUALIZE = 24,
  699. WMT_NEEDS_INDIVIDUALIZATION = 25,
  700. WMT_NO_RIGHTS_EX = 26,
  701. WMT_BACKUPRESTORE_END = 27,
  702. WMT_BACKUPRESTORE_CONNECTING = 28,
  703. WMT_BACKUPRESTORE_DISCONNECTING = 29,
  704. WMT_ERROR_WITHURL = 30,
  705. WMT_RESTRICTED_LICENSE = 31,
  706. WMT_CLIENT_CONNECT = 32,
  707. WMT_CLIENT_DISCONNECT = 33,
  708. WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
  709. WMT_RECONNECT_START = 35,
  710. WMT_RECONNECT_END = 36,
  711. WMT_CLIENT_CONNECT_EX = 37,
  712. WMT_CLIENT_DISCONNECT_EX = 38,
  713. WMT_SET_FEC_SPAN = 39,
  714. WMT_PREROLL_READY = 40,
  715. WMT_PREROLL_COMPLETE = 41,
  716. WMT_CLIENT_PROPERTIES = 42,
  717. WMT_LICENSEURL_SIGNATURE_STATE = 43
  718.     }  WMT_STATUS;
  719. typedef 
  720. enum WMT_RIGHTS
  721.     { WMT_RIGHT_PLAYBACK = 0x1,
  722. WMT_RIGHT_COPY_TO_NON_SDMI_DEVICE = 0x2,
  723. WMT_RIGHT_COPY_TO_CD = 0x8,
  724. WMT_RIGHT_COPY_TO_SDMI_DEVICE = 0x10,
  725. WMT_RIGHT_ONE_TIME = 0x20,
  726. WMT_RIGHT_SAVE_STREAM_PROTECTED = 0x40,
  727. WMT_RIGHT_SDMI_TRIGGER = 0x10000,
  728. WMT_RIGHT_SDMI_NOMORECOPIES = 0x20000
  729.     }  WMT_RIGHTS;
  730. typedef 
  731. enum WMT_STREAM_SELECTION
  732.     { WMT_OFF = 0,
  733. WMT_CLEANPOINT_ONLY = 1,
  734. WMT_ON = 2
  735.     }  WMT_STREAM_SELECTION;
  736. typedef 
  737. enum WMT_IMAGE_TYPE
  738.     { WMT_IT_NONE = 0,
  739. WMT_IT_BITMAP = 1,
  740. WMT_IT_JPEG = 2,
  741. WMT_IT_GIF = 3
  742.     }  WMT_IMAGE_TYPE;
  743. typedef 
  744. enum WMT_ATTR_DATATYPE
  745.     { WMT_TYPE_DWORD = 0,
  746. WMT_TYPE_STRING = 1,
  747. WMT_TYPE_BINARY = 2,
  748. WMT_TYPE_BOOL = 3,
  749. WMT_TYPE_QWORD = 4,
  750. WMT_TYPE_WORD = 5,
  751. WMT_TYPE_GUID = 6
  752.     }  WMT_ATTR_DATATYPE;
  753. typedef 
  754. enum WMT_ATTR_IMAGETYPE
  755.     { WMT_IMAGETYPE_BITMAP = 1,
  756. WMT_IMAGETYPE_JPEG = 2,
  757. WMT_IMAGETYPE_GIF = 3
  758.     }  WMT_ATTR_IMAGETYPE;
  759. typedef 
  760. enum WMT_VERSION
  761.     { WMT_VER_4_0 = 0x40000,
  762. WMT_VER_7_0 = 0x70000,
  763. WMT_VER_8_0 = 0x80000,
  764. WMT_VER_9_0 = 0x90000
  765.     }  WMT_VERSION;
  766. typedef 
  767. enum tagWMT_STORAGE_FORMAT
  768.     { WMT_Storage_Format_MP3 = 0,
  769. WMT_Storage_Format_V1 = WMT_Storage_Format_MP3 + 1
  770.     }  WMT_STORAGE_FORMAT;
  771. typedef 
  772. enum tagWMT_DRMLA_TRUST
  773.     { WMT_DRMLA_UNTRUSTED = 0,
  774. WMT_DRMLA_TRUSTED = WMT_DRMLA_UNTRUSTED + 1,
  775. WMT_DRMLA_TAMPERED = WMT_DRMLA_TRUSTED + 1
  776.     }  WMT_DRMLA_TRUST;
  777. typedef 
  778. enum tagWMT_TRANSPORT_TYPE
  779.     { WMT_Transport_Type_Unreliable = 0,
  780. WMT_Transport_Type_Reliable = WMT_Transport_Type_Unreliable + 1
  781.     }  WMT_TRANSPORT_TYPE;
  782. typedef 
  783. enum WMT_NET_PROTOCOL
  784.     { WMT_PROTOCOL_HTTP = 0
  785.     }  WMT_NET_PROTOCOL;
  786. typedef 
  787. enum WMT_PLAY_MODE
  788.     { WMT_PLAY_MODE_AUTOSELECT = 0,
  789. WMT_PLAY_MODE_LOCAL = 1,
  790. WMT_PLAY_MODE_DOWNLOAD = 2,
  791. WMT_PLAY_MODE_STREAMING = 3
  792.     }  WMT_PLAY_MODE;
  793. typedef
  794. enum WMT_PROXY_SETTINGS
  795.     { WMT_PROXY_SETTING_NONE = 0,
  796. WMT_PROXY_SETTING_MANUAL = 1,
  797. WMT_PROXY_SETTING_AUTO = 2,
  798. WMT_PROXY_SETTING_BROWSER = 3,
  799. WMT_PROXY_SETTING_MAX = WMT_PROXY_SETTING_BROWSER + 1
  800.     }  WMT_PROXY_SETTINGS;
  801. typedef DWORD WMT_CODEC_INFO_TYPE;
  802. #define WMT_CODECINFO_AUDIO  0
  803. #define WMT_CODECINFO_VIDEO  1
  804. #define WMT_CODECINFO_UNKNOWN 0xffffffff
  805. enum __MIDL___MIDL_itf_wmsdkidl_0000_0004
  806.     { WM_DM_NOTINTERLACED = 0,
  807. WM_DM_DEINTERLACE_NORMAL = 1,
  808. WM_DM_DEINTERLACE_HALFSIZE = 2,
  809. WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE = 3,
  810. WM_DM_DEINTERLACE_INVERSETELECINE = 4,
  811. WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE = 5
  812.     } ;
  813. enum __MIDL___MIDL_itf_wmsdkidl_0000_0005
  814.     { WM_DM_IT_DISABLE_COHERENT_MODE = 0,
  815. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP = 1,
  816. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP = 2,
  817. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP = 3,
  818. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP = 4,
  819. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP = 5,
  820. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM = 6,
  821. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM = 7,
  822. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM = 8,
  823. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM = 9,
  824. WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM = 10
  825.     } ;
  826. typedef 
  827. enum tagWMT_OFFSET_FORMAT
  828.     { WMT_OFFSET_FORMAT_100NS = 0,
  829. WMT_OFFSET_FORMAT_FRAME_NUMBERS = WMT_OFFSET_FORMAT_100NS + 1,
  830. WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = WMT_OFFSET_FORMAT_FRAME_NUMBERS + 1,
  831. WMT_OFFSET_FORMAT_TIMECODE = WMT_OFFSET_FORMAT_PLAYLIST_OFFSET + 1
  832.     }  WMT_OFFSET_FORMAT;
  833. typedef 
  834. enum tagWMT_INDEXER_TYPE
  835.     { WMT_IT_PRESENTATION_TIME = 0,
  836. WMT_IT_FRAME_NUMBERS = WMT_IT_PRESENTATION_TIME + 1,
  837. WMT_IT_TIMECODE = WMT_IT_FRAME_NUMBERS + 1
  838.     }  WMT_INDEXER_TYPE;
  839. typedef 
  840. enum tagWMT_INDEX_TYPE
  841.     { WMT_IT_NEAREST_DATA_UNIT = 1,
  842. WMT_IT_NEAREST_OBJECT = WMT_IT_NEAREST_DATA_UNIT + 1,
  843. WMT_IT_NEAREST_CLEAN_POINT = WMT_IT_NEAREST_OBJECT + 1
  844.     }  WMT_INDEX_TYPE;
  845. typedef 
  846. enum tagWMT_FILESINK_MODE
  847.     { WMT_FM_SINGLE_BUFFERS = 0x1,
  848. WMT_FM_FILESINK_DATA_UNITS = 0x2,
  849. WMT_FM_FILESINK_UNBUFFERED = 0x4
  850.     }  WMT_FILESINK_MODE;
  851. typedef 
  852. enum tagWMT_MUSICSPEECH_CLASS_MODE
  853.     { WMT_MS_CLASS_MUSIC = 0,
  854. WMT_MS_CLASS_SPEECH = 1,
  855. WMT_MS_CLASS_MIXED = 2
  856.     }  WMT_MUSICSPEECH_CLASS_MODE;
  857. typedef 
  858. enum tagWMT_WATERMARK_ENTRY_TYPE
  859.     { WMT_WMETYPE_AUDIO = 1,
  860. WMT_WMETYPE_VIDEO = 2
  861.     }  WMT_WATERMARK_ENTRY_TYPE;
  862. enum __MIDL___MIDL_itf_wmsdkidl_0000_0006
  863.     { WM_PLAYBACK_DRC_HIGH = 0,
  864. WM_PLAYBACK_DRC_MEDIUM = WM_PLAYBACK_DRC_HIGH + 1,
  865. WM_PLAYBACK_DRC_LOW = WM_PLAYBACK_DRC_MEDIUM + 1
  866.     } ;
  867. enum __MIDL___MIDL_itf_wmsdkidl_0000_0007
  868.     { WMT_TIMECODE_FRAMERATE_30 = 0,
  869. WMT_TIMECODE_FRAMERATE_30DROP = WMT_TIMECODE_FRAMERATE_30 + 1,
  870. WMT_TIMECODE_FRAMERATE_25 = WMT_TIMECODE_FRAMERATE_30DROP + 1,
  871. WMT_TIMECODE_FRAMERATE_24 = WMT_TIMECODE_FRAMERATE_25 + 1
  872.     } ;
  873. typedef 
  874. enum WMT_CREDENTIAL_FLAGS
  875.     { WMT_CREDENTIAL_SAVE = 0x1,
  876. WMT_CREDENTIAL_DONT_CACHE = 0x2,
  877. WMT_CREDENTIAL_CLEAR_TEXT = 0x4,
  878. WMT_CREDENTIAL_PROXY = 0x8,
  879. WMT_CREDENTIAL_ENCRYPT = 0x10
  880.     }  WMT_CREDENTIAL_FLAGS;
  881. typedef 
  882. enum WM_AETYPE
  883.     { WM_AETYPE_INCLUDE = 0x69,
  884. WM_AETYPE_EXCLUDE = 0x65
  885.     }  WM_AETYPE;
  886. #pragma pack(push)
  887. #pragma pack(2)
  888. typedef struct _WMStreamPrioritizationRecord
  889.     {
  890.     WORD wStreamNumber;
  891.     BOOL fMandatory;
  892.     }  WM_STREAM_PRIORITY_RECORD;
  893. #pragma pack(pop)
  894. typedef struct _WMWriterStatistics
  895.     {
  896.     QWORD qwSampleCount;
  897.     QWORD qwByteCount;
  898.     QWORD qwDroppedSampleCount;
  899.     QWORD qwDroppedByteCount;
  900.     DWORD dwCurrentBitrate;
  901.     DWORD dwAverageBitrate;
  902.     DWORD dwExpectedBitrate;
  903.     DWORD dwCurrentSampleRate;
  904.     DWORD dwAverageSampleRate;
  905.     DWORD dwExpectedSampleRate;
  906.     }  WM_WRITER_STATISTICS;
  907. typedef struct _WMWriterStatisticsEx
  908.     {
  909.     DWORD dwBitratePlusOverhead;
  910.     DWORD dwCurrentSampleDropRateInQueue;
  911.     DWORD dwCurrentSampleDropRateInCodec;
  912.     DWORD dwCurrentSampleDropRateInMultiplexer;
  913.     DWORD dwTotalSampleDropsInQueue;
  914.     DWORD dwTotalSampleDropsInCodec;
  915.     DWORD dwTotalSampleDropsInMultiplexer;
  916.     }  WM_WRITER_STATISTICS_EX;
  917. typedef struct _WMReaderStatistics
  918.     {
  919.     DWORD cbSize;
  920.     DWORD dwBandwidth;
  921.     DWORD cPacketsReceived;
  922.     DWORD cPacketsRecovered;
  923.     DWORD cPacketsLost;
  924.     WORD wQuality;
  925.     }  WM_READER_STATISTICS;
  926. typedef struct _WMReaderClientInfo
  927.     {
  928.     DWORD cbSize;
  929.     WCHAR *wszLang;
  930.     WCHAR *wszBrowserUserAgent;
  931.     WCHAR *wszBrowserWebPage;
  932.     QWORD qwReserved;
  933.     LPARAM *pReserved;
  934.     WCHAR *wszHostExe;
  935.     QWORD qwHostVersion;
  936.     WCHAR *wszPlayerUserAgent;
  937.     }  WM_READER_CLIENTINFO;
  938. typedef struct _WMClientProperties
  939.     {
  940.     DWORD dwIPAddress;
  941.     DWORD dwPort;
  942.     }  WM_CLIENT_PROPERTIES;
  943. typedef struct _WMClientPropertiesEx
  944.     {
  945.     DWORD cbSize;
  946.     LPCWSTR pwszIPAddress;
  947.     LPCWSTR pwszPort;
  948.     LPCWSTR pwszDNSName;
  949.     }  WM_CLIENT_PROPERTIES_EX;
  950. typedef struct _WMPortNumberRange
  951.     {
  952.     WORD wPortBegin;
  953.     WORD wPortEnd;
  954.     }  WM_PORT_NUMBER_RANGE;
  955. typedef struct _WMT_BUFFER_SEGMENT
  956.     {
  957.     INSSBuffer *pBuffer;
  958.     DWORD cbOffset;
  959.     DWORD cbLength;
  960.     }  WMT_BUFFER_SEGMENT;
  961. typedef struct _WMT_PAYLOAD_FRAGMENT
  962.     {
  963.     DWORD dwPayloadIndex;
  964.     WMT_BUFFER_SEGMENT segmentData;
  965.     }  WMT_PAYLOAD_FRAGMENT;
  966. typedef struct _WMT_FILESINK_DATA_UNIT
  967.     {
  968.     WMT_BUFFER_SEGMENT packetHeaderBuffer;
  969.     DWORD cPayloads;
  970.     WMT_BUFFER_SEGMENT *pPayloadHeaderBuffers;
  971.     DWORD cPayloadDataFragments;
  972.     WMT_PAYLOAD_FRAGMENT *pPayloadDataFragments;
  973.     }  WMT_FILESINK_DATA_UNIT;
  974. typedef struct _WMT_WEBSTREAM_FORMAT
  975.     {
  976.     WORD cbSize;
  977.     WORD cbSampleHeaderFixedData;
  978.     WORD wVersion;
  979.     WORD wReserved;
  980.     }  WMT_WEBSTREAM_FORMAT;
  981. typedef struct _WMT_WEBSTREAM_SAMPLE_HEADER
  982.     {
  983.     WORD cbLength;
  984.     WORD wPart;
  985.     WORD cTotalParts;
  986.     WORD wSampleType;
  987.     WCHAR wszURL[ 1 ];
  988.     }  WMT_WEBSTREAM_SAMPLE_HEADER;
  989. typedef struct _WMAddressAccessEntry
  990.     {
  991.     DWORD dwIPAddress;
  992.     DWORD dwMask;
  993.     }  WM_ADDRESS_ACCESSENTRY;
  994. #pragma pack(push)
  995. #pragma pack(1)
  996. typedef struct _WMPicture
  997.     {
  998.     LPWSTR pwszMIMEType;
  999.     BYTE bPictureType;
  1000.     LPWSTR pwszDescription;
  1001.     DWORD dwDataLen;
  1002.     BYTE *pbData;
  1003.     }  WM_PICTURE;
  1004. typedef struct _WMSynchronisedLyrics
  1005.     {
  1006.     BYTE bTimeStampFormat;
  1007.     BYTE bContentType;
  1008.     LPWSTR pwszContentDescriptor;
  1009.     DWORD dwLyricsLen;
  1010.     BYTE *pbLyrics;
  1011.     }  WM_SYNCHRONISED_LYRICS;
  1012. typedef struct _WMUserWebURL
  1013.     {
  1014.     LPWSTR pwszDescription;
  1015.     LPWSTR pwszURL;
  1016.     }  WM_USER_WEB_URL;
  1017. typedef struct _WMUserText
  1018.     {
  1019.     LPWSTR pwszDescription;
  1020.     LPWSTR pwszText;
  1021.     }  WM_USER_TEXT;
  1022. typedef struct _WMLeakyBucketPair
  1023.     {
  1024.     DWORD dwBitrate;
  1025.     DWORD msBufferWindow;
  1026.     }  WM_LEAKY_BUCKET_PAIR;
  1027. #pragma pack(pop)
  1028. typedef struct _WM_LICENSE_STATE_DATA
  1029.     {
  1030.     DWORD dwSize;
  1031.     DWORD dwNumStates;
  1032.     DRM_LICENSE_STATE_DATA stateData[ 1 ];
  1033.     }  WM_LICENSE_STATE_DATA;
  1034. typedef struct __WMT_WATERMARK_ENTRY
  1035.     {
  1036.     WMT_WATERMARK_ENTRY_TYPE wmetType;
  1037.     CLSID clsid;
  1038.     UINT cbDisplayName;
  1039.     LPWSTR pwszDisplayName;
  1040.     }  WMT_WATERMARK_ENTRY;
  1041. #define WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME      1 // sample has input frame 
  1042. #define WMT_VIDEOIMAGE_SAMPLE_OUTPUT_FRAME     2 // sample produces output frame 
  1043. #define WMT_VIDEOIMAGE_SAMPLE_USES_CURRENT_INPUT_FRAME  4 
  1044. #define WMT_VIDEOIMAGE_SAMPLE_USES_PREVIOUS_INPUT_FRAME 8 
  1045. #define WMT_VIDEOIMAGE_SAMPLE_MOTION       1 // acef used (includes resizing) 
  1046. #define WMT_VIDEOIMAGE_SAMPLE_ROTATION     2 // bd also used (not valid without acef) 
  1047. #define WMT_VIDEOIMAGE_SAMPLE_BLENDING     4 // BlendCoef1 used 
  1048. #define WMT_VIDEOIMAGE_SAMPLE_ADV_BLENDING 8 // BlendCoef2 also used (not valid without BlendCoef1) 
  1049. #define WMT_VIDEOIMAGE_INTEGER_DENOMINATOR 65536L 
  1050. #define WMT_VIDEOIMAGE_MAGIC_NUMBER 0x1d4a45f2 
  1051. typedef struct __WMT_VIDEOIMAGE_SAMPLE
  1052.     {
  1053.     DWORD dwMagic;
  1054.     ULONG cbStruct;
  1055.     DWORD dwControlFlags;
  1056.     DWORD dwInputFlagsCur;
  1057.     LONG lCurMotionXtoX;
  1058.     LONG lCurMotionYtoX;
  1059.     LONG lCurMotionXoffset;
  1060.     LONG lCurMotionXtoY;
  1061.     LONG lCurMotionYtoY;
  1062.     LONG lCurMotionYoffset;
  1063.     LONG lCurBlendCoef1;
  1064.     LONG lCurBlendCoef2;
  1065.     DWORD dwInputFlagsPrev;
  1066.     LONG lPrevMotionXtoX;
  1067.     LONG lPrevMotionYtoX;
  1068.     LONG lPrevMotionXoffset;
  1069.     LONG lPrevMotionXtoY;
  1070.     LONG lPrevMotionYtoY;
  1071.     LONG lPrevMotionYoffset;
  1072.     LONG lPrevBlendCoef1;
  1073.     LONG lPrevBlendCoef2;
  1074.     }  WMT_VIDEOIMAGE_SAMPLE;
  1075. typedef struct _WMMediaType
  1076.     {
  1077.     GUID majortype;
  1078.     GUID subtype;
  1079.     BOOL bFixedSizeSamples;
  1080.     BOOL bTemporalCompression;
  1081.     ULONG lSampleSize;
  1082.     GUID formattype;
  1083.     IUnknown *pUnk;
  1084.     ULONG cbFormat;
  1085.     /* [size_is] */ BYTE *pbFormat;
  1086.     }  WM_MEDIA_TYPE;
  1087. typedef struct tagWMVIDEOINFOHEADER
  1088. {
  1089.     //
  1090.     // The bit we really want to use.
  1091.     //
  1092.     RECT rcSource;
  1093.     //
  1094.     // Where the video should go.
  1095.     //
  1096.     RECT rcTarget;
  1097.     //
  1098.     // Approximate bit data rate.
  1099.     //
  1100.     DWORD dwBitRate;
  1101.     //
  1102.     // Bit error rate for this stream.
  1103.     //
  1104.     DWORD dwBitErrorRate;
  1105.     //
  1106.     // Average time per frame (100ns units).
  1107.     //
  1108.     LONGLONG AvgTimePerFrame;
  1109.     BITMAPINFOHEADER bmiHeader;
  1110. } WMVIDEOINFOHEADER;
  1111. typedef struct tagWMVIDEOINFOHEADER2
  1112. {
  1113.     //
  1114.     // The bit we really want to use.
  1115.     //
  1116.     RECT rcSource;
  1117.     //
  1118.     // Where the video should go.
  1119.     //
  1120.     RECT rcTarget;
  1121.     //
  1122.     // Approximate bit data rate.
  1123.     //
  1124.     DWORD dwBitRate;
  1125.     //
  1126.     // Bit error rate for this stream.
  1127.     //
  1128.     DWORD dwBitErrorRate;
  1129.     //
  1130.     // Average time per frame (100ns units).
  1131.     //
  1132.     LONGLONG AvgTimePerFrame;
  1133.     //
  1134.     // Use AMINTERLACE_* defines. Reject connection if undefined bits are not 0.
  1135.     //
  1136.     DWORD dwInterlaceFlags;
  1137.     //
  1138.     // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0.
  1139.     //
  1140.     DWORD dwCopyProtectFlags;
  1141.     //
  1142.     // X dimension of picture aspect ratio, e.g. 16 for 16x9 display.
  1143.     //
  1144.     DWORD dwPictAspectRatioX;
  1145.     //
  1146.     // Y dimension of picture aspect ratio, e.g.  9 for 16x9 display.
  1147.     //
  1148.     DWORD dwPictAspectRatioY;
  1149.     //
  1150.     // Must be 0; reject connection otherwise.
  1151.     //
  1152.     DWORD dwReserved1;
  1153.     //
  1154.     // Must be 0; reject connection otherwise.
  1155.     //
  1156.     DWORD dwReserved2;
  1157.     BITMAPINFOHEADER bmiHeader;
  1158. } WMVIDEOINFOHEADER2;
  1159. typedef struct tagWMMPEG2VIDEOINFO
  1160. {
  1161.     //
  1162.     // Video info header2.
  1163.     //
  1164.     WMVIDEOINFOHEADER2 hdr;
  1165.     //
  1166.     // Not used for DVD.
  1167.     //
  1168.     DWORD dwStartTimeCode;
  1169.     //
  1170.     // Is 0 for DVD (no sequence header).
  1171.     //
  1172.     DWORD cbSequenceHeader;
  1173.     //
  1174.     // Use enum MPEG2Profile.
  1175.     //
  1176.     DWORD dwProfile;
  1177.     //
  1178.     // Use enum MPEG2Level.
  1179.     //
  1180.     DWORD dwLevel;
  1181.     //
  1182.     // Use AMMPEG2_* defines.  Reject connection if undefined bits are not 0.
  1183.     //
  1184.     DWORD dwFlags;
  1185.     //
  1186.     // Sequence header.
  1187.     //
  1188.     DWORD dwSequenceHeader[1];
  1189. } WMMPEG2VIDEOINFO;
  1190. typedef struct tagWMSCRIPTFORMAT
  1191. {
  1192.     GUID    scriptType; 
  1193. } WMSCRIPTFORMAT;
  1194. // 00000000-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_Base 
  1195. EXTERN_GUID(WMMEDIASUBTYPE_Base, 
  1196. 0x00000000, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1197. // 73646976-0000-0010-8000-00AA00389B71  'vids' == WMMEDIATYPE_Video 
  1198. EXTERN_GUID(WMMEDIATYPE_Video, 
  1199. 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1200. // e436eb78-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB1 
  1201. EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 
  1202. 0xe436eb78, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1203. // e436eb79-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB4 
  1204. EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 
  1205. 0xe436eb79, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1206. // e436eb7a-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB8 
  1207. EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 
  1208. 0xe436eb7a, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1209. // e436eb7b-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB565 
  1210. EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 
  1211. 0xe436eb7b, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1212. // e436eb7c-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB555 
  1213. EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 
  1214. 0xe436eb7c, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1215. // e436eb7d-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB24 
  1216. EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 
  1217. 0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1218. // e436eb7e-524f-11ce-9f53-0020af0ba770            MEDIASUBTYPE_RGB32 
  1219. EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 
  1220. 0xe436eb7e, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); 
  1221. // 30323449-0000-0010-8000-00AA00389B71  'YV12' ==  MEDIASUBTYPE_I420 
  1222. EXTERN_GUID(WMMEDIASUBTYPE_I420, 
  1223. 0x30323449, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1224. // 56555949-0000-0010-8000-00AA00389B71  'YV12' ==  MEDIASUBTYPE_IYUV 
  1225. EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 
  1226. 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1227. // 31313259-0000-0010-8000-00AA00389B71  'YV12' ==  MEDIASUBTYPE_YV12 
  1228. EXTERN_GUID(WMMEDIASUBTYPE_YV12, 
  1229. 0x32315659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1230. // 32595559-0000-0010-8000-00AA00389B71  'YUY2' == MEDIASUBTYPE_YUY2 
  1231. EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 
  1232. 0x32595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1233. // 59565955-0000-0010-8000-00AA00389B71  'UYVY' ==  MEDIASUBTYPE_UYVY 
  1234. EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 
  1235. 0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1236. // 55595659-0000-0010-8000-00AA00389B71  'YVYU' == MEDIASUBTYPE_YVYU 
  1237. EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 
  1238. 0x55595659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1239. // 39555659-0000-0010-8000-00AA00389B71  'YVU9' == MEDIASUBTYPE_YVU9 
  1240. EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 
  1241. 0x39555659, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1242. // 1d4a45f2-e5f6-4b44-8388-f0ae5c0e0c37            MEDIASUBTYPE_VIDEOIMAGE 
  1243. EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE,  
  1244. 0x1d4a45f2, 0xe5f6, 0x4b44, 0x83, 0x88, 0xf0, 0xae, 0x5c, 0x0e, 0x0c, 0x37); 
  1245. // 3334504D-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_MP43 
  1246. EXTERN_GUID(WMMEDIASUBTYPE_MP43, 
  1247. 0x3334504D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1248. // 5334504D-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_MP4S 
  1249. EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 
  1250. 0x5334504D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1251. // 31564D57-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMV1 
  1252. EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 
  1253. 0x31564D57, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1254. // 32564D57-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMV2 
  1255. EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 
  1256. 0x32564D57, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1257. // 3153534D-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_MSS1 
  1258. EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 
  1259. 0x3153534D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1260. // e06d8026-db46-11cf-b4d1-00805f6cbbea            WMMEDIASUBTYPE_MPEG2_VIDEO 
  1261. EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 
  1262. 0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea); 
  1263. // 73647561-0000-0010-8000-00AA00389B71  'auds' == WMMEDIATYPE_Audio 
  1264. EXTERN_GUID(WMMEDIATYPE_Audio, 
  1265. 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1266. // 00000001-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_PCM 
  1267. EXTERN_GUID(WMMEDIASUBTYPE_PCM, 
  1268. 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1269. // 00000009-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_DRM 
  1270. EXTERN_GUID(WMMEDIASUBTYPE_DRM, 
  1271. 0x00000009, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1272. // 00000162-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMAudioV9 
  1273. EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 
  1274. 0x00000162, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1275. // 00000163-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMAudio_Lossless 
  1276. EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 
  1277. 0x00000163, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1278. // 3253534D-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_MSS2 
  1279. EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 
  1280. 0x3253534D, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1281. // 0000000A-0000-0010-8000-00AA00389B71        WMMEDIASUBTYPE_WMSP1 
  1282. EXTERN_GUID( WMMEDIASUBTYPE_WMSP1, 
  1283. 0x0000000A,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71); 
  1284. // 33564D57-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMV3 
  1285. EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 
  1286. 0x33564D57, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1287. // 33564D57-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMVP 
  1288. EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 
  1289. 0x50564D57, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1290. // 00000161-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMAudioV8 
  1291. EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV8, 
  1292. 0x00000161, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1293. // 00000161-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMAudioV7 
  1294. EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV7, 
  1295. 0x00000161, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1296. // 00000161-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_WMAudioV2 
  1297. EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV2, 
  1298. 0x00000161, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1299. // 00000130-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_ACELPnet 
  1300. EXTERN_GUID(WMMEDIASUBTYPE_ACELPnet, 
  1301. 0x00000130, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1302. // 00000050-0000-0010-8000-00AA00389B71            WMMEDIASUBTYPE_MP3 
  1303. EXTERN_GUID(WMMEDIASUBTYPE_MP3, 
  1304. 0x00000055, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); 
  1305. // 776257d4-c627-41cb-8f81-7ac7ff1c40cc            WMMEDIASUBTYPE_WebStream 
  1306. EXTERN_GUID(WMMEDIASUBTYPE_WebStream, 
  1307. 0x776257d4, 0xc627, 0x41cb, 0x8f, 0x81, 0x7a, 0xc7, 0xff, 0x1c, 0x40, 0xcc); 
  1308. // 73636d64-0000-0010-8000-00AA00389B71  'scmd' == WMMEDIATYPE_Script 
  1309. EXTERN_GUID(WMMEDIATYPE_Script, 
  1310. 0x73636d64, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); 
  1311. // 34A50FD8-8AA5-4386-81FE-A0EFE0488E31  'imag' == WMMEDIATYPE_Image 
  1312. EXTERN_GUID(WMMEDIATYPE_Image, 
  1313. 0x34a50fd8, 0x8aa5, 0x4386, 0x81, 0xfe, 0xa0, 0xef, 0xe0, 0x48, 0x8e, 0x31); 
  1314. // D9E47579-930E-4427-ADFC-AD80F290E470  'fxfr' == WMMEDIATYPE_FileTransfer 
  1315. EXTERN_GUID(WMMEDIATYPE_FileTransfer, 
  1316. 0xd9e47579, 0x930e, 0x4427, 0xad, 0xfc, 0xad, 0x80, 0xf2, 0x90, 0xe4, 0x70); 
  1317. // 9BBA1EA7-5AB2-4829-BA57-0940209BCF3E      'text' == WMMEDIATYPE_Text 
  1318. EXTERN_GUID(WMMEDIATYPE_Text, 
  1319. 0x9bba1ea7, 0x5ab2, 0x4829, 0xba, 0x57, 0x9, 0x40, 0x20, 0x9b, 0xcf, 0x3e); 
  1320. // 05589f80-c356-11ce-bf01-00aa0055595a        WMFORMAT_VideoInfo 
  1321. EXTERN_GUID(WMFORMAT_VideoInfo, 
  1322. 0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a); 
  1323. // e06d80e3-db46-11cf-b4d1-00805f6cbbea        WMFORMAT_MPEG2Video 
  1324. EXTERN_GUID(WMFORMAT_MPEG2Video, 
  1325. 0xe06d80e3, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea); 
  1326. // 05589f81-c356-11ce-bf01-00aa0055595a        WMFORMAT_WaveFormatEx 
  1327. EXTERN_GUID(WMFORMAT_WaveFormatEx, 
  1328. 0x05589f81, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a); 
  1329. // 5C8510F2-DEBE-4ca7-BBA5-F07A104F8DFF        WMFORMAT_Script 
  1330. EXTERN_GUID(WMFORMAT_Script, 
  1331. 0x5c8510f2, 0xdebe, 0x4ca7, 0xbb, 0xa5, 0xf0, 0x7a, 0x10, 0x4f, 0x8d, 0xff); 
  1332. // da1e6b13-8359-4050-b398-388e965bf00c        WMFORMAT_WebStream 
  1333. EXTERN_GUID(WMFORMAT_WebStream, 
  1334. 0xda1e6b13, 0x8359, 0x4050, 0xb3, 0x98, 0x38, 0x8e, 0x96, 0x5b, 0xf0, 0x0c); 
  1335. // 82f38a70-c29f-11d1-97ad-00a0c95ea850        WMSCRIPTTYPE_TwoStrings 
  1336. EXTERN_GUID( WMSCRIPTTYPE_TwoStrings, 
  1337. 0x82f38a70,0xc29f,0x11d1,0x97,0xad,0x00,0xa0,0xc9,0x5e,0xa8,0x50); 
  1338. EXTERN_GUID( WM_SampleExtensionGUID_OutputCleanPoint, 0xf72a3c6f, 0x6eb4, 0x4ebc, 0xb1, 0x92, 0x9, 0xad, 0x97, 0x59, 0xe8, 0x28 );
  1339. EXTERN_GUID( WM_SampleExtensionGUID_Timecode, 0x399595ec, 0x8667, 0x4e2d, 0x8f, 0xdb, 0x98, 0x81, 0x4c, 0xe7, 0x6c, 0x1e);
  1340. EXTERN_GUID( WM_SampleExtensionGUID_FileName, 0xe165ec0e, 0x19ed, 0x45d7, 0xb4, 0xa7, 0x25, 0xcb, 0xd1, 0xe2, 0x8e, 0x9b);
  1341. EXTERN_GUID( WM_SampleExtensionGUID_ContentType, 0xd590dc20, 0x07bc, 0x436c, 0x9c, 0xf7, 0xf3, 0xbb, 0xfb, 0xf1, 0xa4, 0xdc );
  1342. EXTERN_GUID( WM_SampleExtensionGUID_PixelAspectRatio, 0x1b1ee554, 0xf9ea, 0x4bc8, 0x82, 0x1a, 0x37, 0x6b, 0x74, 0xe4, 0xc4, 0xb8 );
  1343. EXTERN_GUID( WM_SampleExtensionGUID_SampleDuration, 0xc6bd9450, 0x867f, 0x4907, 0x83, 0xa3, 0xc7, 0x79, 0x21, 0xb7, 0x33, 0xad );
  1344. #define WM_SampleExtension_ContentType_Size      1
  1345. #define WM_SampleExtension_PixelAspectRatio_Size 2
  1346. #define WM_SampleExtension_Timecode_Size            14
  1347. #define WM_SampleExtension_SampleDuration_Size   2
  1348. #define WM_CT_INTERLACED  128
  1349. #define WM_CT_BOTTOM_FIELD_FIRST 32
  1350. #define WM_CT_TOP_FIELD_FIRST    64
  1351. #pragma pack(push)
  1352. #pragma pack(2)
  1353. typedef struct _WMT_TIMECODE_EXTENSION_DATA
  1354.     {
  1355.     WORD wRange;
  1356.     DWORD dwTimecode;
  1357.     DWORD dwUserbits;
  1358.     DWORD dwAmFlags;
  1359.     }  WMT_TIMECODE_EXTENSION_DATA;
  1360. #pragma pack(pop)
  1361. EXTERN_GUID( IID_IWMMediaProps,         0x96406bce,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1362. EXTERN_GUID( IID_IWMVideoMediaProps,    0x96406bcf,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1363. EXTERN_GUID( IID_IWMWriter,             0x96406bd4,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1364. EXTERN_GUID( IID_IWMInputMediaProps,    0x96406bd5,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1365. EXTERN_GUID( IID_IWMReader,             0x96406bd6,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1366. EXTERN_GUID( IID_IWMSyncReader,         0x9397f121,0x7705,0x4dc9,0xb0,0x49,0x98,0xb6,0x98,0x18,0x84,0x14 );
  1367. EXTERN_GUID( IID_IWMSyncReader2,        0xfaed3d21,0x1b6b,0x4af7,0x8c,0xb6,0x3e,0x18,0x9b,0xbc,0x18,0x7b );
  1368. EXTERN_GUID( IID_IWMOutputMediaProps,   0x96406bd7,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1369. EXTERN_GUID( IID_IWMStatusCallback,     0x6d7cdc70,0x9888,0x11d3,0x8e,0xdc,0x00,0xc0,0x4f,0x61,0x09,0xcf );
  1370. EXTERN_GUID( IID_IWMReaderCallback,     0x96406bd8,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1371. EXTERN_GUID( IID_IWMCredentialCallback, 0x342e0eb7,0xe651,0x450c,0x97,0x5b,0x2a,0xce,0x2c,0x90,0xc4,0x8e );
  1372. EXTERN_GUID( IID_IWMMetadataEditor,     0x96406bd9,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1373. EXTERN_GUID( IID_IWMMetadataEditor2,    0x203cffe3,0x2e18,0x4fdf,0xb5,0x9d,0x6e,0x71,0x53,0x05,0x34,0xcf );
  1374. EXTERN_GUID( IID_IWMDRMEditor,          0xFF130EBC,0xA6C3,0x42A6,0xB4,0x01,0xC3,0x38,0x2C,0x3E,0x08,0xB3 );
  1375. EXTERN_GUID( IID_IWMHeaderInfo,         0x96406bda,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1376. EXTERN_GUID( IID_IWMHeaderInfo2,        0x15cf9781,0x454e,0x482e,0xb3,0x93,0x85,0xfa,0xe4,0x87,0xa8,0x10 );
  1377. EXTERN_GUID( IID_IWMHeaderInfo3,        0x15CC68E3,0x27CC,0x4ecd,0xB2,0x22,0x3F,0x5D,0x02,0xD8,0x0B,0xD5 );
  1378. EXTERN_GUID( IID_IWMProfileManager,     0xd16679f2,0x6ca0,0x472d,0x8d,0x31,0x2f,0x5d,0x55,0xae,0xe1,0x55 );
  1379. EXTERN_GUID( IID_IWMProfileManager2,    0x7a924e51,0x73c1,0x494d,0x80,0x19,0x23,0xd3,0x7e,0xd9,0xb8,0x9a );
  1380. EXTERN_GUID( IID_IWMProfileManagerLanguage, 0xba4dcc78,0x7ee0,0x4ab8,0xb2,0x7a,0xdb,0xce,0x8b,0xc5,0x14,0x54 );
  1381. EXTERN_GUID( IID_IWMProfile,            0x96406bdb,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1382. EXTERN_GUID( IID_IWMProfile2,           0x07e72d33,0xd94e,0x4be7,0x88,0x43,0x60,0xae,0x5f,0xf7,0xe5,0xf5 );
  1383. EXTERN_GUID( IID_IWMProfile3,           0x00ef96cc,0xa461,0x4546,0x8b,0xcd,0xc9,0xa2,0x8f,0x0e,0x06,0xf5 );
  1384. EXTERN_GUID( IID_IWMStreamConfig,       0x96406bdc,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1385. EXTERN_GUID( IID_IWMStreamConfig2,      0x7688d8cb,0xfc0d,0x43bd,0x94,0x59,0x5a,0x8d,0xec,0x20,0x0c,0xfa );
  1386. EXTERN_GUID( IID_IWMStreamConfig3,      0xcb164104,0x3aa9,0x45a7,0x9a,0xc9,0x4d,0xae,0xe1,0x31,0xd6,0xe1 );
  1387. EXTERN_GUID( IID_IWMStreamList,         0x96406bdd,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1388. EXTERN_GUID( IID_IWMMutualExclusion,    0x96406bde,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1389. EXTERN_GUID( IID_IWMMutualExclusion2,   0x302b57d,0x89d1,0x4ba2,0x85,0xc9,0x16,0x6f,0x2c,0x53,0xeb,0x91 );
  1390. EXTERN_GUID( IID_IWMBandwidthSharing,   0xad694af1,0xf8d9,0x42f8,0xbc,0x47,0x70,0x31,0x1b,0x0c,0x4f,0x9e );
  1391. EXTERN_GUID( IID_IWMStreamPrioritization, 0x8c1c6090,0xf9a8,0x4748,0x8e,0xc3,0xdd,0x11,0x08,0xba,0x1e,0x77 );
  1392. EXTERN_GUID( IID_IWMWriterAdvanced,     0x96406be3,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1393. EXTERN_GUID( IID_IWMWriterAdvanced2,    0x962dc1ec,0xc046,0x4db8,0x9c,0xc7,0x26,0xce,0xae,0x50,0x08,0x17 );
  1394. EXTERN_GUID( IID_IWMWriterAdvanced3,    0x2cd6492d,0x7c37,0x4e76,0x9d,0x3b,0x59,0x26,0x11,0x83,0xa2,0x2e );
  1395. EXTERN_GUID( IID_IWMWriterPreprocess,   0xfc54a285,0x38c4,0x45b5,0xaa,0x23,0x85,0xb9,0xf7,0xcb,0x42,0x4b );
  1396. EXTERN_GUID( IID_IWMWriterSink,         0x96406be4,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1397. EXTERN_GUID( IID_IWMWriterFileSink,     0x96406be5,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1398. EXTERN_GUID( IID_IWMWriterFileSink2,    0x14282ba7,0x4aef,0x4205,0x8c,0xe5,0xc2,0x29,0x03,0x5a,0x05,0xbc );
  1399. EXTERN_GUID( IID_IWMWriterFileSink3,    0x3fea4feb,0x2945,0x47a7,0xa1,0xdd,0xc5,0x3a,0x8f,0xc4,0xc4,0x5c );
  1400. EXTERN_GUID( IID_IWMWriterNetworkSink,  0x96406be7,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1401. EXTERN_GUID( IID_IWMClientConnections,  0x73c66010,0xa299,0x41df,0xb1,0xf0,0xcc,0xf0,0x3b,0x09,0xc1,0xc6 );
  1402. EXTERN_GUID( IID_IWMClientConnections2, 0x4091571e,0x4701,0x4593,0xbb,0x3d,0xd5,0xf5,0xf0,0xc7,0x42,0x46 ); 
  1403. EXTERN_GUID( IID_IWMReaderAdvanced,     0x96406bea,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1404. EXTERN_GUID( IID_IWMReaderAdvanced2,    0xae14a945,0xb90c,0x4d0d,0x91,0x27,0x80,0xd6,0x65,0xf7,0xd7,0x3e );
  1405. EXTERN_GUID( IID_IWMReaderAdvanced3,    0x5dc0674b,0xf04b,0x4a4e,0x9f,0x2a,0xb1,0xaf,0xde,0x2c,0x81,0x00 );
  1406. EXTERN_GUID( IID_IWMReaderAdvanced4,    0x945a76a2,0x12ae,0x4d48,0xbd,0x3c,0xcd,0x1d,0x90,0x39,0x9b,0x85 );
  1407. EXTERN_GUID( IID_IWMDRMReader,          0xd2827540,0x3ee7,0x432c,0xb1,0x4c,0xdc,0x17,0xf0,0x85,0xd3,0xb3 );
  1408. EXTERN_GUID( IID_IWMReaderCallbackAdvanced, 0x96406beb,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1409. EXTERN_GUID( IID_IWMReaderNetworkConfig,0x96406bec,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1410. EXTERN_GUID( IID_IWMReaderStreamClock,  0x96406bed,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff );
  1411. EXTERN_GUID( IID_IWMIndexer,            0x6d7cdc71,0x9888,0x11d3,0x8e,0xdc,0x00,0xc0,0x4f,0x61,0x09,0xcf );
  1412. EXTERN_GUID( IID_IWMIndexer2,           0xb70f1e42,0x6255,0x4df0,0xa6,0xb9,0x02,0xb2,0x12,0xd9,0xe2,0xbb );
  1413. EXTERN_GUID( IID_IWMReaderAllocatorEx,  0x9f762fa7,0xa22e,0x428d,0x93,0xc9,0xac,0x82,0xf3,0xaa,0xfe,0x5a );
  1414. EXTERN_GUID( IID_IWMReaderTypeNegotiation, 0xfdbe5592,0x81a1,0x41ea,0x93,0xbd,0x73,0x5c,0xad,0x1a,0xdc,0x5 );
  1415. EXTERN_GUID( IID_IWMLicenseBackup,      0x05E5AC9F,0x3FB6,0x4508,0xBB,0x43,0xA4,0x06,0x7B,0xA1,0xEB,0xE8);
  1416. EXTERN_GUID( IID_IWMLicenseRestore,     0xC70B6334,0xa22e,0x4efb,0xA2,0x45,0x15,0xE6,0x5A,0x00,0x4A,0x13);
  1417. EXTERN_GUID( IID_IWMBackupRestoreProps, 0x3C8E0DA6,0x996F,0x4ff3,0xA1,0xAF,0x48,0x38,0xF9,0x37,0x7e,0x2e);
  1418. EXTERN_GUID( IID_IWMPacketSize,         0xcdfb97ab,0x188f,0x40b3,0xb6,0x43,0x5b,0x79,0x03,0x97,0x5c,0x59);
  1419. EXTERN_GUID( IID_IWMPacketSize2,        0x8bfc2b9e,0xb646,0x4233,0xa8,0x77,0x1c,0x6a,0x7,0x96,0x69,0xdc);
  1420. EXTERN_GUID( IID_IWMRegisterCallback,   0xcf4b1f99,0x4de2,0x4e49,0xa3,0x63,0x25,0x27,0x40,0xd9,0x9b,0xc1);
  1421. EXTERN_GUID( IID_IWMWriterPostView,     0x81e20ce4,0x75ef,0x491a,0x80,0x04,0xfc,0x53,0xc4,0x5b,0xdc,0x3e);
  1422. EXTERN_GUID( IID_IWMWriterPostViewCallback, 0xd9d6549d,0xa193,0x4f24,0xb3,0x08,0x03,0x12,0x3d,0x9b,0x7f,0x8d);
  1423. EXTERN_GUID( IID_IWMCodecInfo,          0xa970f41e,0x34de,0x4a98,0xb3,0xba,0xe4,0xb3,0xca,0x75,0x28,0xf0);
  1424. EXTERN_GUID( IID_IWMCodecInfo2,         0xaa65e273,0xb686,0x4056,0x91,0xec,0xdd,0x76,0x8d,0x4d,0xf7,0x10);
  1425. EXTERN_GUID( IID_IWMCodecInfo3,         0x7e51f487,0x4d93,0x4f98,0x8a,0xb4,0x27,0xd0,0x56,0x5a,0xdc,0x51);
  1426. EXTERN_GUID( IID_IWMPropertyVault,      0x72995A79,0x5090,0x42a4,0x9C,0x8C,0xD9,0xD0,0xB6,0xD3,0x4B,0xE5 );
  1427. EXTERN_GUID( IID_IWMIStreamProps,       0x6816dad3,0x2b4b,0x4c8e,0x81,0x49,0x87,0x4c,0x34,0x83,0xa7,0x53 );
  1428. EXTERN_GUID( IID_IWMLanguageList,       0xdf683f00,0x2d49,0x4d8e,0x92,0xb7,0xfb,0x19,0xf6,0xa0,0xdc,0x57 );
  1429. EXTERN_GUID( IID_IWMDRMWriter,           0xd6ea5dd0,0x12a0,0x43f4,0x90,0xab,0xa3,0xfd,0x45,0x1e,0x6a,0x07 );
  1430. EXTERN_GUID( IID_IWMWriterPushSink,      0xdc10e6a5,0x072c,0x467d,0xbf,0x57,0x63,0x30,0xa9,0xdd,0xe1,0x2a );
  1431. EXTERN_GUID( IID_IWMReaderNetworkConfig2,0xd979a853,0x042b,0x4050,0x83,0x87,0xc9,0x39,0xdb,0x22,0x01,0x3f );
  1432. EXTERN_GUID( IID_IWMWatermarkInfo,       0x6f497062,0xf2e2,0x4624,0x8e,0xa7,0x9d,0xd4,0x0d,0x81,0xfc,0x8d );
  1433. EXTERN_GUID( IID_IWMReaderAccelerator,   0xbddc4d08,0x944d,0x4d52,0xa6,0x12,0x46,0xc3,0xfd,0xa0,0x7d,0xd4 );
  1434. EXTERN_GUID( IID_IWMReaderTimecode,        0xf369e2f0,0xe081,0x4fe6,0x84,0x50,0xb8,0x10,0xb2,0xf4,0x10,0xd1 );
  1435. EXTERN_GUID( IID_IWMImageInfo,            0x9f0aa3b6,0x7267,0x4d89,0x88,0xf2,0xba,0x91,0x5a,0xa5,0xc4,0xc6);
  1436. EXTERN_GUID( IID_IWMAddressAccess,        0xBB3C6389,0x1633,0x4e92,0xAF,0x14,0x9F,0x31,0x73,0xBA,0x39,0xD0 );
  1437. EXTERN_GUID( IID_IWMAddressAccess2,       0x65a83fc2,0x3e98,0x4d4d,0x81,0xb5,0x2a,0x74,0x28,0x86,0xb3,0x3d );
  1438. EXTERN_GUID( CLSID_WMMUTEX_Language, 0xD6E22A00,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE );
  1439. EXTERN_GUID( CLSID_WMMUTEX_Bitrate, 0xD6E22A01,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE );
  1440. EXTERN_GUID( CLSID_WMMUTEX_Presentation, 0xD6E22A02,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE );
  1441. EXTERN_GUID( CLSID_WMMUTEX_Unknown, 0xD6E22A03,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE );
  1442. EXTERN_GUID( CLSID_WMBandwidthSharing_Exclusive, 0xaf6060aa,0x5197,0x11d2,0xb6,0xaf,0x00,0xc0,0x4f,0xd9,0x08,0xe9 );
  1443. EXTERN_GUID( CLSID_WMBandwidthSharing_Partial, 0xaf6060ab,0x5197,0x11d2,0xb6,0xaf,0x00,0xc0,0x4f,0xd9,0x08,0xe9 );
  1444. // {B42CDE2B-6178-4a2c-A375-89DD3FD7F497}
  1445. EXTERN_GUID( WMT_DMOCATEGORY_AUDIO_WATERMARK, 0x65221c5a, 0xfa75, 0x4b39, 0xb5, 0x0c, 0x06, 0xc3, 0x36, 0xb6, 0xa3, 0xef );
  1446. // {E77797C6-18AF-4458-BBDD-492D3F78FC8F}
  1447. EXTERN_GUID( WMT_DMOCATEGORY_VIDEO_WATERMARK, 0x187cc922, 0x8efc, 0x4404, 0x9d, 0xaf, 0x63, 0xf4, 0x83, 0x0d, 0xf1, 0xbc );
  1448. #define WM_MAX_VIDEO_STREAMS            0x3f
  1449. #define WM_MAX_STREAMS                  0x3f
  1450. HRESULT STDMETHODCALLTYPE WMIsContentProtected( const WCHAR *pwszFileName, BOOL *pfIsProtected );
  1451. HRESULT STDMETHODCALLTYPE WMCreateCertificate( IUnknown** pUnkCert );
  1452. HRESULT STDMETHODCALLTYPE WMCreateWriter( IUnknown* pUnkCert, IWMWriter **ppWriter );
  1453. HRESULT STDMETHODCALLTYPE WMCreateReader( IUnknown* pUnkCert, DWORD dwRights, IWMReader **ppReader );
  1454. HRESULT STDMETHODCALLTYPE WMCreateSyncReader( IUnknown* pUnkCert, DWORD dwRights, IWMSyncReader **ppSyncReader );
  1455. HRESULT STDMETHODCALLTYPE WMCreateEditor( IWMMetadataEditor **ppEditor );
  1456. HRESULT STDMETHODCALLTYPE WMCreateIndexer( IWMIndexer **ppIndexer );
  1457. HRESULT STDMETHODCALLTYPE WMCreateBackupRestorer( IUnknown *pCallback, IWMLicenseBackup **ppBackup );
  1458. HRESULT STDMETHODCALLTYPE WMCreateProfileManager( IWMProfileManager **ppProfileManager );
  1459. HRESULT STDMETHODCALLTYPE WMCreateWriterFileSink( IWMWriterFileSink **ppSink );
  1460. HRESULT STDMETHODCALLTYPE WMCreateWriterNetworkSink( IWMWriterNetworkSink **ppSink );
  1461. HRESULT STDMETHODCALLTYPE WMCreateWriterPushSink( IWMWriterPushSink **ppSink );
  1462. extern RPC_IF_HANDLE __MIDL_itf_wmsdkidl_0000_v0_0_c_ifspec;
  1463. extern RPC_IF_HANDLE __MIDL_itf_wmsdkidl_0000_v0_0_s_ifspec;
  1464. #ifndef __IWMMediaProps_INTERFACE_DEFINED__
  1465. #define __IWMMediaProps_INTERFACE_DEFINED__
  1466. /* interface IWMMediaProps */
  1467. /* [local][unique][helpstring][uuid][object] */ 
  1468. EXTERN_C const IID IID_IWMMediaProps;
  1469. #if defined(__cplusplus) && !defined(CINTERFACE)
  1470.     
  1471.     MIDL_INTERFACE("96406BCE-2B2B-11d3-B36B-00C04F6108FF")
  1472.     IWMMediaProps : public IUnknown
  1473.     {
  1474.     public:
  1475.         virtual HRESULT STDMETHODCALLTYPE GetType( 
  1476.             /* [out] */ GUID *pguidType) = 0;
  1477.         
  1478.         virtual HRESULT STDMETHODCALLTYPE GetMediaType( 
  1479.             /* [out] */ WM_MEDIA_TYPE *pType,
  1480.             /* [out][in] */ DWORD *pcbType) = 0;
  1481.         
  1482.         virtual HRESULT STDMETHODCALLTYPE SetMediaType( 
  1483.             /* [in] */ WM_MEDIA_TYPE *pType) = 0;
  1484.         
  1485.     };
  1486.     
  1487. #else  /* C style interface */
  1488.     typedef struct IWMMediaPropsVtbl
  1489.     {
  1490.         BEGIN_INTERFACE
  1491.         
  1492.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1493.             IWMMediaProps * This,
  1494.             /* [in] */ REFIID riid,
  1495.             /* [iid_is][out] */ void **ppvObject);
  1496.         
  1497.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1498.             IWMMediaProps * This);
  1499.         
  1500.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1501.             IWMMediaProps * This);
  1502.         
  1503.         HRESULT ( STDMETHODCALLTYPE *GetType )( 
  1504.             IWMMediaProps * This,
  1505.             /* [out] */ GUID *pguidType);
  1506.         
  1507.         HRESULT ( STDMETHODCALLTYPE *GetMediaType )( 
  1508.             IWMMediaProps * This,
  1509.             /* [out] */ WM_MEDIA_TYPE *pType,
  1510.             /* [out][in] */ DWORD *pcbType);
  1511.         
  1512.         HRESULT ( STDMETHODCALLTYPE *SetMediaType )( 
  1513.             IWMMediaProps * This,
  1514.             /* [in] */ WM_MEDIA_TYPE *pType);
  1515.         
  1516.         END_INTERFACE
  1517.     } IWMMediaPropsVtbl;
  1518.     interface IWMMediaProps
  1519.     {
  1520.         CONST_VTBL struct IWMMediaPropsVtbl *lpVtbl;
  1521.     };
  1522.     
  1523. #ifdef COBJMACROS
  1524. #define IWMMediaProps_QueryInterface(This,riid,ppvObject)
  1525.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1526. #define IWMMediaProps_AddRef(This)
  1527.     (This)->lpVtbl -> AddRef(This)
  1528. #define IWMMediaProps_Release(This)
  1529.     (This)->lpVtbl -> Release(This)
  1530. #define IWMMediaProps_GetType(This,pguidType)
  1531.     (This)->lpVtbl -> GetType(This,pguidType)
  1532. #define IWMMediaProps_GetMediaType(This,pType,pcbType)
  1533.     (This)->lpVtbl -> GetMediaType(This,pType,pcbType)
  1534. #define IWMMediaProps_SetMediaType(This,pType)
  1535.     (This)->lpVtbl -> SetMediaType(This,pType)
  1536. #endif /* COBJMACROS */
  1537. #endif  /* C style interface */
  1538. HRESULT STDMETHODCALLTYPE IWMMediaProps_GetType_Proxy( 
  1539.     IWMMediaProps * This,
  1540.     /* [out] */ GUID *pguidType);
  1541. void __RPC_STUB IWMMediaProps_GetType_Stub(
  1542.     IRpcStubBuffer *This,
  1543.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1544.     PRPC_MESSAGE _pRpcMessage,
  1545.     DWORD *_pdwStubPhase);
  1546. HRESULT STDMETHODCALLTYPE IWMMediaProps_GetMediaType_Proxy( 
  1547.     IWMMediaProps * This,
  1548.     /* [out] */ WM_MEDIA_TYPE *pType,
  1549.     /* [out][in] */ DWORD *pcbType);
  1550. void __RPC_STUB IWMMediaProps_GetMediaType_Stub(
  1551.     IRpcStubBuffer *This,
  1552.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1553.     PRPC_MESSAGE _pRpcMessage,
  1554.     DWORD *_pdwStubPhase);
  1555. HRESULT STDMETHODCALLTYPE IWMMediaProps_SetMediaType_Proxy( 
  1556.     IWMMediaProps * This,
  1557.     /* [in] */ WM_MEDIA_TYPE *pType);
  1558. void __RPC_STUB IWMMediaProps_SetMediaType_Stub(
  1559.     IRpcStubBuffer *This,
  1560.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1561.     PRPC_MESSAGE _pRpcMessage,
  1562.     DWORD *_pdwStubPhase);
  1563. #endif  /* __IWMMediaProps_INTERFACE_DEFINED__ */
  1564. #ifndef __IWMVideoMediaProps_INTERFACE_DEFINED__
  1565. #define __IWMVideoMediaProps_INTERFACE_DEFINED__
  1566. /* interface IWMVideoMediaProps */
  1567. /* [local][unique][helpstring][uuid][object] */ 
  1568. EXTERN_C const IID IID_IWMVideoMediaProps;
  1569. #if defined(__cplusplus) && !defined(CINTERFACE)
  1570.     
  1571.     MIDL_INTERFACE("96406BCF-2B2B-11d3-B36B-00C04F6108FF")
  1572.     IWMVideoMediaProps : public IWMMediaProps
  1573.     {
  1574.     public:
  1575.         virtual HRESULT STDMETHODCALLTYPE GetMaxKeyFrameSpacing( 
  1576.             /* [out] */ LONGLONG *pllTime) = 0;
  1577.         
  1578.         virtual HRESULT STDMETHODCALLTYPE SetMaxKeyFrameSpacing( 
  1579.             /* [in] */ LONGLONG llTime) = 0;
  1580.         
  1581.         virtual HRESULT STDMETHODCALLTYPE GetQuality( 
  1582.             /* [out] */ DWORD *pdwQuality) = 0;
  1583.         
  1584.         virtual HRESULT STDMETHODCALLTYPE SetQuality( 
  1585.             /* [in] */ DWORD dwQuality) = 0;
  1586.         
  1587.     };
  1588.     
  1589. #else  /* C style interface */
  1590.     typedef struct IWMVideoMediaPropsVtbl
  1591.     {
  1592.         BEGIN_INTERFACE
  1593.         
  1594.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1595.             IWMVideoMediaProps * This,
  1596.             /* [in] */ REFIID riid,
  1597.             /* [iid_is][out] */ void **ppvObject);
  1598.         
  1599.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1600.             IWMVideoMediaProps * This);
  1601.         
  1602.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1603.             IWMVideoMediaProps * This);
  1604.         
  1605.         HRESULT ( STDMETHODCALLTYPE *GetType )( 
  1606.             IWMVideoMediaProps * This,
  1607.             /* [out] */ GUID *pguidType);
  1608.         
  1609.         HRESULT ( STDMETHODCALLTYPE *GetMediaType )( 
  1610.             IWMVideoMediaProps * This,
  1611.             /* [out] */ WM_MEDIA_TYPE *pType,
  1612.             /* [out][in] */ DWORD *pcbType);
  1613.         
  1614.         HRESULT ( STDMETHODCALLTYPE *SetMediaType )( 
  1615.             IWMVideoMediaProps * This,
  1616.             /* [in] */ WM_MEDIA_TYPE *pType);
  1617.         
  1618.         HRESULT ( STDMETHODCALLTYPE *GetMaxKeyFrameSpacing )( 
  1619.             IWMVideoMediaProps * This,
  1620.             /* [out] */ LONGLONG *pllTime);
  1621.         
  1622.         HRESULT ( STDMETHODCALLTYPE *SetMaxKeyFrameSpacing )( 
  1623.             IWMVideoMediaProps * This,
  1624.             /* [in] */ LONGLONG llTime);
  1625.         
  1626.         HRESULT ( STDMETHODCALLTYPE *GetQuality )( 
  1627.             IWMVideoMediaProps * This,
  1628.             /* [out] */ DWORD *pdwQuality);
  1629.         
  1630.         HRESULT ( STDMETHODCALLTYPE *SetQuality )( 
  1631.             IWMVideoMediaProps * This,
  1632.             /* [in] */ DWORD dwQuality);
  1633.         
  1634.         END_INTERFACE
  1635.     } IWMVideoMediaPropsVtbl;
  1636.     interface IWMVideoMediaProps
  1637.     {
  1638.         CONST_VTBL struct IWMVideoMediaPropsVtbl *lpVtbl;
  1639.     };
  1640.     
  1641. #ifdef COBJMACROS
  1642. #define IWMVideoMediaProps_QueryInterface(This,riid,ppvObject)
  1643.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1644. #define IWMVideoMediaProps_AddRef(This)
  1645.     (This)->lpVtbl -> AddRef(This)
  1646. #define IWMVideoMediaProps_Release(This)
  1647.     (This)->lpVtbl -> Release(This)
  1648. #define IWMVideoMediaProps_GetType(This,pguidType)
  1649.     (This)->lpVtbl -> GetType(This,pguidType)
  1650. #define IWMVideoMediaProps_GetMediaType(This,pType,pcbType)
  1651.     (This)->lpVtbl -> GetMediaType(This,pType,pcbType)
  1652. #define IWMVideoMediaProps_SetMediaType(This,pType)
  1653.     (This)->lpVtbl -> SetMediaType(This,pType)
  1654. #define IWMVideoMediaProps_GetMaxKeyFrameSpacing(This,pllTime)
  1655.     (This)->lpVtbl -> GetMaxKeyFrameSpacing(This,pllTime)
  1656. #define IWMVideoMediaProps_SetMaxKeyFrameSpacing(This,llTime)
  1657.     (This)->lpVtbl -> SetMaxKeyFrameSpacing(This,llTime)
  1658. #define IWMVideoMediaProps_GetQuality(This,pdwQuality)
  1659.     (This)->lpVtbl -> GetQuality(This,pdwQuality)
  1660. #define IWMVideoMediaProps_SetQuality(This,dwQuality)
  1661.     (This)->lpVtbl -> SetQuality(This,dwQuality)
  1662. #endif /* COBJMACROS */
  1663. #endif  /* C style interface */
  1664. HRESULT STDMETHODCALLTYPE IWMVideoMediaProps_GetMaxKeyFrameSpacing_Proxy( 
  1665.     IWMVideoMediaProps * This,
  1666.     /* [out] */ LONGLONG *pllTime);
  1667. void __RPC_STUB IWMVideoMediaProps_GetMaxKeyFrameSpacing_Stub(
  1668.     IRpcStubBuffer *This,
  1669.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1670.     PRPC_MESSAGE _pRpcMessage,
  1671.     DWORD *_pdwStubPhase);
  1672. HRESULT STDMETHODCALLTYPE IWMVideoMediaProps_SetMaxKeyFrameSpacing_Proxy( 
  1673.     IWMVideoMediaProps * This,
  1674.     /* [in] */ LONGLONG llTime);
  1675. void __RPC_STUB IWMVideoMediaProps_SetMaxKeyFrameSpacing_Stub(
  1676.     IRpcStubBuffer *This,
  1677.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1678.     PRPC_MESSAGE _pRpcMessage,
  1679.     DWORD *_pdwStubPhase);
  1680. HRESULT STDMETHODCALLTYPE IWMVideoMediaProps_GetQuality_Proxy( 
  1681.     IWMVideoMediaProps * This,
  1682.     /* [out] */ DWORD *pdwQuality);
  1683. void __RPC_STUB IWMVideoMediaProps_GetQuality_Stub(
  1684.     IRpcStubBuffer *This,
  1685.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1686.     PRPC_MESSAGE _pRpcMessage,
  1687.     DWORD *_pdwStubPhase);
  1688. HRESULT STDMETHODCALLTYPE IWMVideoMediaProps_SetQuality_Proxy( 
  1689.     IWMVideoMediaProps * This,
  1690.     /* [in] */ DWORD dwQuality);
  1691. void __RPC_STUB IWMVideoMediaProps_SetQuality_Stub(
  1692.     IRpcStubBuffer *This,
  1693.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1694.     PRPC_MESSAGE _pRpcMessage,
  1695.     DWORD *_pdwStubPhase);
  1696. #endif  /* __IWMVideoMediaProps_INTERFACE_DEFINED__ */
  1697. #ifndef __IWMWriter_INTERFACE_DEFINED__
  1698. #define __IWMWriter_INTERFACE_DEFINED__
  1699. /* interface IWMWriter */
  1700. /* [local][unique][helpstring][uuid][object] */ 
  1701. EXTERN_C const IID IID_IWMWriter;
  1702. #if defined(__cplusplus) && !defined(CINTERFACE)
  1703.     
  1704.     MIDL_INTERFACE("96406BD4-2B2B-11d3-B36B-00C04F6108FF")
  1705.     IWMWriter : public IUnknown
  1706.     {
  1707.     public:
  1708.         virtual HRESULT STDMETHODCALLTYPE SetProfileByID( 
  1709.             /* [in] */ REFGUID guidProfile) = 0;
  1710.         
  1711.         virtual HRESULT STDMETHODCALLTYPE SetProfile( 
  1712.             /* [in] */ IWMProfile *pProfile) = 0;
  1713.         
  1714.         virtual HRESULT STDMETHODCALLTYPE SetOutputFilename( 
  1715.             /* [in] */ const WCHAR *pwszFilename) = 0;
  1716.         
  1717.         virtual HRESULT STDMETHODCALLTYPE GetInputCount( 
  1718.             /* [out] */ DWORD *pcInputs) = 0;
  1719.         
  1720.         virtual HRESULT STDMETHODCALLTYPE GetInputProps( 
  1721.             /* [in] */ DWORD dwInputNum,
  1722.             /* [out] */ IWMInputMediaProps **ppInput) = 0;
  1723.         
  1724.         virtual HRESULT STDMETHODCALLTYPE SetInputProps( 
  1725.             /* [in] */ DWORD dwInputNum,
  1726.             /* [in] */ IWMInputMediaProps *pInput) = 0;
  1727.         
  1728.         virtual HRESULT STDMETHODCALLTYPE GetInputFormatCount( 
  1729.             /* [in] */ DWORD dwInputNumber,
  1730.             /* [out] */ DWORD *pcFormats) = 0;
  1731.         
  1732.         virtual HRESULT STDMETHODCALLTYPE GetInputFormat( 
  1733.             /* [in] */ DWORD dwInputNumber,
  1734.             /* [in] */ DWORD dwFormatNumber,
  1735.             /* [out] */ IWMInputMediaProps **pProps) = 0;
  1736.         
  1737.         virtual HRESULT STDMETHODCALLTYPE BeginWriting( void) = 0;
  1738.         
  1739.         virtual HRESULT STDMETHODCALLTYPE EndWriting( void) = 0;
  1740.         
  1741.         virtual HRESULT STDMETHODCALLTYPE AllocateSample( 
  1742.             /* [in] */ DWORD dwSampleSize,
  1743.             /* [out] */ INSSBuffer **ppSample) = 0;
  1744.         
  1745.         virtual HRESULT STDMETHODCALLTYPE WriteSample( 
  1746.             /* [in] */ DWORD dwInputNum,
  1747.             /* [in] */ QWORD cnsSampleTime,
  1748.             /* [in] */ DWORD dwFlags,
  1749.             /* [in] */ INSSBuffer *pSample) = 0;
  1750.         
  1751.         virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
  1752.         
  1753.     };
  1754.     
  1755. #else  /* C style interface */
  1756.     typedef struct IWMWriterVtbl
  1757.     {
  1758.         BEGIN_INTERFACE
  1759.         
  1760.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  1761.             IWMWriter * This,
  1762.             /* [in] */ REFIID riid,
  1763.             /* [iid_is][out] */ void **ppvObject);
  1764.         
  1765.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  1766.             IWMWriter * This);
  1767.         
  1768.         ULONG ( STDMETHODCALLTYPE *Release )( 
  1769.             IWMWriter * This);
  1770.         
  1771.         HRESULT ( STDMETHODCALLTYPE *SetProfileByID )( 
  1772.             IWMWriter * This,
  1773.             /* [in] */ REFGUID guidProfile);
  1774.         
  1775.         HRESULT ( STDMETHODCALLTYPE *SetProfile )( 
  1776.             IWMWriter * This,
  1777.             /* [in] */ IWMProfile *pProfile);
  1778.         
  1779.         HRESULT ( STDMETHODCALLTYPE *SetOutputFilename )( 
  1780.             IWMWriter * This,
  1781.             /* [in] */ const WCHAR *pwszFilename);
  1782.         
  1783.         HRESULT ( STDMETHODCALLTYPE *GetInputCount )( 
  1784.             IWMWriter * This,
  1785.             /* [out] */ DWORD *pcInputs);
  1786.         
  1787.         HRESULT ( STDMETHODCALLTYPE *GetInputProps )( 
  1788.             IWMWriter * This,
  1789.             /* [in] */ DWORD dwInputNum,
  1790.             /* [out] */ IWMInputMediaProps **ppInput);
  1791.         
  1792.         HRESULT ( STDMETHODCALLTYPE *SetInputProps )( 
  1793.             IWMWriter * This,
  1794.             /* [in] */ DWORD dwInputNum,
  1795.             /* [in] */ IWMInputMediaProps *pInput);
  1796.         
  1797.         HRESULT ( STDMETHODCALLTYPE *GetInputFormatCount )( 
  1798.             IWMWriter * This,
  1799.             /* [in] */ DWORD dwInputNumber,
  1800.             /* [out] */ DWORD *pcFormats);
  1801.         
  1802.         HRESULT ( STDMETHODCALLTYPE *GetInputFormat )( 
  1803.             IWMWriter * This,
  1804.             /* [in] */ DWORD dwInputNumber,
  1805.             /* [in] */ DWORD dwFormatNumber,
  1806.             /* [out] */ IWMInputMediaProps **pProps);
  1807.         
  1808.         HRESULT ( STDMETHODCALLTYPE *BeginWriting )( 
  1809.             IWMWriter * This);
  1810.         
  1811.         HRESULT ( STDMETHODCALLTYPE *EndWriting )( 
  1812.             IWMWriter * This);
  1813.         
  1814.         HRESULT ( STDMETHODCALLTYPE *AllocateSample )( 
  1815.             IWMWriter * This,
  1816.             /* [in] */ DWORD dwSampleSize,
  1817.             /* [out] */ INSSBuffer **ppSample);
  1818.         
  1819.         HRESULT ( STDMETHODCALLTYPE *WriteSample )( 
  1820.             IWMWriter * This,
  1821.             /* [in] */ DWORD dwInputNum,
  1822.             /* [in] */ QWORD cnsSampleTime,
  1823.             /* [in] */ DWORD dwFlags,
  1824.             /* [in] */ INSSBuffer *pSample);
  1825.         
  1826.         HRESULT ( STDMETHODCALLTYPE *Flush )( 
  1827.             IWMWriter * This);
  1828.         
  1829.         END_INTERFACE
  1830.     } IWMWriterVtbl;
  1831.     interface IWMWriter
  1832.     {
  1833.         CONST_VTBL struct IWMWriterVtbl *lpVtbl;
  1834.     };
  1835.     
  1836. #ifdef COBJMACROS
  1837. #define IWMWriter_QueryInterface(This,riid,ppvObject)
  1838.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  1839. #define IWMWriter_AddRef(This)
  1840.     (This)->lpVtbl -> AddRef(This)
  1841. #define IWMWriter_Release(This)
  1842.     (This)->lpVtbl -> Release(This)
  1843. #define IWMWriter_SetProfileByID(This,guidProfile)
  1844.     (This)->lpVtbl -> SetProfileByID(This,guidProfile)
  1845. #define IWMWriter_SetProfile(This,pProfile)
  1846.     (This)->lpVtbl -> SetProfile(This,pProfile)
  1847. #define IWMWriter_SetOutputFilename(This,pwszFilename)
  1848.     (This)->lpVtbl -> SetOutputFilename(This,pwszFilename)
  1849. #define IWMWriter_GetInputCount(This,pcInputs)
  1850.     (This)->lpVtbl -> GetInputCount(This,pcInputs)
  1851. #define IWMWriter_GetInputProps(This,dwInputNum,ppInput)
  1852.     (This)->lpVtbl -> GetInputProps(This,dwInputNum,ppInput)
  1853. #define IWMWriter_SetInputProps(This,dwInputNum,pInput)
  1854.     (This)->lpVtbl -> SetInputProps(This,dwInputNum,pInput)
  1855. #define IWMWriter_GetInputFormatCount(This,dwInputNumber,pcFormats)
  1856.     (This)->lpVtbl -> GetInputFormatCount(This,dwInputNumber,pcFormats)
  1857. #define IWMWriter_GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps)
  1858.     (This)->lpVtbl -> GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps)
  1859. #define IWMWriter_BeginWriting(This)
  1860.     (This)->lpVtbl -> BeginWriting(This)
  1861. #define IWMWriter_EndWriting(This)
  1862.     (This)->lpVtbl -> EndWriting(This)
  1863. #define IWMWriter_AllocateSample(This,dwSampleSize,ppSample)
  1864.     (This)->lpVtbl -> AllocateSample(This,dwSampleSize,ppSample)
  1865. #define IWMWriter_WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample)
  1866.     (This)->lpVtbl -> WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample)
  1867. #define IWMWriter_Flush(This)
  1868.     (This)->lpVtbl -> Flush(This)
  1869. #endif /* COBJMACROS */
  1870. #endif  /* C style interface */
  1871. HRESULT STDMETHODCALLTYPE IWMWriter_SetProfileByID_Proxy( 
  1872.     IWMWriter * This,
  1873.     /* [in] */ REFGUID guidProfile);
  1874. void __RPC_STUB IWMWriter_SetProfileByID_Stub(
  1875.     IRpcStubBuffer *This,
  1876.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1877.     PRPC_MESSAGE _pRpcMessage,
  1878.     DWORD *_pdwStubPhase);
  1879. HRESULT STDMETHODCALLTYPE IWMWriter_SetProfile_Proxy( 
  1880.     IWMWriter * This,
  1881.     /* [in] */ IWMProfile *pProfile);
  1882. void __RPC_STUB IWMWriter_SetProfile_Stub(
  1883.     IRpcStubBuffer *This,
  1884.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1885.     PRPC_MESSAGE _pRpcMessage,
  1886.     DWORD *_pdwStubPhase);
  1887. HRESULT STDMETHODCALLTYPE IWMWriter_SetOutputFilename_Proxy( 
  1888.     IWMWriter * This,
  1889.     /* [in] */ const WCHAR *pwszFilename);
  1890. void __RPC_STUB IWMWriter_SetOutputFilename_Stub(
  1891.     IRpcStubBuffer *This,
  1892.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1893.     PRPC_MESSAGE _pRpcMessage,
  1894.     DWORD *_pdwStubPhase);
  1895. HRESULT STDMETHODCALLTYPE IWMWriter_GetInputCount_Proxy( 
  1896.     IWMWriter * This,
  1897.     /* [out] */ DWORD *pcInputs);
  1898. void __RPC_STUB IWMWriter_GetInputCount_Stub(
  1899.     IRpcStubBuffer *This,
  1900.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1901.     PRPC_MESSAGE _pRpcMessage,
  1902.     DWORD *_pdwStubPhase);
  1903. HRESULT STDMETHODCALLTYPE IWMWriter_GetInputProps_Proxy( 
  1904.     IWMWriter * This,
  1905.     /* [in] */ DWORD dwInputNum,
  1906.     /* [out] */ IWMInputMediaProps **ppInput);
  1907. void __RPC_STUB IWMWriter_GetInputProps_Stub(
  1908.     IRpcStubBuffer *This,
  1909.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1910.     PRPC_MESSAGE _pRpcMessage,
  1911.     DWORD *_pdwStubPhase);
  1912. HRESULT STDMETHODCALLTYPE IWMWriter_SetInputProps_Proxy( 
  1913.     IWMWriter * This,
  1914.     /* [in] */ DWORD dwInputNum,
  1915.     /* [in] */ IWMInputMediaProps *pInput);
  1916. void __RPC_STUB IWMWriter_SetInputProps_Stub(
  1917.     IRpcStubBuffer *This,
  1918.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1919.     PRPC_MESSAGE _pRpcMessage,
  1920.     DWORD *_pdwStubPhase);
  1921. HRESULT STDMETHODCALLTYPE IWMWriter_GetInputFormatCount_Proxy( 
  1922.     IWMWriter * This,
  1923.     /* [in] */ DWORD dwInputNumber,
  1924.     /* [out] */ DWORD *pcFormats);
  1925. void __RPC_STUB IWMWriter_GetInputFormatCount_Stub(
  1926.     IRpcStubBuffer *This,
  1927.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1928.     PRPC_MESSAGE _pRpcMessage,
  1929.     DWORD *_pdwStubPhase);
  1930. HRESULT STDMETHODCALLTYPE IWMWriter_GetInputFormat_Proxy( 
  1931.     IWMWriter * This,
  1932.     /* [in] */ DWORD dwInputNumber,
  1933.     /* [in] */ DWORD dwFormatNumber,
  1934.     /* [out] */ IWMInputMediaProps **pProps);
  1935. void __RPC_STUB IWMWriter_GetInputFormat_Stub(
  1936.     IRpcStubBuffer *This,
  1937.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1938.     PRPC_MESSAGE _pRpcMessage,
  1939.     DWORD *_pdwStubPhase);
  1940. HRESULT STDMETHODCALLTYPE IWMWriter_BeginWriting_Proxy( 
  1941.     IWMWriter * This);
  1942. void __RPC_STUB IWMWriter_BeginWriting_Stub(
  1943.     IRpcStubBuffer *This,
  1944.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1945.     PRPC_MESSAGE _pRpcMessage,
  1946.     DWORD *_pdwStubPhase);
  1947. HRESULT STDMETHODCALLTYPE IWMWriter_EndWriting_Proxy( 
  1948.     IWMWriter * This);
  1949. void __RPC_STUB IWMWriter_EndWriting_Stub(
  1950.     IRpcStubBuffer *This,
  1951.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1952.     PRPC_MESSAGE _pRpcMessage,
  1953.     DWORD *_pdwStubPhase);
  1954. HRESULT STDMETHODCALLTYPE IWMWriter_AllocateSample_Proxy( 
  1955.     IWMWriter * This,
  1956.     /* [in] */ DWORD dwSampleSize,
  1957.     /* [out] */ INSSBuffer **ppSample);
  1958. void __RPC_STUB IWMWriter_AllocateSample_Stub(
  1959.     IRpcStubBuffer *This,
  1960.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1961.     PRPC_MESSAGE _pRpcMessage,
  1962.     DWORD *_pdwStubPhase);
  1963. HRESULT STDMETHODCALLTYPE IWMWriter_WriteSample_Proxy( 
  1964.     IWMWriter * This,
  1965.     /* [in] */ DWORD dwInputNum,
  1966.     /* [in] */ QWORD cnsSampleTime,
  1967.     /* [in] */ DWORD dwFlags,
  1968.     /* [in] */ INSSBuffer *pSample);
  1969. void __RPC_STUB IWMWriter_WriteSample_Stub(
  1970.     IRpcStubBuffer *This,
  1971.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1972.     PRPC_MESSAGE _pRpcMessage,
  1973.     DWORD *_pdwStubPhase);
  1974. HRESULT STDMETHODCALLTYPE IWMWriter_Flush_Proxy( 
  1975.     IWMWriter * This);
  1976. void __RPC_STUB IWMWriter_Flush_Stub(
  1977.     IRpcStubBuffer *This,
  1978.     IRpcChannelBuffer *_pRpcChannelBuffer,
  1979.     PRPC_MESSAGE _pRpcMessage,
  1980.     DWORD *_pdwStubPhase);
  1981. #endif  /* __IWMWriter_INTERFACE_DEFINED__ */
  1982. #ifndef __IWMDRMWriter_INTERFACE_DEFINED__
  1983. #define __IWMDRMWriter_INTERFACE_DEFINED__
  1984. /* interface IWMDRMWriter */
  1985. /* [local][unique][helpstring][uuid][object] */ 
  1986. EXTERN_C const IID IID_IWMDRMWriter;
  1987. #if defined(__cplusplus) && !defined(CINTERFACE)
  1988.     
  1989.     MIDL_INTERFACE("d6ea5dd0-12a0-43f4-90ab-a3fd451e6a07")
  1990.     IWMDRMWriter : public IUnknown
  1991.     {
  1992.     public:
  1993.         virtual HRESULT STDMETHODCALLTYPE GenerateKeySeed( 
  1994.             /* [size_is][out] */ WCHAR *pwszKeySeed,
  1995.             /* [out][in] */ DWORD *pcwchLength) = 0;
  1996.         
  1997.         virtual HRESULT STDMETHODCALLTYPE GenerateKeyID( 
  1998.             /* [size_is][out] */ WCHAR *pwszKeyID,
  1999.             /* [out][in] */ DWORD *pcwchLength) = 0;
  2000.         
  2001.         virtual HRESULT STDMETHODCALLTYPE GenerateSigningKeyPair( 
  2002.             /* [size_is][out] */ WCHAR *pwszPrivKey,
  2003.             /* [out][in] */ DWORD *pcwchPrivKeyLength,
  2004.             /* [size_is][out] */ WCHAR *pwszPubKey,
  2005.             /* [out][in] */ DWORD *pcwchPubKeyLength) = 0;
  2006.         
  2007.         virtual HRESULT STDMETHODCALLTYPE SetDRMAttribute( 
  2008.             /* [in] */ WORD wStreamNum,
  2009.             /* [in] */ LPCWSTR pszName,
  2010.             /* [in] */ WMT_ATTR_DATATYPE Type,
  2011.             /* [size_is][in] */ const BYTE *pValue,
  2012.             /* [in] */ WORD cbLength) = 0;
  2013.         
  2014.     };
  2015.     
  2016. #else  /* C style interface */
  2017.     typedef struct IWMDRMWriterVtbl
  2018.     {
  2019.         BEGIN_INTERFACE
  2020.         
  2021.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2022.             IWMDRMWriter * This,
  2023.             /* [in] */ REFIID riid,
  2024.             /* [iid_is][out] */ void **ppvObject);
  2025.         
  2026.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2027.             IWMDRMWriter * This);
  2028.         
  2029.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2030.             IWMDRMWriter * This);
  2031.         
  2032.         HRESULT ( STDMETHODCALLTYPE *GenerateKeySeed )( 
  2033.             IWMDRMWriter * This,
  2034.             /* [size_is][out] */ WCHAR *pwszKeySeed,
  2035.             /* [out][in] */ DWORD *pcwchLength);
  2036.         
  2037.         HRESULT ( STDMETHODCALLTYPE *GenerateKeyID )( 
  2038.             IWMDRMWriter * This,
  2039.             /* [size_is][out] */ WCHAR *pwszKeyID,
  2040.             /* [out][in] */ DWORD *pcwchLength);
  2041.         
  2042.         HRESULT ( STDMETHODCALLTYPE *GenerateSigningKeyPair )( 
  2043.             IWMDRMWriter * This,
  2044.             /* [size_is][out] */ WCHAR *pwszPrivKey,
  2045.             /* [out][in] */ DWORD *pcwchPrivKeyLength,
  2046.             /* [size_is][out] */ WCHAR *pwszPubKey,
  2047.             /* [out][in] */ DWORD *pcwchPubKeyLength);
  2048.         
  2049.         HRESULT ( STDMETHODCALLTYPE *SetDRMAttribute )( 
  2050.             IWMDRMWriter * This,
  2051.             /* [in] */ WORD wStreamNum,
  2052.             /* [in] */ LPCWSTR pszName,
  2053.             /* [in] */ WMT_ATTR_DATATYPE Type,
  2054.             /* [size_is][in] */ const BYTE *pValue,
  2055.             /* [in] */ WORD cbLength);
  2056.         
  2057.         END_INTERFACE
  2058.     } IWMDRMWriterVtbl;
  2059.     interface IWMDRMWriter
  2060.     {
  2061.         CONST_VTBL struct IWMDRMWriterVtbl *lpVtbl;
  2062.     };
  2063.     
  2064. #ifdef COBJMACROS
  2065. #define IWMDRMWriter_QueryInterface(This,riid,ppvObject)
  2066.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2067. #define IWMDRMWriter_AddRef(This)
  2068.     (This)->lpVtbl -> AddRef(This)
  2069. #define IWMDRMWriter_Release(This)
  2070.     (This)->lpVtbl -> Release(This)
  2071. #define IWMDRMWriter_GenerateKeySeed(This,pwszKeySeed,pcwchLength)
  2072.     (This)->lpVtbl -> GenerateKeySeed(This,pwszKeySeed,pcwchLength)
  2073. #define IWMDRMWriter_GenerateKeyID(This,pwszKeyID,pcwchLength)
  2074.     (This)->lpVtbl -> GenerateKeyID(This,pwszKeyID,pcwchLength)
  2075. #define IWMDRMWriter_GenerateSigningKeyPair(This,pwszPrivKey,pcwchPrivKeyLength,pwszPubKey,pcwchPubKeyLength)
  2076.     (This)->lpVtbl -> GenerateSigningKeyPair(This,pwszPrivKey,pcwchPrivKeyLength,pwszPubKey,pcwchPubKeyLength)
  2077. #define IWMDRMWriter_SetDRMAttribute(This,wStreamNum,pszName,Type,pValue,cbLength)
  2078.     (This)->lpVtbl -> SetDRMAttribute(This,wStreamNum,pszName,Type,pValue,cbLength)
  2079. #endif /* COBJMACROS */
  2080. #endif  /* C style interface */
  2081. HRESULT STDMETHODCALLTYPE IWMDRMWriter_GenerateKeySeed_Proxy( 
  2082.     IWMDRMWriter * This,
  2083.     /* [size_is][out] */ WCHAR *pwszKeySeed,
  2084.     /* [out][in] */ DWORD *pcwchLength);
  2085. void __RPC_STUB IWMDRMWriter_GenerateKeySeed_Stub(
  2086.     IRpcStubBuffer *This,
  2087.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2088.     PRPC_MESSAGE _pRpcMessage,
  2089.     DWORD *_pdwStubPhase);
  2090. HRESULT STDMETHODCALLTYPE IWMDRMWriter_GenerateKeyID_Proxy( 
  2091.     IWMDRMWriter * This,
  2092.     /* [size_is][out] */ WCHAR *pwszKeyID,
  2093.     /* [out][in] */ DWORD *pcwchLength);
  2094. void __RPC_STUB IWMDRMWriter_GenerateKeyID_Stub(
  2095.     IRpcStubBuffer *This,
  2096.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2097.     PRPC_MESSAGE _pRpcMessage,
  2098.     DWORD *_pdwStubPhase);
  2099. HRESULT STDMETHODCALLTYPE IWMDRMWriter_GenerateSigningKeyPair_Proxy( 
  2100.     IWMDRMWriter * This,
  2101.     /* [size_is][out] */ WCHAR *pwszPrivKey,
  2102.     /* [out][in] */ DWORD *pcwchPrivKeyLength,
  2103.     /* [size_is][out] */ WCHAR *pwszPubKey,
  2104.     /* [out][in] */ DWORD *pcwchPubKeyLength);
  2105. void __RPC_STUB IWMDRMWriter_GenerateSigningKeyPair_Stub(
  2106.     IRpcStubBuffer *This,
  2107.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2108.     PRPC_MESSAGE _pRpcMessage,
  2109.     DWORD *_pdwStubPhase);
  2110. HRESULT STDMETHODCALLTYPE IWMDRMWriter_SetDRMAttribute_Proxy( 
  2111.     IWMDRMWriter * This,
  2112.     /* [in] */ WORD wStreamNum,
  2113.     /* [in] */ LPCWSTR pszName,
  2114.     /* [in] */ WMT_ATTR_DATATYPE Type,
  2115.     /* [size_is][in] */ const BYTE *pValue,
  2116.     /* [in] */ WORD cbLength);
  2117. void __RPC_STUB IWMDRMWriter_SetDRMAttribute_Stub(
  2118.     IRpcStubBuffer *This,
  2119.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2120.     PRPC_MESSAGE _pRpcMessage,
  2121.     DWORD *_pdwStubPhase);
  2122. #endif  /* __IWMDRMWriter_INTERFACE_DEFINED__ */
  2123. #ifndef __IWMInputMediaProps_INTERFACE_DEFINED__
  2124. #define __IWMInputMediaProps_INTERFACE_DEFINED__
  2125. /* interface IWMInputMediaProps */
  2126. /* [local][unique][helpstring][uuid][object] */ 
  2127. EXTERN_C const IID IID_IWMInputMediaProps;
  2128. #if defined(__cplusplus) && !defined(CINTERFACE)
  2129.     
  2130.     MIDL_INTERFACE("96406BD5-2B2B-11d3-B36B-00C04F6108FF")
  2131.     IWMInputMediaProps : public IWMMediaProps
  2132.     {
  2133.     public:
  2134.         virtual HRESULT STDMETHODCALLTYPE GetConnectionName( 
  2135.             /* [size_is][out] */ WCHAR *pwszName,
  2136.             /* [out][in] */ WORD *pcchName) = 0;
  2137.         
  2138.         virtual HRESULT STDMETHODCALLTYPE GetGroupName( 
  2139.             /* [size_is][out] */ WCHAR *pwszName,
  2140.             /* [out][in] */ WORD *pcchName) = 0;
  2141.         
  2142.     };
  2143.     
  2144. #else  /* C style interface */
  2145.     typedef struct IWMInputMediaPropsVtbl
  2146.     {
  2147.         BEGIN_INTERFACE
  2148.         
  2149.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2150.             IWMInputMediaProps * This,
  2151.             /* [in] */ REFIID riid,
  2152.             /* [iid_is][out] */ void **ppvObject);
  2153.         
  2154.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2155.             IWMInputMediaProps * This);
  2156.         
  2157.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2158.             IWMInputMediaProps * This);
  2159.         
  2160.         HRESULT ( STDMETHODCALLTYPE *GetType )( 
  2161.             IWMInputMediaProps * This,
  2162.             /* [out] */ GUID *pguidType);
  2163.         
  2164.         HRESULT ( STDMETHODCALLTYPE *GetMediaType )( 
  2165.             IWMInputMediaProps * This,
  2166.             /* [out] */ WM_MEDIA_TYPE *pType,
  2167.             /* [out][in] */ DWORD *pcbType);
  2168.         
  2169.         HRESULT ( STDMETHODCALLTYPE *SetMediaType )( 
  2170.             IWMInputMediaProps * This,
  2171.             /* [in] */ WM_MEDIA_TYPE *pType);
  2172.         
  2173.         HRESULT ( STDMETHODCALLTYPE *GetConnectionName )( 
  2174.             IWMInputMediaProps * This,
  2175.             /* [size_is][out] */ WCHAR *pwszName,
  2176.             /* [out][in] */ WORD *pcchName);
  2177.         
  2178.         HRESULT ( STDMETHODCALLTYPE *GetGroupName )( 
  2179.             IWMInputMediaProps * This,
  2180.             /* [size_is][out] */ WCHAR *pwszName,
  2181.             /* [out][in] */ WORD *pcchName);
  2182.         
  2183.         END_INTERFACE
  2184.     } IWMInputMediaPropsVtbl;
  2185.     interface IWMInputMediaProps
  2186.     {
  2187.         CONST_VTBL struct IWMInputMediaPropsVtbl *lpVtbl;
  2188.     };
  2189.     
  2190. #ifdef COBJMACROS
  2191. #define IWMInputMediaProps_QueryInterface(This,riid,ppvObject)
  2192.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2193. #define IWMInputMediaProps_AddRef(This)
  2194.     (This)->lpVtbl -> AddRef(This)
  2195. #define IWMInputMediaProps_Release(This)
  2196.     (This)->lpVtbl -> Release(This)
  2197. #define IWMInputMediaProps_GetType(This,pguidType)
  2198.     (This)->lpVtbl -> GetType(This,pguidType)
  2199. #define IWMInputMediaProps_GetMediaType(This,pType,pcbType)
  2200.     (This)->lpVtbl -> GetMediaType(This,pType,pcbType)
  2201. #define IWMInputMediaProps_SetMediaType(This,pType)
  2202.     (This)->lpVtbl -> SetMediaType(This,pType)
  2203. #define IWMInputMediaProps_GetConnectionName(This,pwszName,pcchName)
  2204.     (This)->lpVtbl -> GetConnectionName(This,pwszName,pcchName)
  2205. #define IWMInputMediaProps_GetGroupName(This,pwszName,pcchName)
  2206.     (This)->lpVtbl -> GetGroupName(This,pwszName,pcchName)
  2207. #endif /* COBJMACROS */
  2208. #endif  /* C style interface */
  2209. HRESULT STDMETHODCALLTYPE IWMInputMediaProps_GetConnectionName_Proxy( 
  2210.     IWMInputMediaProps * This,
  2211.     /* [size_is][out] */ WCHAR *pwszName,
  2212.     /* [out][in] */ WORD *pcchName);
  2213. void __RPC_STUB IWMInputMediaProps_GetConnectionName_Stub(
  2214.     IRpcStubBuffer *This,
  2215.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2216.     PRPC_MESSAGE _pRpcMessage,
  2217.     DWORD *_pdwStubPhase);
  2218. HRESULT STDMETHODCALLTYPE IWMInputMediaProps_GetGroupName_Proxy( 
  2219.     IWMInputMediaProps * This,
  2220.     /* [size_is][out] */ WCHAR *pwszName,
  2221.     /* [out][in] */ WORD *pcchName);
  2222. void __RPC_STUB IWMInputMediaProps_GetGroupName_Stub(
  2223.     IRpcStubBuffer *This,
  2224.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2225.     PRPC_MESSAGE _pRpcMessage,
  2226.     DWORD *_pdwStubPhase);
  2227. #endif  /* __IWMInputMediaProps_INTERFACE_DEFINED__ */
  2228. #ifndef __IWMPropertyVault_INTERFACE_DEFINED__
  2229. #define __IWMPropertyVault_INTERFACE_DEFINED__
  2230. /* interface IWMPropertyVault */
  2231. /* [local][unique][helpstring][uuid][object] */ 
  2232. EXTERN_C const IID IID_IWMPropertyVault;
  2233. #if defined(__cplusplus) && !defined(CINTERFACE)
  2234.     
  2235.     MIDL_INTERFACE("72995A79-5090-42a4-9C8C-D9D0B6D34BE5")
  2236.     IWMPropertyVault : public IUnknown
  2237.     {
  2238.     public:
  2239.         virtual HRESULT STDMETHODCALLTYPE GetPropertyCount( 
  2240.             /* [in] */ DWORD *pdwCount) = 0;
  2241.         
  2242.         virtual HRESULT STDMETHODCALLTYPE GetPropertyByName( 
  2243.             /* [in] */ LPCWSTR pszName,
  2244.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2245.             /* [size_is][out] */ BYTE *pValue,
  2246.             /* [out][in] */ DWORD *pdwSize) = 0;
  2247.         
  2248.         virtual HRESULT STDMETHODCALLTYPE SetProperty( 
  2249.             /* [in] */ LPCWSTR pszName,
  2250.             /* [in] */ WMT_ATTR_DATATYPE pType,
  2251.             /* [in] */ BYTE *pValue,
  2252.             /* [in] */ DWORD dwSize) = 0;
  2253.         
  2254.         virtual HRESULT STDMETHODCALLTYPE GetPropertyByIndex( 
  2255.             /* [in] */ DWORD dwIndex,
  2256.             /* [size_is][out] */ LPWSTR pszName,
  2257.             /* [out][in] */ DWORD *pdwNameLen,
  2258.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2259.             /* [size_is][out] */ BYTE *pValue,
  2260.             /* [out][in] */ DWORD *pdwSize) = 0;
  2261.         
  2262.         virtual HRESULT STDMETHODCALLTYPE CopyPropertiesFrom( 
  2263.             /* [in] */ IWMPropertyVault *pIWMPropertyVault) = 0;
  2264.         
  2265.         virtual HRESULT STDMETHODCALLTYPE Clear( void) = 0;
  2266.         
  2267.     };
  2268.     
  2269. #else  /* C style interface */
  2270.     typedef struct IWMPropertyVaultVtbl
  2271.     {
  2272.         BEGIN_INTERFACE
  2273.         
  2274.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2275.             IWMPropertyVault * This,
  2276.             /* [in] */ REFIID riid,
  2277.             /* [iid_is][out] */ void **ppvObject);
  2278.         
  2279.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2280.             IWMPropertyVault * This);
  2281.         
  2282.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2283.             IWMPropertyVault * This);
  2284.         
  2285.         HRESULT ( STDMETHODCALLTYPE *GetPropertyCount )( 
  2286.             IWMPropertyVault * This,
  2287.             /* [in] */ DWORD *pdwCount);
  2288.         
  2289.         HRESULT ( STDMETHODCALLTYPE *GetPropertyByName )( 
  2290.             IWMPropertyVault * This,
  2291.             /* [in] */ LPCWSTR pszName,
  2292.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2293.             /* [size_is][out] */ BYTE *pValue,
  2294.             /* [out][in] */ DWORD *pdwSize);
  2295.         
  2296.         HRESULT ( STDMETHODCALLTYPE *SetProperty )( 
  2297.             IWMPropertyVault * This,
  2298.             /* [in] */ LPCWSTR pszName,
  2299.             /* [in] */ WMT_ATTR_DATATYPE pType,
  2300.             /* [in] */ BYTE *pValue,
  2301.             /* [in] */ DWORD dwSize);
  2302.         
  2303.         HRESULT ( STDMETHODCALLTYPE *GetPropertyByIndex )( 
  2304.             IWMPropertyVault * This,
  2305.             /* [in] */ DWORD dwIndex,
  2306.             /* [size_is][out] */ LPWSTR pszName,
  2307.             /* [out][in] */ DWORD *pdwNameLen,
  2308.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2309.             /* [size_is][out] */ BYTE *pValue,
  2310.             /* [out][in] */ DWORD *pdwSize);
  2311.         
  2312.         HRESULT ( STDMETHODCALLTYPE *CopyPropertiesFrom )( 
  2313.             IWMPropertyVault * This,
  2314.             /* [in] */ IWMPropertyVault *pIWMPropertyVault);
  2315.         
  2316.         HRESULT ( STDMETHODCALLTYPE *Clear )( 
  2317.             IWMPropertyVault * This);
  2318.         
  2319.         END_INTERFACE
  2320.     } IWMPropertyVaultVtbl;
  2321.     interface IWMPropertyVault
  2322.     {
  2323.         CONST_VTBL struct IWMPropertyVaultVtbl *lpVtbl;
  2324.     };
  2325.     
  2326. #ifdef COBJMACROS
  2327. #define IWMPropertyVault_QueryInterface(This,riid,ppvObject)
  2328.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2329. #define IWMPropertyVault_AddRef(This)
  2330.     (This)->lpVtbl -> AddRef(This)
  2331. #define IWMPropertyVault_Release(This)
  2332.     (This)->lpVtbl -> Release(This)
  2333. #define IWMPropertyVault_GetPropertyCount(This,pdwCount)
  2334.     (This)->lpVtbl -> GetPropertyCount(This,pdwCount)
  2335. #define IWMPropertyVault_GetPropertyByName(This,pszName,pType,pValue,pdwSize)
  2336.     (This)->lpVtbl -> GetPropertyByName(This,pszName,pType,pValue,pdwSize)
  2337. #define IWMPropertyVault_SetProperty(This,pszName,pType,pValue,dwSize)
  2338.     (This)->lpVtbl -> SetProperty(This,pszName,pType,pValue,dwSize)
  2339. #define IWMPropertyVault_GetPropertyByIndex(This,dwIndex,pszName,pdwNameLen,pType,pValue,pdwSize)
  2340.     (This)->lpVtbl -> GetPropertyByIndex(This,dwIndex,pszName,pdwNameLen,pType,pValue,pdwSize)
  2341. #define IWMPropertyVault_CopyPropertiesFrom(This,pIWMPropertyVault)
  2342.     (This)->lpVtbl -> CopyPropertiesFrom(This,pIWMPropertyVault)
  2343. #define IWMPropertyVault_Clear(This)
  2344.     (This)->lpVtbl -> Clear(This)
  2345. #endif /* COBJMACROS */
  2346. #endif  /* C style interface */
  2347. HRESULT STDMETHODCALLTYPE IWMPropertyVault_GetPropertyCount_Proxy( 
  2348.     IWMPropertyVault * This,
  2349.     /* [in] */ DWORD *pdwCount);
  2350. void __RPC_STUB IWMPropertyVault_GetPropertyCount_Stub(
  2351.     IRpcStubBuffer *This,
  2352.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2353.     PRPC_MESSAGE _pRpcMessage,
  2354.     DWORD *_pdwStubPhase);
  2355. HRESULT STDMETHODCALLTYPE IWMPropertyVault_GetPropertyByName_Proxy( 
  2356.     IWMPropertyVault * This,
  2357.     /* [in] */ LPCWSTR pszName,
  2358.     /* [out] */ WMT_ATTR_DATATYPE *pType,
  2359.     /* [size_is][out] */ BYTE *pValue,
  2360.     /* [out][in] */ DWORD *pdwSize);
  2361. void __RPC_STUB IWMPropertyVault_GetPropertyByName_Stub(
  2362.     IRpcStubBuffer *This,
  2363.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2364.     PRPC_MESSAGE _pRpcMessage,
  2365.     DWORD *_pdwStubPhase);
  2366. HRESULT STDMETHODCALLTYPE IWMPropertyVault_SetProperty_Proxy( 
  2367.     IWMPropertyVault * This,
  2368.     /* [in] */ LPCWSTR pszName,
  2369.     /* [in] */ WMT_ATTR_DATATYPE pType,
  2370.     /* [in] */ BYTE *pValue,
  2371.     /* [in] */ DWORD dwSize);
  2372. void __RPC_STUB IWMPropertyVault_SetProperty_Stub(
  2373.     IRpcStubBuffer *This,
  2374.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2375.     PRPC_MESSAGE _pRpcMessage,
  2376.     DWORD *_pdwStubPhase);
  2377. HRESULT STDMETHODCALLTYPE IWMPropertyVault_GetPropertyByIndex_Proxy( 
  2378.     IWMPropertyVault * This,
  2379.     /* [in] */ DWORD dwIndex,
  2380.     /* [size_is][out] */ LPWSTR pszName,
  2381.     /* [out][in] */ DWORD *pdwNameLen,
  2382.     /* [out] */ WMT_ATTR_DATATYPE *pType,
  2383.     /* [size_is][out] */ BYTE *pValue,
  2384.     /* [out][in] */ DWORD *pdwSize);
  2385. void __RPC_STUB IWMPropertyVault_GetPropertyByIndex_Stub(
  2386.     IRpcStubBuffer *This,
  2387.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2388.     PRPC_MESSAGE _pRpcMessage,
  2389.     DWORD *_pdwStubPhase);
  2390. HRESULT STDMETHODCALLTYPE IWMPropertyVault_CopyPropertiesFrom_Proxy( 
  2391.     IWMPropertyVault * This,
  2392.     /* [in] */ IWMPropertyVault *pIWMPropertyVault);
  2393. void __RPC_STUB IWMPropertyVault_CopyPropertiesFrom_Stub(
  2394.     IRpcStubBuffer *This,
  2395.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2396.     PRPC_MESSAGE _pRpcMessage,
  2397.     DWORD *_pdwStubPhase);
  2398. HRESULT STDMETHODCALLTYPE IWMPropertyVault_Clear_Proxy( 
  2399.     IWMPropertyVault * This);
  2400. void __RPC_STUB IWMPropertyVault_Clear_Stub(
  2401.     IRpcStubBuffer *This,
  2402.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2403.     PRPC_MESSAGE _pRpcMessage,
  2404.     DWORD *_pdwStubPhase);
  2405. #endif  /* __IWMPropertyVault_INTERFACE_DEFINED__ */
  2406. #ifndef __IWMIStreamProps_INTERFACE_DEFINED__
  2407. #define __IWMIStreamProps_INTERFACE_DEFINED__
  2408. /* interface IWMIStreamProps */
  2409. /* [local][unique][helpstring][uuid][object] */ 
  2410. EXTERN_C const IID IID_IWMIStreamProps;
  2411. #if defined(__cplusplus) && !defined(CINTERFACE)
  2412.     
  2413.     MIDL_INTERFACE("6816dad3-2b4b-4c8e-8149-874c3483a753")
  2414.     IWMIStreamProps : public IUnknown
  2415.     {
  2416.     public:
  2417.         virtual HRESULT STDMETHODCALLTYPE GetProperty( 
  2418.             /* [in] */ LPCWSTR pszName,
  2419.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2420.             /* [size_is][out] */ BYTE *pValue,
  2421.             /* [out][in] */ DWORD *pdwSize) = 0;
  2422.         
  2423.     };
  2424.     
  2425. #else  /* C style interface */
  2426.     typedef struct IWMIStreamPropsVtbl
  2427.     {
  2428.         BEGIN_INTERFACE
  2429.         
  2430.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2431.             IWMIStreamProps * This,
  2432.             /* [in] */ REFIID riid,
  2433.             /* [iid_is][out] */ void **ppvObject);
  2434.         
  2435.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2436.             IWMIStreamProps * This);
  2437.         
  2438.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2439.             IWMIStreamProps * This);
  2440.         
  2441.         HRESULT ( STDMETHODCALLTYPE *GetProperty )( 
  2442.             IWMIStreamProps * This,
  2443.             /* [in] */ LPCWSTR pszName,
  2444.             /* [out] */ WMT_ATTR_DATATYPE *pType,
  2445.             /* [size_is][out] */ BYTE *pValue,
  2446.             /* [out][in] */ DWORD *pdwSize);
  2447.         
  2448.         END_INTERFACE
  2449.     } IWMIStreamPropsVtbl;
  2450.     interface IWMIStreamProps
  2451.     {
  2452.         CONST_VTBL struct IWMIStreamPropsVtbl *lpVtbl;
  2453.     };
  2454.     
  2455. #ifdef COBJMACROS
  2456. #define IWMIStreamProps_QueryInterface(This,riid,ppvObject)
  2457.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2458. #define IWMIStreamProps_AddRef(This)
  2459.     (This)->lpVtbl -> AddRef(This)
  2460. #define IWMIStreamProps_Release(This)
  2461.     (This)->lpVtbl -> Release(This)
  2462. #define IWMIStreamProps_GetProperty(This,pszName,pType,pValue,pdwSize)
  2463.     (This)->lpVtbl -> GetProperty(This,pszName,pType,pValue,pdwSize)
  2464. #endif /* COBJMACROS */
  2465. #endif  /* C style interface */
  2466. HRESULT STDMETHODCALLTYPE IWMIStreamProps_GetProperty_Proxy( 
  2467.     IWMIStreamProps * This,
  2468.     /* [in] */ LPCWSTR pszName,
  2469.     /* [out] */ WMT_ATTR_DATATYPE *pType,
  2470.     /* [size_is][out] */ BYTE *pValue,
  2471.     /* [out][in] */ DWORD *pdwSize);
  2472. void __RPC_STUB IWMIStreamProps_GetProperty_Stub(
  2473.     IRpcStubBuffer *This,
  2474.     IRpcChannelBuffer *_pRpcChannelBuffer,
  2475.     PRPC_MESSAGE _pRpcMessage,
  2476.     DWORD *_pdwStubPhase);
  2477. #endif  /* __IWMIStreamProps_INTERFACE_DEFINED__ */
  2478. #ifndef __IWMReader_INTERFACE_DEFINED__
  2479. #define __IWMReader_INTERFACE_DEFINED__
  2480. /* interface IWMReader */
  2481. /* [local][unique][helpstring][uuid][object] */ 
  2482. EXTERN_C const IID IID_IWMReader;
  2483. #if defined(__cplusplus) && !defined(CINTERFACE)
  2484.     
  2485.     MIDL_INTERFACE("96406BD6-2B2B-11d3-B36B-00C04F6108FF")
  2486.     IWMReader : public IUnknown
  2487.     {
  2488.     public:
  2489.         virtual HRESULT STDMETHODCALLTYPE Open( 
  2490.             /* [in] */ const WCHAR *pwszURL,
  2491.             /* [in] */ IWMReaderCallback *pCallback,
  2492.             /* [in] */ void *pvContext) = 0;
  2493.         
  2494.         virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
  2495.         
  2496.         virtual HRESULT STDMETHODCALLTYPE GetOutputCount( 
  2497.             /* [out] */ DWORD *pcOutputs) = 0;
  2498.         
  2499.         virtual HRESULT STDMETHODCALLTYPE GetOutputProps( 
  2500.             /* [in] */ DWORD dwOutputNum,
  2501.             /* [out] */ IWMOutputMediaProps **ppOutput) = 0;
  2502.         
  2503.         virtual HRESULT STDMETHODCALLTYPE SetOutputProps( 
  2504.             /* [in] */ DWORD dwOutputNum,
  2505.             /* [in] */ IWMOutputMediaProps *pOutput) = 0;
  2506.         
  2507.         virtual HRESULT STDMETHODCALLTYPE GetOutputFormatCount( 
  2508.             /* [in] */ DWORD dwOutputNumber,
  2509.             /* [out] */ DWORD *pcFormats) = 0;
  2510.         
  2511.         virtual HRESULT STDMETHODCALLTYPE GetOutputFormat( 
  2512.             /* [in] */ DWORD dwOutputNumber,
  2513.             /* [in] */ DWORD dwFormatNumber,
  2514.             /* [out] */ IWMOutputMediaProps **ppProps) = 0;
  2515.         
  2516.         virtual HRESULT STDMETHODCALLTYPE Start( 
  2517.             /* [in] */ QWORD cnsStart,
  2518.             /* [in] */ QWORD cnsDuration,
  2519.             /* [in] */ float fRate,
  2520.             /* [in] */ void *pvContext) = 0;
  2521.         
  2522.         virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
  2523.         
  2524.         virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  2525.         
  2526.         virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  2527.         
  2528.     };
  2529.     
  2530. #else  /* C style interface */
  2531.     typedef struct IWMReaderVtbl
  2532.     {
  2533.         BEGIN_INTERFACE
  2534.         
  2535.         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
  2536.             IWMReader * This,
  2537.             /* [in] */ REFIID riid,
  2538.             /* [iid_is][out] */ void **ppvObject);
  2539.         
  2540.         ULONG ( STDMETHODCALLTYPE *AddRef )( 
  2541.             IWMReader * This);
  2542.         
  2543.         ULONG ( STDMETHODCALLTYPE *Release )( 
  2544.             IWMReader * This);
  2545.         
  2546.         HRESULT ( STDMETHODCALLTYPE *Open )( 
  2547.             IWMReader * This,
  2548.             /* [in] */ const WCHAR *pwszURL,
  2549.             /* [in] */ IWMReaderCallback *pCallback,
  2550.             /* [in] */ void *pvContext);
  2551.         
  2552.         HRESULT ( STDMETHODCALLTYPE *Close )( 
  2553.             IWMReader * This);
  2554.         
  2555.         HRESULT ( STDMETHODCALLTYPE *GetOutputCount )( 
  2556.             IWMReader * This,
  2557.             /* [out] */ DWORD *pcOutputs);
  2558.         
  2559.         HRESULT ( STDMETHODCALLTYPE *GetOutputProps )( 
  2560.             IWMReader * This,
  2561.             /* [in] */ DWORD dwOutputNum,
  2562.             /* [out] */ IWMOutputMediaProps **ppOutput);
  2563.         
  2564.         HRESULT ( STDMETHODCALLTYPE *SetOutputProps )( 
  2565.             IWMReader * This,
  2566.             /* [in] */ DWORD dwOutputNum,
  2567.             /* [in] */ IWMOutputMediaProps *pOutput);
  2568.         
  2569.         HRESULT ( STDMETHODCALLTYPE *GetOutputFormatCount )( 
  2570.             IWMReader * This,
  2571.             /* [in] */ DWORD dwOutputNumber,
  2572.             /* [out] */ DWORD *pcFormats);
  2573.         
  2574.         HRESULT ( STDMETHODCALLTYPE *GetOutputFormat )( 
  2575.             IWMReader * This,
  2576.             /* [in] */ DWORD dwOutputNumber,
  2577.             /* [in] */ DWORD dwFormatNumber,
  2578.             /* [out] */ IWMOutputMediaProps **ppProps);
  2579.         
  2580.         HRESULT ( STDMETHODCALLTYPE *Start )( 
  2581.             IWMReader * This,
  2582.             /* [in] */ QWORD cnsStart,
  2583.             /* [in] */ QWORD cnsDuration,
  2584.             /* [in] */ float fRate,
  2585.             /* [in] */ void *pvContext);
  2586.         
  2587.         HRESULT ( STDMETHODCALLTYPE *Stop )( 
  2588.             IWMReader * This);
  2589.         
  2590.         HRESULT ( STDMETHODCALLTYPE *Pause )( 
  2591.             IWMReader * This);
  2592.         
  2593.         HRESULT ( STDMETHODCALLTYPE *Resume )( 
  2594.             IWMReader * This);
  2595.         
  2596.         END_INTERFACE
  2597.     } IWMReaderVtbl;
  2598.     interface IWMReader
  2599.     {
  2600.         CONST_VTBL struct IWMReaderVtbl *lpVtbl;
  2601.     };
  2602.     
  2603. #ifdef COBJMACROS
  2604. #define IWMReader_QueryInterface(This,riid,ppvObject)
  2605.     (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  2606. #define IWMReader_AddRef(This)
  2607.     (This)->lpVtbl -> AddRef(This)
  2608. #define IWMReader_Release(This)
  2609.     (This)->lpVtbl -> Release(This)
  2610. #define IWMReader_Open(This,pwszURL,pCallback,pvContext)
  2611.     (This)->lpVtbl -> Open(This,pwszURL,pCallback,pvContext)
  2612. #define IWMReader_Close(This)
  2613.     (This)->lpVtbl -> Close(This)
  2614. #define IWMReader_GetOutputCount(This,pcOutputs)
  2615.     (This)->lpVtbl -> GetOutputCount(This,pcOutputs)
  2616. #define IWMReader_GetOutputProps(This,dwOutputNum,ppOutput)
  2617.     (This)->lpVtbl -> GetOutputProps(This,dwOutputNum,ppOutput)
  2618. #define IWMReader_SetOutputProps(This,dwOutputNum,pOutput)
  2619.     (This)->lpVtbl -> SetOutputProps(This,dwOutputNum,pOutput)
  2620. #define IWMReader_GetOutputFormatCount(This,dwOutputNumber,pcFormats)
  2621.     (This)->lpVtbl -> GetOutputFormatCount(This,dwOutputNumber,pcFormats)
  2622. #define IWMReader_GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps)
  2623.     (This)->lpVtbl -> GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps)
  2624. #define IWMReader_Start(This,cnsStart,cnsDuration,fRate,pvContext)
  2625.     (This)->lpVtbl -> Start(This,cnsStart,cnsDuration,fRate,pvContext)
  2626. #define IWMReader_Stop(This)
  2627.     (This)->lpVtbl -> Stop(This)
  2628. #define IWMReader_Pause(This)
  2629.     (This)->lpVtbl -> Pause(This)
  2630. #define IWMReader_Resume(This)
  2631.     (This)->lpVtbl -> Resume(This)
  2632. #endif /* COBJMACROS */
  2633. #endif  /* C style interface */
  2634. HRESULT STDMETHODCALLTYPE IWMReader_Open_Proxy( 
  2635.     IWMReader * This,
  2636.     /* [in] */ const WCHAR *pwszURL,