1 /*** Autogenerated by WIDL 3.19 from include/wmsdkidl.idl - Do not edit ***/
2 
3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
5 #endif
6 
7 #include <rpc.h>
8 #include <rpcndr.h>
9 
10 #ifndef COM_NO_WINDOWS_H
11 #include <windows.h>
12 #include <ole2.h>
13 #endif
14 
15 #ifndef __wmsdkidl_h__
16 #define __wmsdkidl_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IWMStatusCallback_FWD_DEFINED__
21 #define __IWMStatusCallback_FWD_DEFINED__
22 typedef interface IWMStatusCallback IWMStatusCallback;
23 #ifdef __cplusplus
24 interface IWMStatusCallback;
25 #endif /* __cplusplus */
26 #endif
27 
28 #ifndef __IWMReaderCallback_FWD_DEFINED__
29 #define __IWMReaderCallback_FWD_DEFINED__
30 typedef interface IWMReaderCallback IWMReaderCallback;
31 #ifdef __cplusplus
32 interface IWMReaderCallback;
33 #endif /* __cplusplus */
34 #endif
35 
36 #ifndef __IWMStreamList_FWD_DEFINED__
37 #define __IWMStreamList_FWD_DEFINED__
38 typedef interface IWMStreamList IWMStreamList;
39 #ifdef __cplusplus
40 interface IWMStreamList;
41 #endif /* __cplusplus */
42 #endif
43 
44 #ifndef __IWMMutualExclusion_FWD_DEFINED__
45 #define __IWMMutualExclusion_FWD_DEFINED__
46 typedef interface IWMMutualExclusion IWMMutualExclusion;
47 #ifdef __cplusplus
48 interface IWMMutualExclusion;
49 #endif /* __cplusplus */
50 #endif
51 
52 #ifndef __IWMBandwidthSharing_FWD_DEFINED__
53 #define __IWMBandwidthSharing_FWD_DEFINED__
54 typedef interface IWMBandwidthSharing IWMBandwidthSharing;
55 #ifdef __cplusplus
56 interface IWMBandwidthSharing;
57 #endif /* __cplusplus */
58 #endif
59 
60 #ifndef __IWMStreamPrioritization_FWD_DEFINED__
61 #define __IWMStreamPrioritization_FWD_DEFINED__
62 typedef interface IWMStreamPrioritization IWMStreamPrioritization;
63 #ifdef __cplusplus
64 interface IWMStreamPrioritization;
65 #endif /* __cplusplus */
66 #endif
67 
68 #ifndef __IWMStreamConfig_FWD_DEFINED__
69 #define __IWMStreamConfig_FWD_DEFINED__
70 typedef interface IWMStreamConfig IWMStreamConfig;
71 #ifdef __cplusplus
72 interface IWMStreamConfig;
73 #endif /* __cplusplus */
74 #endif
75 
76 #ifndef __IWMProfile_FWD_DEFINED__
77 #define __IWMProfile_FWD_DEFINED__
78 typedef interface IWMProfile IWMProfile;
79 #ifdef __cplusplus
80 interface IWMProfile;
81 #endif /* __cplusplus */
82 #endif
83 
84 #ifndef __IWMProfile2_FWD_DEFINED__
85 #define __IWMProfile2_FWD_DEFINED__
86 typedef interface IWMProfile2 IWMProfile2;
87 #ifdef __cplusplus
88 interface IWMProfile2;
89 #endif /* __cplusplus */
90 #endif
91 
92 #ifndef __IWMProfile3_FWD_DEFINED__
93 #define __IWMProfile3_FWD_DEFINED__
94 typedef interface IWMProfile3 IWMProfile3;
95 #ifdef __cplusplus
96 interface IWMProfile3;
97 #endif /* __cplusplus */
98 #endif
99 
100 #ifndef __IWMProfileManager_FWD_DEFINED__
101 #define __IWMProfileManager_FWD_DEFINED__
102 typedef interface IWMProfileManager IWMProfileManager;
103 #ifdef __cplusplus
104 interface IWMProfileManager;
105 #endif /* __cplusplus */
106 #endif
107 
108 #ifndef __IWMProfileManager2_FWD_DEFINED__
109 #define __IWMProfileManager2_FWD_DEFINED__
110 typedef interface IWMProfileManager2 IWMProfileManager2;
111 #ifdef __cplusplus
112 interface IWMProfileManager2;
113 #endif /* __cplusplus */
114 #endif
115 
116 #ifndef __IWMCodecInfo_FWD_DEFINED__
117 #define __IWMCodecInfo_FWD_DEFINED__
118 typedef interface IWMCodecInfo IWMCodecInfo;
119 #ifdef __cplusplus
120 interface IWMCodecInfo;
121 #endif /* __cplusplus */
122 #endif
123 
124 #ifndef __IWMCodecInfo2_FWD_DEFINED__
125 #define __IWMCodecInfo2_FWD_DEFINED__
126 typedef interface IWMCodecInfo2 IWMCodecInfo2;
127 #ifdef __cplusplus
128 interface IWMCodecInfo2;
129 #endif /* __cplusplus */
130 #endif
131 
132 #ifndef __IWMCodecInfo3_FWD_DEFINED__
133 #define __IWMCodecInfo3_FWD_DEFINED__
134 typedef interface IWMCodecInfo3 IWMCodecInfo3;
135 #ifdef __cplusplus
136 interface IWMCodecInfo3;
137 #endif /* __cplusplus */
138 #endif
139 
140 #ifndef __IWMMediaProps_FWD_DEFINED__
141 #define __IWMMediaProps_FWD_DEFINED__
142 typedef interface IWMMediaProps IWMMediaProps;
143 #ifdef __cplusplus
144 interface IWMMediaProps;
145 #endif /* __cplusplus */
146 #endif
147 
148 #ifndef __IWMOutputMediaProps_FWD_DEFINED__
149 #define __IWMOutputMediaProps_FWD_DEFINED__
150 typedef interface IWMOutputMediaProps IWMOutputMediaProps;
151 #ifdef __cplusplus
152 interface IWMOutputMediaProps;
153 #endif /* __cplusplus */
154 #endif
155 
156 #ifndef __IWMMetadataEditor_FWD_DEFINED__
157 #define __IWMMetadataEditor_FWD_DEFINED__
158 typedef interface IWMMetadataEditor IWMMetadataEditor;
159 #ifdef __cplusplus
160 interface IWMMetadataEditor;
161 #endif /* __cplusplus */
162 #endif
163 
164 #ifndef __IWMReader_FWD_DEFINED__
165 #define __IWMReader_FWD_DEFINED__
166 typedef interface IWMReader IWMReader;
167 #ifdef __cplusplus
168 interface IWMReader;
169 #endif /* __cplusplus */
170 #endif
171 
172 #ifndef __IWMPlayerHook_FWD_DEFINED__
173 #define __IWMPlayerHook_FWD_DEFINED__
174 typedef interface IWMPlayerHook IWMPlayerHook;
175 #ifdef __cplusplus
176 interface IWMPlayerHook;
177 #endif /* __cplusplus */
178 #endif
179 
180 #ifndef __IWMReaderAdvanced_FWD_DEFINED__
181 #define __IWMReaderAdvanced_FWD_DEFINED__
182 typedef interface IWMReaderAdvanced IWMReaderAdvanced;
183 #ifdef __cplusplus
184 interface IWMReaderAdvanced;
185 #endif /* __cplusplus */
186 #endif
187 
188 #ifndef __IWMReaderAdvanced2_FWD_DEFINED__
189 #define __IWMReaderAdvanced2_FWD_DEFINED__
190 typedef interface IWMReaderAdvanced2 IWMReaderAdvanced2;
191 #ifdef __cplusplus
192 interface IWMReaderAdvanced2;
193 #endif /* __cplusplus */
194 #endif
195 
196 #ifndef __IWMReaderAdvanced3_FWD_DEFINED__
197 #define __IWMReaderAdvanced3_FWD_DEFINED__
198 typedef interface IWMReaderAdvanced3 IWMReaderAdvanced3;
199 #ifdef __cplusplus
200 interface IWMReaderAdvanced3;
201 #endif /* __cplusplus */
202 #endif
203 
204 #ifndef __IWMReaderAdvanced4_FWD_DEFINED__
205 #define __IWMReaderAdvanced4_FWD_DEFINED__
206 typedef interface IWMReaderAdvanced4 IWMReaderAdvanced4;
207 #ifdef __cplusplus
208 interface IWMReaderAdvanced4;
209 #endif /* __cplusplus */
210 #endif
211 
212 #ifndef __IWMReaderAdvanced5_FWD_DEFINED__
213 #define __IWMReaderAdvanced5_FWD_DEFINED__
214 typedef interface IWMReaderAdvanced5 IWMReaderAdvanced5;
215 #ifdef __cplusplus
216 interface IWMReaderAdvanced5;
217 #endif /* __cplusplus */
218 #endif
219 
220 #ifndef __IWMReaderAdvanced6_FWD_DEFINED__
221 #define __IWMReaderAdvanced6_FWD_DEFINED__
222 typedef interface IWMReaderAdvanced6 IWMReaderAdvanced6;
223 #ifdef __cplusplus
224 interface IWMReaderAdvanced6;
225 #endif /* __cplusplus */
226 #endif
227 
228 #ifndef __IWMSyncReader_FWD_DEFINED__
229 #define __IWMSyncReader_FWD_DEFINED__
230 typedef interface IWMSyncReader IWMSyncReader;
231 #ifdef __cplusplus
232 interface IWMSyncReader;
233 #endif /* __cplusplus */
234 #endif
235 
236 #ifndef __IWMInputMediaProps_FWD_DEFINED__
237 #define __IWMInputMediaProps_FWD_DEFINED__
238 typedef interface IWMInputMediaProps IWMInputMediaProps;
239 #ifdef __cplusplus
240 interface IWMInputMediaProps;
241 #endif /* __cplusplus */
242 #endif
243 
244 #ifndef __IWMWriterSink_FWD_DEFINED__
245 #define __IWMWriterSink_FWD_DEFINED__
246 typedef interface IWMWriterSink IWMWriterSink;
247 #ifdef __cplusplus
248 interface IWMWriterSink;
249 #endif /* __cplusplus */
250 #endif
251 
252 #ifndef __IWMWriter_FWD_DEFINED__
253 #define __IWMWriter_FWD_DEFINED__
254 typedef interface IWMWriter IWMWriter;
255 #ifdef __cplusplus
256 interface IWMWriter;
257 #endif /* __cplusplus */
258 #endif
259 
260 #ifndef __IWMWriterAdvanced_FWD_DEFINED__
261 #define __IWMWriterAdvanced_FWD_DEFINED__
262 typedef interface IWMWriterAdvanced IWMWriterAdvanced;
263 #ifdef __cplusplus
264 interface IWMWriterAdvanced;
265 #endif /* __cplusplus */
266 #endif
267 
268 #ifndef __IWMWriterAdvanced2_FWD_DEFINED__
269 #define __IWMWriterAdvanced2_FWD_DEFINED__
270 typedef interface IWMWriterAdvanced2 IWMWriterAdvanced2;
271 #ifdef __cplusplus
272 interface IWMWriterAdvanced2;
273 #endif /* __cplusplus */
274 #endif
275 
276 #ifndef __IWMWriterAdvanced3_FWD_DEFINED__
277 #define __IWMWriterAdvanced3_FWD_DEFINED__
278 typedef interface IWMWriterAdvanced3 IWMWriterAdvanced3;
279 #ifdef __cplusplus
280 interface IWMWriterAdvanced3;
281 #endif /* __cplusplus */
282 #endif
283 
284 #ifndef __IWMHeaderInfo_FWD_DEFINED__
285 #define __IWMHeaderInfo_FWD_DEFINED__
286 typedef interface IWMHeaderInfo IWMHeaderInfo;
287 #ifdef __cplusplus
288 interface IWMHeaderInfo;
289 #endif /* __cplusplus */
290 #endif
291 
292 #ifndef __IWMHeaderInfo2_FWD_DEFINED__
293 #define __IWMHeaderInfo2_FWD_DEFINED__
294 typedef interface IWMHeaderInfo2 IWMHeaderInfo2;
295 #ifdef __cplusplus
296 interface IWMHeaderInfo2;
297 #endif /* __cplusplus */
298 #endif
299 
300 #ifndef __IWMHeaderInfo3_FWD_DEFINED__
301 #define __IWMHeaderInfo3_FWD_DEFINED__
302 typedef interface IWMHeaderInfo3 IWMHeaderInfo3;
303 #ifdef __cplusplus
304 interface IWMHeaderInfo3;
305 #endif /* __cplusplus */
306 #endif
307 
308 #ifndef __IWMReaderNetworkConfig_FWD_DEFINED__
309 #define __IWMReaderNetworkConfig_FWD_DEFINED__
310 typedef interface IWMReaderNetworkConfig IWMReaderNetworkConfig;
311 #ifdef __cplusplus
312 interface IWMReaderNetworkConfig;
313 #endif /* __cplusplus */
314 #endif
315 
316 #ifndef __IWMReaderNetworkConfig2_FWD_DEFINED__
317 #define __IWMReaderNetworkConfig2_FWD_DEFINED__
318 typedef interface IWMReaderNetworkConfig2 IWMReaderNetworkConfig2;
319 #ifdef __cplusplus
320 interface IWMReaderNetworkConfig2;
321 #endif /* __cplusplus */
322 #endif
323 
324 #ifndef __IWMReaderStreamClock_FWD_DEFINED__
325 #define __IWMReaderStreamClock_FWD_DEFINED__
326 typedef interface IWMReaderStreamClock IWMReaderStreamClock;
327 #ifdef __cplusplus
328 interface IWMReaderStreamClock;
329 #endif /* __cplusplus */
330 #endif
331 
332 #ifndef __IWMPacketSize_FWD_DEFINED__
333 #define __IWMPacketSize_FWD_DEFINED__
334 typedef interface IWMPacketSize IWMPacketSize;
335 #ifdef __cplusplus
336 interface IWMPacketSize;
337 #endif /* __cplusplus */
338 #endif
339 
340 #ifndef __IWMPacketSize2_FWD_DEFINED__
341 #define __IWMPacketSize2_FWD_DEFINED__
342 typedef interface IWMPacketSize2 IWMPacketSize2;
343 #ifdef __cplusplus
344 interface IWMPacketSize2;
345 #endif /* __cplusplus */
346 #endif
347 
348 #ifndef __IWMDRMReader_FWD_DEFINED__
349 #define __IWMDRMReader_FWD_DEFINED__
350 typedef interface IWMDRMReader IWMDRMReader;
351 #ifdef __cplusplus
352 interface IWMDRMReader;
353 #endif /* __cplusplus */
354 #endif
355 
356 #ifndef __IWMDRMReader2_FWD_DEFINED__
357 #define __IWMDRMReader2_FWD_DEFINED__
358 typedef interface IWMDRMReader2 IWMDRMReader2;
359 #ifdef __cplusplus
360 interface IWMDRMReader2;
361 #endif /* __cplusplus */
362 #endif
363 
364 #ifndef __IWMDRMReader3_FWD_DEFINED__
365 #define __IWMDRMReader3_FWD_DEFINED__
366 typedef interface IWMDRMReader3 IWMDRMReader3;
367 #ifdef __cplusplus
368 interface IWMDRMReader3;
369 #endif /* __cplusplus */
370 #endif
371 
372 #ifndef __IWMReaderAccelerator_FWD_DEFINED__
373 #define __IWMReaderAccelerator_FWD_DEFINED__
374 typedef interface IWMReaderAccelerator IWMReaderAccelerator;
375 #ifdef __cplusplus
376 interface IWMReaderAccelerator;
377 #endif /* __cplusplus */
378 #endif
379 
380 #ifndef __IWMReaderTimecode_FWD_DEFINED__
381 #define __IWMReaderTimecode_FWD_DEFINED__
382 typedef interface IWMReaderTimecode IWMReaderTimecode;
383 #ifdef __cplusplus
384 interface IWMReaderTimecode;
385 #endif /* __cplusplus */
386 #endif
387 
388 #ifndef __IWMReaderTypeNegotiation_FWD_DEFINED__
389 #define __IWMReaderTypeNegotiation_FWD_DEFINED__
390 typedef interface IWMReaderTypeNegotiation IWMReaderTypeNegotiation;
391 #ifdef __cplusplus
392 interface IWMReaderTypeNegotiation;
393 #endif /* __cplusplus */
394 #endif
395 
396 #ifndef __IWMLanguageList_FWD_DEFINED__
397 #define __IWMLanguageList_FWD_DEFINED__
398 typedef interface IWMLanguageList IWMLanguageList;
399 #ifdef __cplusplus
400 interface IWMLanguageList;
401 #endif /* __cplusplus */
402 #endif
403 
404 #ifndef __IWMReaderPlaylistBurn_FWD_DEFINED__
405 #define __IWMReaderPlaylistBurn_FWD_DEFINED__
406 typedef interface IWMReaderPlaylistBurn IWMReaderPlaylistBurn;
407 #ifdef __cplusplus
408 interface IWMReaderPlaylistBurn;
409 #endif /* __cplusplus */
410 #endif
411 
412 #ifndef __IWMPropertyVault_FWD_DEFINED__
413 #define __IWMPropertyVault_FWD_DEFINED__
414 typedef interface IWMPropertyVault IWMPropertyVault;
415 #ifdef __cplusplus
416 interface IWMPropertyVault;
417 #endif /* __cplusplus */
418 #endif
419 
420 #ifndef __IWMWriterPreprocess_FWD_DEFINED__
421 #define __IWMWriterPreprocess_FWD_DEFINED__
422 typedef interface IWMWriterPreprocess IWMWriterPreprocess;
423 #ifdef __cplusplus
424 interface IWMWriterPreprocess;
425 #endif /* __cplusplus */
426 #endif
427 
428 /* Headers for imported files */
429 
430 #include <oaidl.h>
431 #include <wmsbuffer.h>
432 #include <drmexternals.h>
433 
434 #ifdef __cplusplus
435 extern "C" {
436 #endif
437 
438 typedef struct _WMMediaType {
439     GUID majortype;
440     GUID subtype;
441     WINBOOL bFixedSizeSamples;
442     WINBOOL bTemporalCompression;
443     ULONG lSampleSize;
444     GUID formattype;
445     IUnknown *pUnk;
446     ULONG cbFormat;
447     BYTE *pbFormat;
448 } WM_MEDIA_TYPE;
449 typedef struct _WMWriterStatistics {
450     QWORD qwSampleCount;
451     QWORD qwByteCount;
452     QWORD qwDroppedSampleCount;
453     QWORD qwDroppedByteCount;
454     DWORD dwCurrentBitrate;
455     DWORD dwAverageBitrate;
456     DWORD dwExpectedBitrate;
457     DWORD dwCurrentSampleRate;
458     DWORD dwAverageSampleRate;
459     DWORD dwExpectedSampleRate;
460 } WM_WRITER_STATISTICS;
461 typedef struct _WMWriterStatisticsEx {
462     DWORD dwBitratePlusOverhead;
463     DWORD dwCurrentSampleDropRateInQueue;
464     DWORD dwCurrentSampleDropRateInCodec;
465     DWORD dwCurrentSampleDropRateInMultiplexer;
466     DWORD dwTotalSampleDropsInQueue;
467     DWORD dwTotalSampleDropsInCodec;
468     DWORD dwTotalSampleDropsInMultiplexer;
469 } WM_WRITER_STATISTICS_EX;
470 typedef struct _WMReaderStatistics {
471     DWORD cbSize;
472     DWORD dwBandwidth;
473     DWORD cPacketsReceived;
474     DWORD cPacketsRecovered;
475     DWORD cPacketsLost;
476     WORD wQuality;
477 } WM_READER_STATISTICS;
478 typedef struct _WMReaderClientInfo {
479     DWORD cbSize;
480     WCHAR *wszLang;
481     WCHAR *wszBrowserUserAgent;
482     WCHAR *wszBrowserWebPage;
483     QWORD qwReserved;
484     LPARAM *pReserved;
485     WCHAR *wszHostExe;
486     QWORD qwHostVersion;
487     WCHAR *wszPlayerUserAgent;
488 } WM_READER_CLIENTINFO;
489 typedef enum WMT_ATTR_DATATYPE {
490     WMT_TYPE_DWORD = 0,
491     WMT_TYPE_STRING = 1,
492     WMT_TYPE_BINARY = 2,
493     WMT_TYPE_BOOL = 3,
494     WMT_TYPE_QWORD = 4,
495     WMT_TYPE_WORD = 5,
496     WMT_TYPE_GUID = 6
497 } WMT_ATTR_DATATYPE;
498 typedef enum WMT_STATUS {
499     WMT_ERROR = 0,
500     WMT_OPENED = 1,
501     WMT_BUFFERING_START = 2,
502     WMT_BUFFERING_STOP = 3,
503     WMT_EOF = 4,
504     WMT_END_OF_FILE = 4,
505     WMT_END_OF_SEGMENT = 5,
506     WMT_END_OF_STREAMING = 6,
507     WMT_LOCATING = 7,
508     WMT_CONNECTING = 8,
509     WMT_NO_RIGHTS = 9,
510     WMT_MISSING_CODEC = 10,
511     WMT_STARTED = 11,
512     WMT_STOPPED = 12,
513     WMT_CLOSED = 13,
514     WMT_STRIDING = 14,
515     WMT_TIMER = 15,
516     WMT_INDEX_PROGRESS = 16,
517     WMT_SAVEAS_START = 17,
518     WMT_SAVEAS_STOP = 18,
519     WMT_NEW_SOURCEFLAGS = 19,
520     WMT_NEW_METADATA = 20,
521     WMT_BACKUPRESTORE_BEGIN = 21,
522     WMT_SOURCE_SWITCH = 22,
523     WMT_ACQUIRE_LICENSE = 23,
524     WMT_INDIVIDUALIZE = 24,
525     WMT_NEEDS_INDIVIDUALIZATION = 25,
526     WMT_NO_RIGHTS_EX = 26,
527     WMT_BACKUPRESTORE_END = 27,
528     WMT_BACKUPRESTORE_CONNECTING = 28,
529     WMT_BACKUPRESTORE_DISCONNECTING = 29,
530     WMT_ERROR_WITHURL = 30,
531     WMT_RESTRICTED_LICENSE = 31,
532     WMT_CLIENT_CONNECT = 32,
533     WMT_CLIENT_DISCONNECT = 33,
534     WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
535     WMT_RECONNECT_START = 35,
536     WMT_RECONNECT_END = 36,
537     WMT_CLIENT_CONNECT_EX = 37,
538     WMT_CLIENT_DISCONNECT_EX = 38,
539     WMT_SET_FEC_SPAN = 39,
540     WMT_PREROLL_READY = 40,
541     WMT_PREROLL_COMPLETE = 41,
542     WMT_CLIENT_PROPERTIES = 42,
543     WMT_LICENSEURL_SIGNATURE_STATE = 43,
544     WMT_INIT_PLAYLIST_BURN = 44,
545     WMT_TRANSCRYPTOR_INIT = 45,
546     WMT_TRANSCRYPTOR_SEEKED = 46,
547     WMT_TRANSCRYPTOR_READ = 47,
548     WMT_TRANSCRYPTOR_CLOSED = 48,
549     WMT_PROXIMITY_RESULT = 49,
550     WMT_PROXIMITY_COMPLETED = 50,
551     WMT_CONTENT_ENABLER = 51
552 } WMT_STATUS;
553 typedef enum WMT_STREAM_SELECTION {
554     WMT_OFF = 0,
555     WMT_CLEANPOINT_ONLY = 1,
556     WMT_ON = 2
557 } WMT_STREAM_SELECTION;
558 typedef enum WMT_VERSION {
559     WMT_VER_4_0 = 0x40000,
560     WMT_VER_7_0 = 0x70000,
561     WMT_VER_8_0 = 0x80000,
562     WMT_VER_9_0 = 0x90000
563 } WMT_VERSION;
564 typedef enum WMT_PLAY_MODE {
565     WMT_PLAY_MODE_AUTOSELECT = 0,
566     WMT_PLAY_MODE_LOCAL = 1,
567     WMT_PLAY_MODE_DOWNLOAD = 2,
568     WMT_PLAY_MODE_STREAMING = 3
569 } WMT_PLAY_MODE;
570 typedef enum tagWMT_OFFSET_FORMAT {
571     WMT_OFFSET_FORMAT_100NS = 0,
572     WMT_OFFSET_FORMAT_FRAME_NUMBERS = 1,
573     WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = 2,
574     WMT_OFFSET_FORMAT_TIMECODE = 3,
575     WMT_OFFSET_FORMAT_100NS_APPROXIMATE = 4
576 } WMT_OFFSET_FORMAT;
577 typedef enum WMT_CODEC_INFO_TYPE {
578     WMT_CODECINFO_AUDIO = 0,
579     WMT_CODECINFO_VIDEO = 1,
580     WMT_CODECINFO_UNKNOWN = 0xffffffff
581 } WMT_CODEC_INFO_TYPE;
582 typedef enum WMT_PROXY_SETTINGS {
583     WMT_PROXY_SETTING_NONE = 0,
584     WMT_PROXY_SETTING_MANUAL = 1,
585     WMT_PROXY_SETTING_AUTO = 2,
586     WMT_PROXY_SETTING_BROWSER = 3,
587     WMT_PROXY_SETTING_MAX = 4
588 } WMT_PROXY_SETTINGS;
589 typedef enum tagWMT_STORAGE_FORMAT {
590     WMT_Storage_Format_MP3 = 0,
591     WMT_Storage_Format_V1 = 1
592 } WMT_STORAGE_FORMAT;
593 typedef struct _WMStreamPrioritizationRecord {
594     WORD wStreamNumber;
595     WINBOOL fMandatory;
596 } WM_STREAM_PRIORITY_RECORD;
597 typedef struct _WM_PORT_NUMBER_RANGE {
598     WORD wPortBegin;
599     WORD wPortEnd;
600 } WM_PORT_NUMBER_RANGE;
601 typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
602 /*****************************************************************************
603  * IWMStatusCallback interface
604  */
605 #ifndef __IWMStatusCallback_INTERFACE_DEFINED__
606 #define __IWMStatusCallback_INTERFACE_DEFINED__
607 
608 DEFINE_GUID(IID_IWMStatusCallback, 0x6d7cdc70, 0x9888, 0x11d3, 0x8e,0xdc, 0x00,0xc0,0x4f,0x61,0x09,0xcf);
609 #if defined(__cplusplus) && !defined(CINTERFACE)
610 MIDL_INTERFACE("6d7cdc70-9888-11d3-8edc-00c04f6109cf")
611 IWMStatusCallback : public IUnknown
612 {
613     virtual HRESULT STDMETHODCALLTYPE OnStatus(
614         WMT_STATUS Status,
615         HRESULT hr,
616         WMT_ATTR_DATATYPE dwType,
617         BYTE *pValue,
618         void *pvContext) = 0;
619 
620 };
621 #ifdef __CRT_UUID_DECL
622 __CRT_UUID_DECL(IWMStatusCallback, 0x6d7cdc70, 0x9888, 0x11d3, 0x8e,0xdc, 0x00,0xc0,0x4f,0x61,0x09,0xcf)
623 #endif
624 #else
625 typedef struct IWMStatusCallbackVtbl {
626     BEGIN_INTERFACE
627 
628     /*** IUnknown methods ***/
629     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
630         IWMStatusCallback *This,
631         REFIID riid,
632         void **ppvObject);
633 
634     ULONG (STDMETHODCALLTYPE *AddRef)(
635         IWMStatusCallback *This);
636 
637     ULONG (STDMETHODCALLTYPE *Release)(
638         IWMStatusCallback *This);
639 
640     /*** IWMStatusCallback methods ***/
641     HRESULT (STDMETHODCALLTYPE *OnStatus)(
642         IWMStatusCallback *This,
643         WMT_STATUS Status,
644         HRESULT hr,
645         WMT_ATTR_DATATYPE dwType,
646         BYTE *pValue,
647         void *pvContext);
648 
649     END_INTERFACE
650 } IWMStatusCallbackVtbl;
651 
652 interface IWMStatusCallback {
653     CONST_VTBL IWMStatusCallbackVtbl* lpVtbl;
654 };
655 
656 #ifdef COBJMACROS
657 #ifndef WIDL_C_INLINE_WRAPPERS
658 /*** IUnknown methods ***/
659 #define IWMStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
660 #define IWMStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
661 #define IWMStatusCallback_Release(This) (This)->lpVtbl->Release(This)
662 /*** IWMStatusCallback methods ***/
663 #define IWMStatusCallback_OnStatus(This,Status,hr,dwType,pValue,pvContext) (This)->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext)
664 #else
665 /*** IUnknown methods ***/
666 static FORCEINLINE HRESULT IWMStatusCallback_QueryInterface(IWMStatusCallback* This,REFIID riid,void **ppvObject) {
667     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
668 }
669 static FORCEINLINE ULONG IWMStatusCallback_AddRef(IWMStatusCallback* This) {
670     return This->lpVtbl->AddRef(This);
671 }
672 static FORCEINLINE ULONG IWMStatusCallback_Release(IWMStatusCallback* This) {
673     return This->lpVtbl->Release(This);
674 }
675 /*** IWMStatusCallback methods ***/
676 static FORCEINLINE HRESULT IWMStatusCallback_OnStatus(IWMStatusCallback* This,WMT_STATUS Status,HRESULT hr,WMT_ATTR_DATATYPE dwType,BYTE *pValue,void *pvContext) {
677     return This->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext);
678 }
679 #endif
680 #endif
681 
682 #endif
683 
684 
685 #endif  /* __IWMStatusCallback_INTERFACE_DEFINED__ */
686 
687 /*****************************************************************************
688  * IWMReaderCallback interface
689  */
690 #ifndef __IWMReaderCallback_INTERFACE_DEFINED__
691 #define __IWMReaderCallback_INTERFACE_DEFINED__
692 
693 DEFINE_GUID(IID_IWMReaderCallback, 0x96406bd8, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
694 #if defined(__cplusplus) && !defined(CINTERFACE)
695 MIDL_INTERFACE("96406bd8-2b2b-11d3-b36b-00c04f6108ff")
696 IWMReaderCallback : public IWMStatusCallback
697 {
698     virtual HRESULT STDMETHODCALLTYPE OnSample(
699         DWORD dwOutputNum,
700         QWORD cnsSampleTime,
701         QWORD cnsSampleDuration,
702         DWORD dwFlags,
703         INSSBuffer *pSample,
704         void *pvContext) = 0;
705 
706 };
707 #ifdef __CRT_UUID_DECL
708 __CRT_UUID_DECL(IWMReaderCallback, 0x96406bd8, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
709 #endif
710 #else
711 typedef struct IWMReaderCallbackVtbl {
712     BEGIN_INTERFACE
713 
714     /*** IUnknown methods ***/
715     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
716         IWMReaderCallback *This,
717         REFIID riid,
718         void **ppvObject);
719 
720     ULONG (STDMETHODCALLTYPE *AddRef)(
721         IWMReaderCallback *This);
722 
723     ULONG (STDMETHODCALLTYPE *Release)(
724         IWMReaderCallback *This);
725 
726     /*** IWMStatusCallback methods ***/
727     HRESULT (STDMETHODCALLTYPE *OnStatus)(
728         IWMReaderCallback *This,
729         WMT_STATUS Status,
730         HRESULT hr,
731         WMT_ATTR_DATATYPE dwType,
732         BYTE *pValue,
733         void *pvContext);
734 
735     /*** IWMReaderCallback methods ***/
736     HRESULT (STDMETHODCALLTYPE *OnSample)(
737         IWMReaderCallback *This,
738         DWORD dwOutputNum,
739         QWORD cnsSampleTime,
740         QWORD cnsSampleDuration,
741         DWORD dwFlags,
742         INSSBuffer *pSample,
743         void *pvContext);
744 
745     END_INTERFACE
746 } IWMReaderCallbackVtbl;
747 
748 interface IWMReaderCallback {
749     CONST_VTBL IWMReaderCallbackVtbl* lpVtbl;
750 };
751 
752 #ifdef COBJMACROS
753 #ifndef WIDL_C_INLINE_WRAPPERS
754 /*** IUnknown methods ***/
755 #define IWMReaderCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
756 #define IWMReaderCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
757 #define IWMReaderCallback_Release(This) (This)->lpVtbl->Release(This)
758 /*** IWMStatusCallback methods ***/
759 #define IWMReaderCallback_OnStatus(This,Status,hr,dwType,pValue,pvContext) (This)->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext)
760 /*** IWMReaderCallback methods ***/
761 #define IWMReaderCallback_OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext) (This)->lpVtbl->OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext)
762 #else
763 /*** IUnknown methods ***/
764 static FORCEINLINE HRESULT IWMReaderCallback_QueryInterface(IWMReaderCallback* This,REFIID riid,void **ppvObject) {
765     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
766 }
767 static FORCEINLINE ULONG IWMReaderCallback_AddRef(IWMReaderCallback* This) {
768     return This->lpVtbl->AddRef(This);
769 }
770 static FORCEINLINE ULONG IWMReaderCallback_Release(IWMReaderCallback* This) {
771     return This->lpVtbl->Release(This);
772 }
773 /*** IWMStatusCallback methods ***/
774 static FORCEINLINE HRESULT IWMReaderCallback_OnStatus(IWMReaderCallback* This,WMT_STATUS Status,HRESULT hr,WMT_ATTR_DATATYPE dwType,BYTE *pValue,void *pvContext) {
775     return This->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext);
776 }
777 /*** IWMReaderCallback methods ***/
778 static FORCEINLINE HRESULT IWMReaderCallback_OnSample(IWMReaderCallback* This,DWORD dwOutputNum,QWORD cnsSampleTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample,void *pvContext) {
779     return This->lpVtbl->OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext);
780 }
781 #endif
782 #endif
783 
784 #endif
785 
786 
787 #endif  /* __IWMReaderCallback_INTERFACE_DEFINED__ */
788 
789 /*****************************************************************************
790  * IWMStreamList interface
791  */
792 #ifndef __IWMStreamList_INTERFACE_DEFINED__
793 #define __IWMStreamList_INTERFACE_DEFINED__
794 
795 DEFINE_GUID(IID_IWMStreamList, 0x96406bdd, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
796 #if defined(__cplusplus) && !defined(CINTERFACE)
797 MIDL_INTERFACE("96406bdd-2b2b-11d3-b36b-00c04f6108ff")
798 IWMStreamList : public IUnknown
799 {
800     virtual HRESULT STDMETHODCALLTYPE GetStreams(
801         WORD *pwStreamNumArray,
802         WORD *pcStreams) = 0;
803 
804     virtual HRESULT STDMETHODCALLTYPE AddStream(
805         WORD wStreamNum) = 0;
806 
807     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
808         WORD wStreamNum) = 0;
809 
810 };
811 #ifdef __CRT_UUID_DECL
812 __CRT_UUID_DECL(IWMStreamList, 0x96406bdd, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
813 #endif
814 #else
815 typedef struct IWMStreamListVtbl {
816     BEGIN_INTERFACE
817 
818     /*** IUnknown methods ***/
819     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
820         IWMStreamList *This,
821         REFIID riid,
822         void **ppvObject);
823 
824     ULONG (STDMETHODCALLTYPE *AddRef)(
825         IWMStreamList *This);
826 
827     ULONG (STDMETHODCALLTYPE *Release)(
828         IWMStreamList *This);
829 
830     /*** IWMStreamList methods ***/
831     HRESULT (STDMETHODCALLTYPE *GetStreams)(
832         IWMStreamList *This,
833         WORD *pwStreamNumArray,
834         WORD *pcStreams);
835 
836     HRESULT (STDMETHODCALLTYPE *AddStream)(
837         IWMStreamList *This,
838         WORD wStreamNum);
839 
840     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
841         IWMStreamList *This,
842         WORD wStreamNum);
843 
844     END_INTERFACE
845 } IWMStreamListVtbl;
846 
847 interface IWMStreamList {
848     CONST_VTBL IWMStreamListVtbl* lpVtbl;
849 };
850 
851 #ifdef COBJMACROS
852 #ifndef WIDL_C_INLINE_WRAPPERS
853 /*** IUnknown methods ***/
854 #define IWMStreamList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
855 #define IWMStreamList_AddRef(This) (This)->lpVtbl->AddRef(This)
856 #define IWMStreamList_Release(This) (This)->lpVtbl->Release(This)
857 /*** IWMStreamList methods ***/
858 #define IWMStreamList_GetStreams(This,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams)
859 #define IWMStreamList_AddStream(This,wStreamNum) (This)->lpVtbl->AddStream(This,wStreamNum)
860 #define IWMStreamList_RemoveStream(This,wStreamNum) (This)->lpVtbl->RemoveStream(This,wStreamNum)
861 #else
862 /*** IUnknown methods ***/
863 static FORCEINLINE HRESULT IWMStreamList_QueryInterface(IWMStreamList* This,REFIID riid,void **ppvObject) {
864     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
865 }
866 static FORCEINLINE ULONG IWMStreamList_AddRef(IWMStreamList* This) {
867     return This->lpVtbl->AddRef(This);
868 }
869 static FORCEINLINE ULONG IWMStreamList_Release(IWMStreamList* This) {
870     return This->lpVtbl->Release(This);
871 }
872 /*** IWMStreamList methods ***/
873 static FORCEINLINE HRESULT IWMStreamList_GetStreams(IWMStreamList* This,WORD *pwStreamNumArray,WORD *pcStreams) {
874     return This->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams);
875 }
876 static FORCEINLINE HRESULT IWMStreamList_AddStream(IWMStreamList* This,WORD wStreamNum) {
877     return This->lpVtbl->AddStream(This,wStreamNum);
878 }
879 static FORCEINLINE HRESULT IWMStreamList_RemoveStream(IWMStreamList* This,WORD wStreamNum) {
880     return This->lpVtbl->RemoveStream(This,wStreamNum);
881 }
882 #endif
883 #endif
884 
885 #endif
886 
887 
888 #endif  /* __IWMStreamList_INTERFACE_DEFINED__ */
889 
890 /*****************************************************************************
891  * IWMMutualExclusion interface
892  */
893 #ifndef __IWMMutualExclusion_INTERFACE_DEFINED__
894 #define __IWMMutualExclusion_INTERFACE_DEFINED__
895 
896 DEFINE_GUID(IID_IWMMutualExclusion, 0x96406bde, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
897 #if defined(__cplusplus) && !defined(CINTERFACE)
898 MIDL_INTERFACE("96406bde-2b2b-11d3-b36b-00c04f6108ff")
899 IWMMutualExclusion : public IWMStreamList
900 {
901     virtual HRESULT STDMETHODCALLTYPE GetType(
902         GUID *pguidType) = 0;
903 
904     virtual HRESULT STDMETHODCALLTYPE SetType(
905         REFGUID guidType) = 0;
906 
907 };
908 #ifdef __CRT_UUID_DECL
909 __CRT_UUID_DECL(IWMMutualExclusion, 0x96406bde, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
910 #endif
911 #else
912 typedef struct IWMMutualExclusionVtbl {
913     BEGIN_INTERFACE
914 
915     /*** IUnknown methods ***/
916     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
917         IWMMutualExclusion *This,
918         REFIID riid,
919         void **ppvObject);
920 
921     ULONG (STDMETHODCALLTYPE *AddRef)(
922         IWMMutualExclusion *This);
923 
924     ULONG (STDMETHODCALLTYPE *Release)(
925         IWMMutualExclusion *This);
926 
927     /*** IWMStreamList methods ***/
928     HRESULT (STDMETHODCALLTYPE *GetStreams)(
929         IWMMutualExclusion *This,
930         WORD *pwStreamNumArray,
931         WORD *pcStreams);
932 
933     HRESULT (STDMETHODCALLTYPE *AddStream)(
934         IWMMutualExclusion *This,
935         WORD wStreamNum);
936 
937     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
938         IWMMutualExclusion *This,
939         WORD wStreamNum);
940 
941     /*** IWMMutualExclusion methods ***/
942     HRESULT (STDMETHODCALLTYPE *GetType)(
943         IWMMutualExclusion *This,
944         GUID *pguidType);
945 
946     HRESULT (STDMETHODCALLTYPE *SetType)(
947         IWMMutualExclusion *This,
948         REFGUID guidType);
949 
950     END_INTERFACE
951 } IWMMutualExclusionVtbl;
952 
953 interface IWMMutualExclusion {
954     CONST_VTBL IWMMutualExclusionVtbl* lpVtbl;
955 };
956 
957 #ifdef COBJMACROS
958 #ifndef WIDL_C_INLINE_WRAPPERS
959 /*** IUnknown methods ***/
960 #define IWMMutualExclusion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
961 #define IWMMutualExclusion_AddRef(This) (This)->lpVtbl->AddRef(This)
962 #define IWMMutualExclusion_Release(This) (This)->lpVtbl->Release(This)
963 /*** IWMStreamList methods ***/
964 #define IWMMutualExclusion_GetStreams(This,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams)
965 #define IWMMutualExclusion_AddStream(This,wStreamNum) (This)->lpVtbl->AddStream(This,wStreamNum)
966 #define IWMMutualExclusion_RemoveStream(This,wStreamNum) (This)->lpVtbl->RemoveStream(This,wStreamNum)
967 /*** IWMMutualExclusion methods ***/
968 #define IWMMutualExclusion_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
969 #define IWMMutualExclusion_SetType(This,guidType) (This)->lpVtbl->SetType(This,guidType)
970 #else
971 /*** IUnknown methods ***/
972 static FORCEINLINE HRESULT IWMMutualExclusion_QueryInterface(IWMMutualExclusion* This,REFIID riid,void **ppvObject) {
973     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
974 }
975 static FORCEINLINE ULONG IWMMutualExclusion_AddRef(IWMMutualExclusion* This) {
976     return This->lpVtbl->AddRef(This);
977 }
978 static FORCEINLINE ULONG IWMMutualExclusion_Release(IWMMutualExclusion* This) {
979     return This->lpVtbl->Release(This);
980 }
981 /*** IWMStreamList methods ***/
982 static FORCEINLINE HRESULT IWMMutualExclusion_GetStreams(IWMMutualExclusion* This,WORD *pwStreamNumArray,WORD *pcStreams) {
983     return This->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams);
984 }
985 static FORCEINLINE HRESULT IWMMutualExclusion_AddStream(IWMMutualExclusion* This,WORD wStreamNum) {
986     return This->lpVtbl->AddStream(This,wStreamNum);
987 }
988 static FORCEINLINE HRESULT IWMMutualExclusion_RemoveStream(IWMMutualExclusion* This,WORD wStreamNum) {
989     return This->lpVtbl->RemoveStream(This,wStreamNum);
990 }
991 /*** IWMMutualExclusion methods ***/
992 static FORCEINLINE HRESULT IWMMutualExclusion_GetType(IWMMutualExclusion* This,GUID *pguidType) {
993     return This->lpVtbl->GetType(This,pguidType);
994 }
995 static FORCEINLINE HRESULT IWMMutualExclusion_SetType(IWMMutualExclusion* This,REFGUID guidType) {
996     return This->lpVtbl->SetType(This,guidType);
997 }
998 #endif
999 #endif
1000 
1001 #endif
1002 
1003 
1004 #endif  /* __IWMMutualExclusion_INTERFACE_DEFINED__ */
1005 
1006 /*****************************************************************************
1007  * IWMBandwidthSharing interface
1008  */
1009 #ifndef __IWMBandwidthSharing_INTERFACE_DEFINED__
1010 #define __IWMBandwidthSharing_INTERFACE_DEFINED__
1011 
1012 DEFINE_GUID(IID_IWMBandwidthSharing, 0xad694af1, 0xf8d9, 0x42f8, 0xbc,0x47, 0x70,0x31,0x1b,0x0c,0x4f,0x9e);
1013 #if defined(__cplusplus) && !defined(CINTERFACE)
1014 MIDL_INTERFACE("ad694af1-f8d9-42f8-bc47-70311b0c4f9e")
1015 IWMBandwidthSharing : public IWMStreamList
1016 {
1017     virtual HRESULT STDMETHODCALLTYPE GetType(
1018         GUID *guid) = 0;
1019 
1020     virtual HRESULT STDMETHODCALLTYPE SetType(
1021         REFGUID guid) = 0;
1022 
1023     virtual HRESULT STDMETHODCALLTYPE GetBandwidth(
1024         DWORD *bitrate,
1025         DWORD *buffer) = 0;
1026 
1027     virtual HRESULT STDMETHODCALLTYPE SetBandwidth(
1028         DWORD bitrate,
1029         DWORD buffer) = 0;
1030 
1031 };
1032 #ifdef __CRT_UUID_DECL
1033 __CRT_UUID_DECL(IWMBandwidthSharing, 0xad694af1, 0xf8d9, 0x42f8, 0xbc,0x47, 0x70,0x31,0x1b,0x0c,0x4f,0x9e)
1034 #endif
1035 #else
1036 typedef struct IWMBandwidthSharingVtbl {
1037     BEGIN_INTERFACE
1038 
1039     /*** IUnknown methods ***/
1040     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1041         IWMBandwidthSharing *This,
1042         REFIID riid,
1043         void **ppvObject);
1044 
1045     ULONG (STDMETHODCALLTYPE *AddRef)(
1046         IWMBandwidthSharing *This);
1047 
1048     ULONG (STDMETHODCALLTYPE *Release)(
1049         IWMBandwidthSharing *This);
1050 
1051     /*** IWMStreamList methods ***/
1052     HRESULT (STDMETHODCALLTYPE *GetStreams)(
1053         IWMBandwidthSharing *This,
1054         WORD *pwStreamNumArray,
1055         WORD *pcStreams);
1056 
1057     HRESULT (STDMETHODCALLTYPE *AddStream)(
1058         IWMBandwidthSharing *This,
1059         WORD wStreamNum);
1060 
1061     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
1062         IWMBandwidthSharing *This,
1063         WORD wStreamNum);
1064 
1065     /*** IWMBandwidthSharing methods ***/
1066     HRESULT (STDMETHODCALLTYPE *GetType)(
1067         IWMBandwidthSharing *This,
1068         GUID *guid);
1069 
1070     HRESULT (STDMETHODCALLTYPE *SetType)(
1071         IWMBandwidthSharing *This,
1072         REFGUID guid);
1073 
1074     HRESULT (STDMETHODCALLTYPE *GetBandwidth)(
1075         IWMBandwidthSharing *This,
1076         DWORD *bitrate,
1077         DWORD *buffer);
1078 
1079     HRESULT (STDMETHODCALLTYPE *SetBandwidth)(
1080         IWMBandwidthSharing *This,
1081         DWORD bitrate,
1082         DWORD buffer);
1083 
1084     END_INTERFACE
1085 } IWMBandwidthSharingVtbl;
1086 
1087 interface IWMBandwidthSharing {
1088     CONST_VTBL IWMBandwidthSharingVtbl* lpVtbl;
1089 };
1090 
1091 #ifdef COBJMACROS
1092 #ifndef WIDL_C_INLINE_WRAPPERS
1093 /*** IUnknown methods ***/
1094 #define IWMBandwidthSharing_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1095 #define IWMBandwidthSharing_AddRef(This) (This)->lpVtbl->AddRef(This)
1096 #define IWMBandwidthSharing_Release(This) (This)->lpVtbl->Release(This)
1097 /*** IWMStreamList methods ***/
1098 #define IWMBandwidthSharing_GetStreams(This,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams)
1099 #define IWMBandwidthSharing_AddStream(This,wStreamNum) (This)->lpVtbl->AddStream(This,wStreamNum)
1100 #define IWMBandwidthSharing_RemoveStream(This,wStreamNum) (This)->lpVtbl->RemoveStream(This,wStreamNum)
1101 /*** IWMBandwidthSharing methods ***/
1102 #define IWMBandwidthSharing_GetType(This,guid) (This)->lpVtbl->GetType(This,guid)
1103 #define IWMBandwidthSharing_SetType(This,guid) (This)->lpVtbl->SetType(This,guid)
1104 #define IWMBandwidthSharing_GetBandwidth(This,bitrate,buffer) (This)->lpVtbl->GetBandwidth(This,bitrate,buffer)
1105 #define IWMBandwidthSharing_SetBandwidth(This,bitrate,buffer) (This)->lpVtbl->SetBandwidth(This,bitrate,buffer)
1106 #else
1107 /*** IUnknown methods ***/
1108 static FORCEINLINE HRESULT IWMBandwidthSharing_QueryInterface(IWMBandwidthSharing* This,REFIID riid,void **ppvObject) {
1109     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1110 }
1111 static FORCEINLINE ULONG IWMBandwidthSharing_AddRef(IWMBandwidthSharing* This) {
1112     return This->lpVtbl->AddRef(This);
1113 }
1114 static FORCEINLINE ULONG IWMBandwidthSharing_Release(IWMBandwidthSharing* This) {
1115     return This->lpVtbl->Release(This);
1116 }
1117 /*** IWMStreamList methods ***/
1118 static FORCEINLINE HRESULT IWMBandwidthSharing_GetStreams(IWMBandwidthSharing* This,WORD *pwStreamNumArray,WORD *pcStreams) {
1119     return This->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams);
1120 }
1121 static FORCEINLINE HRESULT IWMBandwidthSharing_AddStream(IWMBandwidthSharing* This,WORD wStreamNum) {
1122     return This->lpVtbl->AddStream(This,wStreamNum);
1123 }
1124 static FORCEINLINE HRESULT IWMBandwidthSharing_RemoveStream(IWMBandwidthSharing* This,WORD wStreamNum) {
1125     return This->lpVtbl->RemoveStream(This,wStreamNum);
1126 }
1127 /*** IWMBandwidthSharing methods ***/
1128 static FORCEINLINE HRESULT IWMBandwidthSharing_GetType(IWMBandwidthSharing* This,GUID *guid) {
1129     return This->lpVtbl->GetType(This,guid);
1130 }
1131 static FORCEINLINE HRESULT IWMBandwidthSharing_SetType(IWMBandwidthSharing* This,REFGUID guid) {
1132     return This->lpVtbl->SetType(This,guid);
1133 }
1134 static FORCEINLINE HRESULT IWMBandwidthSharing_GetBandwidth(IWMBandwidthSharing* This,DWORD *bitrate,DWORD *buffer) {
1135     return This->lpVtbl->GetBandwidth(This,bitrate,buffer);
1136 }
1137 static FORCEINLINE HRESULT IWMBandwidthSharing_SetBandwidth(IWMBandwidthSharing* This,DWORD bitrate,DWORD buffer) {
1138     return This->lpVtbl->SetBandwidth(This,bitrate,buffer);
1139 }
1140 #endif
1141 #endif
1142 
1143 #endif
1144 
1145 
1146 #endif  /* __IWMBandwidthSharing_INTERFACE_DEFINED__ */
1147 
1148 /*****************************************************************************
1149  * IWMStreamPrioritization interface
1150  */
1151 #ifndef __IWMStreamPrioritization_INTERFACE_DEFINED__
1152 #define __IWMStreamPrioritization_INTERFACE_DEFINED__
1153 
1154 DEFINE_GUID(IID_IWMStreamPrioritization, 0x8c1c6090, 0xf9a8, 0x4748, 0x8e,0xc3, 0xdd,0x11,0x08,0xba,0x1e,0x77);
1155 #if defined(__cplusplus) && !defined(CINTERFACE)
1156 MIDL_INTERFACE("8c1c6090-f9a8-4748-8ec3-dd1108ba1e77")
1157 IWMStreamPrioritization : public IUnknown
1158 {
1159     virtual HRESULT STDMETHODCALLTYPE GetPriorityRecords(
1160         WM_STREAM_PRIORITY_RECORD *array,
1161         WORD *records) = 0;
1162 
1163     virtual HRESULT STDMETHODCALLTYPE SetPriorityRecords(
1164         WM_STREAM_PRIORITY_RECORD *array,
1165         WORD records) = 0;
1166 
1167 };
1168 #ifdef __CRT_UUID_DECL
1169 __CRT_UUID_DECL(IWMStreamPrioritization, 0x8c1c6090, 0xf9a8, 0x4748, 0x8e,0xc3, 0xdd,0x11,0x08,0xba,0x1e,0x77)
1170 #endif
1171 #else
1172 typedef struct IWMStreamPrioritizationVtbl {
1173     BEGIN_INTERFACE
1174 
1175     /*** IUnknown methods ***/
1176     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1177         IWMStreamPrioritization *This,
1178         REFIID riid,
1179         void **ppvObject);
1180 
1181     ULONG (STDMETHODCALLTYPE *AddRef)(
1182         IWMStreamPrioritization *This);
1183 
1184     ULONG (STDMETHODCALLTYPE *Release)(
1185         IWMStreamPrioritization *This);
1186 
1187     /*** IWMStreamPrioritization methods ***/
1188     HRESULT (STDMETHODCALLTYPE *GetPriorityRecords)(
1189         IWMStreamPrioritization *This,
1190         WM_STREAM_PRIORITY_RECORD *array,
1191         WORD *records);
1192 
1193     HRESULT (STDMETHODCALLTYPE *SetPriorityRecords)(
1194         IWMStreamPrioritization *This,
1195         WM_STREAM_PRIORITY_RECORD *array,
1196         WORD records);
1197 
1198     END_INTERFACE
1199 } IWMStreamPrioritizationVtbl;
1200 
1201 interface IWMStreamPrioritization {
1202     CONST_VTBL IWMStreamPrioritizationVtbl* lpVtbl;
1203 };
1204 
1205 #ifdef COBJMACROS
1206 #ifndef WIDL_C_INLINE_WRAPPERS
1207 /*** IUnknown methods ***/
1208 #define IWMStreamPrioritization_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1209 #define IWMStreamPrioritization_AddRef(This) (This)->lpVtbl->AddRef(This)
1210 #define IWMStreamPrioritization_Release(This) (This)->lpVtbl->Release(This)
1211 /*** IWMStreamPrioritization methods ***/
1212 #define IWMStreamPrioritization_GetPriorityRecords(This,array,records) (This)->lpVtbl->GetPriorityRecords(This,array,records)
1213 #define IWMStreamPrioritization_SetPriorityRecords(This,array,records) (This)->lpVtbl->SetPriorityRecords(This,array,records)
1214 #else
1215 /*** IUnknown methods ***/
1216 static FORCEINLINE HRESULT IWMStreamPrioritization_QueryInterface(IWMStreamPrioritization* This,REFIID riid,void **ppvObject) {
1217     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1218 }
1219 static FORCEINLINE ULONG IWMStreamPrioritization_AddRef(IWMStreamPrioritization* This) {
1220     return This->lpVtbl->AddRef(This);
1221 }
1222 static FORCEINLINE ULONG IWMStreamPrioritization_Release(IWMStreamPrioritization* This) {
1223     return This->lpVtbl->Release(This);
1224 }
1225 /*** IWMStreamPrioritization methods ***/
1226 static FORCEINLINE HRESULT IWMStreamPrioritization_GetPriorityRecords(IWMStreamPrioritization* This,WM_STREAM_PRIORITY_RECORD *array,WORD *records) {
1227     return This->lpVtbl->GetPriorityRecords(This,array,records);
1228 }
1229 static FORCEINLINE HRESULT IWMStreamPrioritization_SetPriorityRecords(IWMStreamPrioritization* This,WM_STREAM_PRIORITY_RECORD *array,WORD records) {
1230     return This->lpVtbl->SetPriorityRecords(This,array,records);
1231 }
1232 #endif
1233 #endif
1234 
1235 #endif
1236 
1237 
1238 #endif  /* __IWMStreamPrioritization_INTERFACE_DEFINED__ */
1239 
1240 /*****************************************************************************
1241  * IWMStreamConfig interface
1242  */
1243 #ifndef __IWMStreamConfig_INTERFACE_DEFINED__
1244 #define __IWMStreamConfig_INTERFACE_DEFINED__
1245 
1246 DEFINE_GUID(IID_IWMStreamConfig, 0x96406bdc, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
1247 #if defined(__cplusplus) && !defined(CINTERFACE)
1248 MIDL_INTERFACE("96406bdc-2b2b-11d3-b36b-00c04f6108ff")
1249 IWMStreamConfig : public IUnknown
1250 {
1251     virtual HRESULT STDMETHODCALLTYPE GetStreamType(
1252         GUID *pguidStreamType) = 0;
1253 
1254     virtual HRESULT STDMETHODCALLTYPE GetStreamNumber(
1255         WORD *pwStreamNum) = 0;
1256 
1257     virtual HRESULT STDMETHODCALLTYPE SetStreamNumber(
1258         WORD wStreamNum) = 0;
1259 
1260     virtual HRESULT STDMETHODCALLTYPE GetStreamName(
1261         WCHAR *pwszStreamName,
1262         WORD *pcchStreamName) = 0;
1263 
1264     virtual HRESULT STDMETHODCALLTYPE SetStreamName(
1265         LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName) = 0;
1266 
1267     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
1268         WCHAR *pwszInputName,
1269         WORD *pcchInputName) = 0;
1270 
1271     virtual HRESULT STDMETHODCALLTYPE SetConnectionName(
1272         LPCWSTR_WMSDK_TYPE_SAFE pwszInputName) = 0;
1273 
1274     virtual HRESULT STDMETHODCALLTYPE GetBitrate(
1275         DWORD *pdwBitrate) = 0;
1276 
1277     virtual HRESULT STDMETHODCALLTYPE SetBitrate(
1278         DWORD pdwBitrate) = 0;
1279 
1280     virtual HRESULT STDMETHODCALLTYPE GetBufferWindow(
1281         DWORD *pmsBufferWindow) = 0;
1282 
1283     virtual HRESULT STDMETHODCALLTYPE SetBufferWindow(
1284         DWORD msBufferWindow) = 0;
1285 
1286 };
1287 #ifdef __CRT_UUID_DECL
1288 __CRT_UUID_DECL(IWMStreamConfig, 0x96406bdc, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
1289 #endif
1290 #else
1291 typedef struct IWMStreamConfigVtbl {
1292     BEGIN_INTERFACE
1293 
1294     /*** IUnknown methods ***/
1295     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1296         IWMStreamConfig *This,
1297         REFIID riid,
1298         void **ppvObject);
1299 
1300     ULONG (STDMETHODCALLTYPE *AddRef)(
1301         IWMStreamConfig *This);
1302 
1303     ULONG (STDMETHODCALLTYPE *Release)(
1304         IWMStreamConfig *This);
1305 
1306     /*** IWMStreamConfig methods ***/
1307     HRESULT (STDMETHODCALLTYPE *GetStreamType)(
1308         IWMStreamConfig *This,
1309         GUID *pguidStreamType);
1310 
1311     HRESULT (STDMETHODCALLTYPE *GetStreamNumber)(
1312         IWMStreamConfig *This,
1313         WORD *pwStreamNum);
1314 
1315     HRESULT (STDMETHODCALLTYPE *SetStreamNumber)(
1316         IWMStreamConfig *This,
1317         WORD wStreamNum);
1318 
1319     HRESULT (STDMETHODCALLTYPE *GetStreamName)(
1320         IWMStreamConfig *This,
1321         WCHAR *pwszStreamName,
1322         WORD *pcchStreamName);
1323 
1324     HRESULT (STDMETHODCALLTYPE *SetStreamName)(
1325         IWMStreamConfig *This,
1326         LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
1327 
1328     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
1329         IWMStreamConfig *This,
1330         WCHAR *pwszInputName,
1331         WORD *pcchInputName);
1332 
1333     HRESULT (STDMETHODCALLTYPE *SetConnectionName)(
1334         IWMStreamConfig *This,
1335         LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
1336 
1337     HRESULT (STDMETHODCALLTYPE *GetBitrate)(
1338         IWMStreamConfig *This,
1339         DWORD *pdwBitrate);
1340 
1341     HRESULT (STDMETHODCALLTYPE *SetBitrate)(
1342         IWMStreamConfig *This,
1343         DWORD pdwBitrate);
1344 
1345     HRESULT (STDMETHODCALLTYPE *GetBufferWindow)(
1346         IWMStreamConfig *This,
1347         DWORD *pmsBufferWindow);
1348 
1349     HRESULT (STDMETHODCALLTYPE *SetBufferWindow)(
1350         IWMStreamConfig *This,
1351         DWORD msBufferWindow);
1352 
1353     END_INTERFACE
1354 } IWMStreamConfigVtbl;
1355 
1356 interface IWMStreamConfig {
1357     CONST_VTBL IWMStreamConfigVtbl* lpVtbl;
1358 };
1359 
1360 #ifdef COBJMACROS
1361 #ifndef WIDL_C_INLINE_WRAPPERS
1362 /*** IUnknown methods ***/
1363 #define IWMStreamConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1364 #define IWMStreamConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
1365 #define IWMStreamConfig_Release(This) (This)->lpVtbl->Release(This)
1366 /*** IWMStreamConfig methods ***/
1367 #define IWMStreamConfig_GetStreamType(This,pguidStreamType) (This)->lpVtbl->GetStreamType(This,pguidStreamType)
1368 #define IWMStreamConfig_GetStreamNumber(This,pwStreamNum) (This)->lpVtbl->GetStreamNumber(This,pwStreamNum)
1369 #define IWMStreamConfig_SetStreamNumber(This,wStreamNum) (This)->lpVtbl->SetStreamNumber(This,wStreamNum)
1370 #define IWMStreamConfig_GetStreamName(This,pwszStreamName,pcchStreamName) (This)->lpVtbl->GetStreamName(This,pwszStreamName,pcchStreamName)
1371 #define IWMStreamConfig_SetStreamName(This,pwszStreamName) (This)->lpVtbl->SetStreamName(This,pwszStreamName)
1372 #define IWMStreamConfig_GetConnectionName(This,pwszInputName,pcchInputName) (This)->lpVtbl->GetConnectionName(This,pwszInputName,pcchInputName)
1373 #define IWMStreamConfig_SetConnectionName(This,pwszInputName) (This)->lpVtbl->SetConnectionName(This,pwszInputName)
1374 #define IWMStreamConfig_GetBitrate(This,pdwBitrate) (This)->lpVtbl->GetBitrate(This,pdwBitrate)
1375 #define IWMStreamConfig_SetBitrate(This,pdwBitrate) (This)->lpVtbl->SetBitrate(This,pdwBitrate)
1376 #define IWMStreamConfig_GetBufferWindow(This,pmsBufferWindow) (This)->lpVtbl->GetBufferWindow(This,pmsBufferWindow)
1377 #define IWMStreamConfig_SetBufferWindow(This,msBufferWindow) (This)->lpVtbl->SetBufferWindow(This,msBufferWindow)
1378 #else
1379 /*** IUnknown methods ***/
1380 static FORCEINLINE HRESULT IWMStreamConfig_QueryInterface(IWMStreamConfig* This,REFIID riid,void **ppvObject) {
1381     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1382 }
1383 static FORCEINLINE ULONG IWMStreamConfig_AddRef(IWMStreamConfig* This) {
1384     return This->lpVtbl->AddRef(This);
1385 }
1386 static FORCEINLINE ULONG IWMStreamConfig_Release(IWMStreamConfig* This) {
1387     return This->lpVtbl->Release(This);
1388 }
1389 /*** IWMStreamConfig methods ***/
1390 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamType(IWMStreamConfig* This,GUID *pguidStreamType) {
1391     return This->lpVtbl->GetStreamType(This,pguidStreamType);
1392 }
1393 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamNumber(IWMStreamConfig* This,WORD *pwStreamNum) {
1394     return This->lpVtbl->GetStreamNumber(This,pwStreamNum);
1395 }
1396 static FORCEINLINE HRESULT IWMStreamConfig_SetStreamNumber(IWMStreamConfig* This,WORD wStreamNum) {
1397     return This->lpVtbl->SetStreamNumber(This,wStreamNum);
1398 }
1399 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamName(IWMStreamConfig* This,WCHAR *pwszStreamName,WORD *pcchStreamName) {
1400     return This->lpVtbl->GetStreamName(This,pwszStreamName,pcchStreamName);
1401 }
1402 static FORCEINLINE HRESULT IWMStreamConfig_SetStreamName(IWMStreamConfig* This,LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName) {
1403     return This->lpVtbl->SetStreamName(This,pwszStreamName);
1404 }
1405 static FORCEINLINE HRESULT IWMStreamConfig_GetConnectionName(IWMStreamConfig* This,WCHAR *pwszInputName,WORD *pcchInputName) {
1406     return This->lpVtbl->GetConnectionName(This,pwszInputName,pcchInputName);
1407 }
1408 static FORCEINLINE HRESULT IWMStreamConfig_SetConnectionName(IWMStreamConfig* This,LPCWSTR_WMSDK_TYPE_SAFE pwszInputName) {
1409     return This->lpVtbl->SetConnectionName(This,pwszInputName);
1410 }
1411 static FORCEINLINE HRESULT IWMStreamConfig_GetBitrate(IWMStreamConfig* This,DWORD *pdwBitrate) {
1412     return This->lpVtbl->GetBitrate(This,pdwBitrate);
1413 }
1414 static FORCEINLINE HRESULT IWMStreamConfig_SetBitrate(IWMStreamConfig* This,DWORD pdwBitrate) {
1415     return This->lpVtbl->SetBitrate(This,pdwBitrate);
1416 }
1417 static FORCEINLINE HRESULT IWMStreamConfig_GetBufferWindow(IWMStreamConfig* This,DWORD *pmsBufferWindow) {
1418     return This->lpVtbl->GetBufferWindow(This,pmsBufferWindow);
1419 }
1420 static FORCEINLINE HRESULT IWMStreamConfig_SetBufferWindow(IWMStreamConfig* This,DWORD msBufferWindow) {
1421     return This->lpVtbl->SetBufferWindow(This,msBufferWindow);
1422 }
1423 #endif
1424 #endif
1425 
1426 #endif
1427 
1428 
1429 #endif  /* __IWMStreamConfig_INTERFACE_DEFINED__ */
1430 
1431 /*****************************************************************************
1432  * IWMProfile interface
1433  */
1434 #ifndef __IWMProfile_INTERFACE_DEFINED__
1435 #define __IWMProfile_INTERFACE_DEFINED__
1436 
1437 DEFINE_GUID(IID_IWMProfile, 0x96406bdb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
1438 #if defined(__cplusplus) && !defined(CINTERFACE)
1439 MIDL_INTERFACE("96406bdb-2b2b-11d3-b36b-00c04f6108ff")
1440 IWMProfile : public IUnknown
1441 {
1442     virtual HRESULT STDMETHODCALLTYPE GetVersion(
1443         WMT_VERSION *pdwVersion) = 0;
1444 
1445     virtual HRESULT STDMETHODCALLTYPE GetName(
1446         WCHAR *pwszName,
1447         DWORD *pcchName) = 0;
1448 
1449     virtual HRESULT STDMETHODCALLTYPE SetName(
1450         const WCHAR *pwszName) = 0;
1451 
1452     virtual HRESULT STDMETHODCALLTYPE GetDescription(
1453         WCHAR *pwszDescription,
1454         DWORD *pcchDescription) = 0;
1455 
1456     virtual HRESULT STDMETHODCALLTYPE SetDescription(
1457         const WCHAR *pwszDescription) = 0;
1458 
1459     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
1460         DWORD *pcStreams) = 0;
1461 
1462     virtual HRESULT STDMETHODCALLTYPE GetStream(
1463         DWORD dwStreamIndex,
1464         IWMStreamConfig **ppConfig) = 0;
1465 
1466     virtual HRESULT STDMETHODCALLTYPE GetStreamByNumber(
1467         WORD wStreamNum,
1468         IWMStreamConfig **ppConfig) = 0;
1469 
1470     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
1471         IWMStreamConfig *pConfig) = 0;
1472 
1473     virtual HRESULT STDMETHODCALLTYPE RemoveStreamByNumber(
1474         WORD wStreamNum) = 0;
1475 
1476     virtual HRESULT STDMETHODCALLTYPE AddStream(
1477         IWMStreamConfig *pConfig) = 0;
1478 
1479     virtual HRESULT STDMETHODCALLTYPE ReconfigStream(
1480         IWMStreamConfig *pConfig) = 0;
1481 
1482     virtual HRESULT STDMETHODCALLTYPE CreateNewStream(
1483         REFGUID guidStreamType,
1484         IWMStreamConfig **ppConfig) = 0;
1485 
1486     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusionCount(
1487         DWORD *pcME) = 0;
1488 
1489     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusion(
1490         DWORD dwMEIndex,
1491         IWMMutualExclusion **ppME) = 0;
1492 
1493     virtual HRESULT STDMETHODCALLTYPE RemoveMutualExclusion(
1494         IWMMutualExclusion *pME) = 0;
1495 
1496     virtual HRESULT STDMETHODCALLTYPE AddMutualExclusion(
1497         IWMMutualExclusion *pME) = 0;
1498 
1499     virtual HRESULT STDMETHODCALLTYPE CreateNewMutualExclusion(
1500         IWMMutualExclusion **ppME) = 0;
1501 
1502 };
1503 #ifdef __CRT_UUID_DECL
1504 __CRT_UUID_DECL(IWMProfile, 0x96406bdb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
1505 #endif
1506 #else
1507 typedef struct IWMProfileVtbl {
1508     BEGIN_INTERFACE
1509 
1510     /*** IUnknown methods ***/
1511     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1512         IWMProfile *This,
1513         REFIID riid,
1514         void **ppvObject);
1515 
1516     ULONG (STDMETHODCALLTYPE *AddRef)(
1517         IWMProfile *This);
1518 
1519     ULONG (STDMETHODCALLTYPE *Release)(
1520         IWMProfile *This);
1521 
1522     /*** IWMProfile methods ***/
1523     HRESULT (STDMETHODCALLTYPE *GetVersion)(
1524         IWMProfile *This,
1525         WMT_VERSION *pdwVersion);
1526 
1527     HRESULT (STDMETHODCALLTYPE *GetName)(
1528         IWMProfile *This,
1529         WCHAR *pwszName,
1530         DWORD *pcchName);
1531 
1532     HRESULT (STDMETHODCALLTYPE *SetName)(
1533         IWMProfile *This,
1534         const WCHAR *pwszName);
1535 
1536     HRESULT (STDMETHODCALLTYPE *GetDescription)(
1537         IWMProfile *This,
1538         WCHAR *pwszDescription,
1539         DWORD *pcchDescription);
1540 
1541     HRESULT (STDMETHODCALLTYPE *SetDescription)(
1542         IWMProfile *This,
1543         const WCHAR *pwszDescription);
1544 
1545     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
1546         IWMProfile *This,
1547         DWORD *pcStreams);
1548 
1549     HRESULT (STDMETHODCALLTYPE *GetStream)(
1550         IWMProfile *This,
1551         DWORD dwStreamIndex,
1552         IWMStreamConfig **ppConfig);
1553 
1554     HRESULT (STDMETHODCALLTYPE *GetStreamByNumber)(
1555         IWMProfile *This,
1556         WORD wStreamNum,
1557         IWMStreamConfig **ppConfig);
1558 
1559     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
1560         IWMProfile *This,
1561         IWMStreamConfig *pConfig);
1562 
1563     HRESULT (STDMETHODCALLTYPE *RemoveStreamByNumber)(
1564         IWMProfile *This,
1565         WORD wStreamNum);
1566 
1567     HRESULT (STDMETHODCALLTYPE *AddStream)(
1568         IWMProfile *This,
1569         IWMStreamConfig *pConfig);
1570 
1571     HRESULT (STDMETHODCALLTYPE *ReconfigStream)(
1572         IWMProfile *This,
1573         IWMStreamConfig *pConfig);
1574 
1575     HRESULT (STDMETHODCALLTYPE *CreateNewStream)(
1576         IWMProfile *This,
1577         REFGUID guidStreamType,
1578         IWMStreamConfig **ppConfig);
1579 
1580     HRESULT (STDMETHODCALLTYPE *GetMutualExclusionCount)(
1581         IWMProfile *This,
1582         DWORD *pcME);
1583 
1584     HRESULT (STDMETHODCALLTYPE *GetMutualExclusion)(
1585         IWMProfile *This,
1586         DWORD dwMEIndex,
1587         IWMMutualExclusion **ppME);
1588 
1589     HRESULT (STDMETHODCALLTYPE *RemoveMutualExclusion)(
1590         IWMProfile *This,
1591         IWMMutualExclusion *pME);
1592 
1593     HRESULT (STDMETHODCALLTYPE *AddMutualExclusion)(
1594         IWMProfile *This,
1595         IWMMutualExclusion *pME);
1596 
1597     HRESULT (STDMETHODCALLTYPE *CreateNewMutualExclusion)(
1598         IWMProfile *This,
1599         IWMMutualExclusion **ppME);
1600 
1601     END_INTERFACE
1602 } IWMProfileVtbl;
1603 
1604 interface IWMProfile {
1605     CONST_VTBL IWMProfileVtbl* lpVtbl;
1606 };
1607 
1608 #ifdef COBJMACROS
1609 #ifndef WIDL_C_INLINE_WRAPPERS
1610 /*** IUnknown methods ***/
1611 #define IWMProfile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1612 #define IWMProfile_AddRef(This) (This)->lpVtbl->AddRef(This)
1613 #define IWMProfile_Release(This) (This)->lpVtbl->Release(This)
1614 /*** IWMProfile methods ***/
1615 #define IWMProfile_GetVersion(This,pdwVersion) (This)->lpVtbl->GetVersion(This,pdwVersion)
1616 #define IWMProfile_GetName(This,pwszName,pcchName) (This)->lpVtbl->GetName(This,pwszName,pcchName)
1617 #define IWMProfile_SetName(This,pwszName) (This)->lpVtbl->SetName(This,pwszName)
1618 #define IWMProfile_GetDescription(This,pwszDescription,pcchDescription) (This)->lpVtbl->GetDescription(This,pwszDescription,pcchDescription)
1619 #define IWMProfile_SetDescription(This,pwszDescription) (This)->lpVtbl->SetDescription(This,pwszDescription)
1620 #define IWMProfile_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
1621 #define IWMProfile_GetStream(This,dwStreamIndex,ppConfig) (This)->lpVtbl->GetStream(This,dwStreamIndex,ppConfig)
1622 #define IWMProfile_GetStreamByNumber(This,wStreamNum,ppConfig) (This)->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig)
1623 #define IWMProfile_RemoveStream(This,pConfig) (This)->lpVtbl->RemoveStream(This,pConfig)
1624 #define IWMProfile_RemoveStreamByNumber(This,wStreamNum) (This)->lpVtbl->RemoveStreamByNumber(This,wStreamNum)
1625 #define IWMProfile_AddStream(This,pConfig) (This)->lpVtbl->AddStream(This,pConfig)
1626 #define IWMProfile_ReconfigStream(This,pConfig) (This)->lpVtbl->ReconfigStream(This,pConfig)
1627 #define IWMProfile_CreateNewStream(This,guidStreamType,ppConfig) (This)->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig)
1628 #define IWMProfile_GetMutualExclusionCount(This,pcME) (This)->lpVtbl->GetMutualExclusionCount(This,pcME)
1629 #define IWMProfile_GetMutualExclusion(This,dwMEIndex,ppME) (This)->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME)
1630 #define IWMProfile_RemoveMutualExclusion(This,pME) (This)->lpVtbl->RemoveMutualExclusion(This,pME)
1631 #define IWMProfile_AddMutualExclusion(This,pME) (This)->lpVtbl->AddMutualExclusion(This,pME)
1632 #define IWMProfile_CreateNewMutualExclusion(This,ppME) (This)->lpVtbl->CreateNewMutualExclusion(This,ppME)
1633 #else
1634 /*** IUnknown methods ***/
1635 static FORCEINLINE HRESULT IWMProfile_QueryInterface(IWMProfile* This,REFIID riid,void **ppvObject) {
1636     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1637 }
1638 static FORCEINLINE ULONG IWMProfile_AddRef(IWMProfile* This) {
1639     return This->lpVtbl->AddRef(This);
1640 }
1641 static FORCEINLINE ULONG IWMProfile_Release(IWMProfile* This) {
1642     return This->lpVtbl->Release(This);
1643 }
1644 /*** IWMProfile methods ***/
1645 static FORCEINLINE HRESULT IWMProfile_GetVersion(IWMProfile* This,WMT_VERSION *pdwVersion) {
1646     return This->lpVtbl->GetVersion(This,pdwVersion);
1647 }
1648 static FORCEINLINE HRESULT IWMProfile_GetName(IWMProfile* This,WCHAR *pwszName,DWORD *pcchName) {
1649     return This->lpVtbl->GetName(This,pwszName,pcchName);
1650 }
1651 static FORCEINLINE HRESULT IWMProfile_SetName(IWMProfile* This,const WCHAR *pwszName) {
1652     return This->lpVtbl->SetName(This,pwszName);
1653 }
1654 static FORCEINLINE HRESULT IWMProfile_GetDescription(IWMProfile* This,WCHAR *pwszDescription,DWORD *pcchDescription) {
1655     return This->lpVtbl->GetDescription(This,pwszDescription,pcchDescription);
1656 }
1657 static FORCEINLINE HRESULT IWMProfile_SetDescription(IWMProfile* This,const WCHAR *pwszDescription) {
1658     return This->lpVtbl->SetDescription(This,pwszDescription);
1659 }
1660 static FORCEINLINE HRESULT IWMProfile_GetStreamCount(IWMProfile* This,DWORD *pcStreams) {
1661     return This->lpVtbl->GetStreamCount(This,pcStreams);
1662 }
1663 static FORCEINLINE HRESULT IWMProfile_GetStream(IWMProfile* This,DWORD dwStreamIndex,IWMStreamConfig **ppConfig) {
1664     return This->lpVtbl->GetStream(This,dwStreamIndex,ppConfig);
1665 }
1666 static FORCEINLINE HRESULT IWMProfile_GetStreamByNumber(IWMProfile* This,WORD wStreamNum,IWMStreamConfig **ppConfig) {
1667     return This->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig);
1668 }
1669 static FORCEINLINE HRESULT IWMProfile_RemoveStream(IWMProfile* This,IWMStreamConfig *pConfig) {
1670     return This->lpVtbl->RemoveStream(This,pConfig);
1671 }
1672 static FORCEINLINE HRESULT IWMProfile_RemoveStreamByNumber(IWMProfile* This,WORD wStreamNum) {
1673     return This->lpVtbl->RemoveStreamByNumber(This,wStreamNum);
1674 }
1675 static FORCEINLINE HRESULT IWMProfile_AddStream(IWMProfile* This,IWMStreamConfig *pConfig) {
1676     return This->lpVtbl->AddStream(This,pConfig);
1677 }
1678 static FORCEINLINE HRESULT IWMProfile_ReconfigStream(IWMProfile* This,IWMStreamConfig *pConfig) {
1679     return This->lpVtbl->ReconfigStream(This,pConfig);
1680 }
1681 static FORCEINLINE HRESULT IWMProfile_CreateNewStream(IWMProfile* This,REFGUID guidStreamType,IWMStreamConfig **ppConfig) {
1682     return This->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig);
1683 }
1684 static FORCEINLINE HRESULT IWMProfile_GetMutualExclusionCount(IWMProfile* This,DWORD *pcME) {
1685     return This->lpVtbl->GetMutualExclusionCount(This,pcME);
1686 }
1687 static FORCEINLINE HRESULT IWMProfile_GetMutualExclusion(IWMProfile* This,DWORD dwMEIndex,IWMMutualExclusion **ppME) {
1688     return This->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME);
1689 }
1690 static FORCEINLINE HRESULT IWMProfile_RemoveMutualExclusion(IWMProfile* This,IWMMutualExclusion *pME) {
1691     return This->lpVtbl->RemoveMutualExclusion(This,pME);
1692 }
1693 static FORCEINLINE HRESULT IWMProfile_AddMutualExclusion(IWMProfile* This,IWMMutualExclusion *pME) {
1694     return This->lpVtbl->AddMutualExclusion(This,pME);
1695 }
1696 static FORCEINLINE HRESULT IWMProfile_CreateNewMutualExclusion(IWMProfile* This,IWMMutualExclusion **ppME) {
1697     return This->lpVtbl->CreateNewMutualExclusion(This,ppME);
1698 }
1699 #endif
1700 #endif
1701 
1702 #endif
1703 
1704 
1705 #endif  /* __IWMProfile_INTERFACE_DEFINED__ */
1706 
1707 /*****************************************************************************
1708  * IWMProfile2 interface
1709  */
1710 #ifndef __IWMProfile2_INTERFACE_DEFINED__
1711 #define __IWMProfile2_INTERFACE_DEFINED__
1712 
1713 DEFINE_GUID(IID_IWMProfile2, 0x07e72d33, 0xd94e, 0x4be7, 0x88,0x43, 0x60,0xae,0x5f,0xf7,0xe5,0xf5);
1714 #if defined(__cplusplus) && !defined(CINTERFACE)
1715 MIDL_INTERFACE("07e72d33-d94e-4be7-8843-60ae5ff7e5f5")
1716 IWMProfile2 : public IWMProfile
1717 {
1718     virtual HRESULT STDMETHODCALLTYPE GetProfileID(
1719         GUID *guid) = 0;
1720 
1721 };
1722 #ifdef __CRT_UUID_DECL
1723 __CRT_UUID_DECL(IWMProfile2, 0x07e72d33, 0xd94e, 0x4be7, 0x88,0x43, 0x60,0xae,0x5f,0xf7,0xe5,0xf5)
1724 #endif
1725 #else
1726 typedef struct IWMProfile2Vtbl {
1727     BEGIN_INTERFACE
1728 
1729     /*** IUnknown methods ***/
1730     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1731         IWMProfile2 *This,
1732         REFIID riid,
1733         void **ppvObject);
1734 
1735     ULONG (STDMETHODCALLTYPE *AddRef)(
1736         IWMProfile2 *This);
1737 
1738     ULONG (STDMETHODCALLTYPE *Release)(
1739         IWMProfile2 *This);
1740 
1741     /*** IWMProfile methods ***/
1742     HRESULT (STDMETHODCALLTYPE *GetVersion)(
1743         IWMProfile2 *This,
1744         WMT_VERSION *pdwVersion);
1745 
1746     HRESULT (STDMETHODCALLTYPE *GetName)(
1747         IWMProfile2 *This,
1748         WCHAR *pwszName,
1749         DWORD *pcchName);
1750 
1751     HRESULT (STDMETHODCALLTYPE *SetName)(
1752         IWMProfile2 *This,
1753         const WCHAR *pwszName);
1754 
1755     HRESULT (STDMETHODCALLTYPE *GetDescription)(
1756         IWMProfile2 *This,
1757         WCHAR *pwszDescription,
1758         DWORD *pcchDescription);
1759 
1760     HRESULT (STDMETHODCALLTYPE *SetDescription)(
1761         IWMProfile2 *This,
1762         const WCHAR *pwszDescription);
1763 
1764     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
1765         IWMProfile2 *This,
1766         DWORD *pcStreams);
1767 
1768     HRESULT (STDMETHODCALLTYPE *GetStream)(
1769         IWMProfile2 *This,
1770         DWORD dwStreamIndex,
1771         IWMStreamConfig **ppConfig);
1772 
1773     HRESULT (STDMETHODCALLTYPE *GetStreamByNumber)(
1774         IWMProfile2 *This,
1775         WORD wStreamNum,
1776         IWMStreamConfig **ppConfig);
1777 
1778     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
1779         IWMProfile2 *This,
1780         IWMStreamConfig *pConfig);
1781 
1782     HRESULT (STDMETHODCALLTYPE *RemoveStreamByNumber)(
1783         IWMProfile2 *This,
1784         WORD wStreamNum);
1785 
1786     HRESULT (STDMETHODCALLTYPE *AddStream)(
1787         IWMProfile2 *This,
1788         IWMStreamConfig *pConfig);
1789 
1790     HRESULT (STDMETHODCALLTYPE *ReconfigStream)(
1791         IWMProfile2 *This,
1792         IWMStreamConfig *pConfig);
1793 
1794     HRESULT (STDMETHODCALLTYPE *CreateNewStream)(
1795         IWMProfile2 *This,
1796         REFGUID guidStreamType,
1797         IWMStreamConfig **ppConfig);
1798 
1799     HRESULT (STDMETHODCALLTYPE *GetMutualExclusionCount)(
1800         IWMProfile2 *This,
1801         DWORD *pcME);
1802 
1803     HRESULT (STDMETHODCALLTYPE *GetMutualExclusion)(
1804         IWMProfile2 *This,
1805         DWORD dwMEIndex,
1806         IWMMutualExclusion **ppME);
1807 
1808     HRESULT (STDMETHODCALLTYPE *RemoveMutualExclusion)(
1809         IWMProfile2 *This,
1810         IWMMutualExclusion *pME);
1811 
1812     HRESULT (STDMETHODCALLTYPE *AddMutualExclusion)(
1813         IWMProfile2 *This,
1814         IWMMutualExclusion *pME);
1815 
1816     HRESULT (STDMETHODCALLTYPE *CreateNewMutualExclusion)(
1817         IWMProfile2 *This,
1818         IWMMutualExclusion **ppME);
1819 
1820     /*** IWMProfile2 methods ***/
1821     HRESULT (STDMETHODCALLTYPE *GetProfileID)(
1822         IWMProfile2 *This,
1823         GUID *guid);
1824 
1825     END_INTERFACE
1826 } IWMProfile2Vtbl;
1827 
1828 interface IWMProfile2 {
1829     CONST_VTBL IWMProfile2Vtbl* lpVtbl;
1830 };
1831 
1832 #ifdef COBJMACROS
1833 #ifndef WIDL_C_INLINE_WRAPPERS
1834 /*** IUnknown methods ***/
1835 #define IWMProfile2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1836 #define IWMProfile2_AddRef(This) (This)->lpVtbl->AddRef(This)
1837 #define IWMProfile2_Release(This) (This)->lpVtbl->Release(This)
1838 /*** IWMProfile methods ***/
1839 #define IWMProfile2_GetVersion(This,pdwVersion) (This)->lpVtbl->GetVersion(This,pdwVersion)
1840 #define IWMProfile2_GetName(This,pwszName,pcchName) (This)->lpVtbl->GetName(This,pwszName,pcchName)
1841 #define IWMProfile2_SetName(This,pwszName) (This)->lpVtbl->SetName(This,pwszName)
1842 #define IWMProfile2_GetDescription(This,pwszDescription,pcchDescription) (This)->lpVtbl->GetDescription(This,pwszDescription,pcchDescription)
1843 #define IWMProfile2_SetDescription(This,pwszDescription) (This)->lpVtbl->SetDescription(This,pwszDescription)
1844 #define IWMProfile2_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
1845 #define IWMProfile2_GetStream(This,dwStreamIndex,ppConfig) (This)->lpVtbl->GetStream(This,dwStreamIndex,ppConfig)
1846 #define IWMProfile2_GetStreamByNumber(This,wStreamNum,ppConfig) (This)->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig)
1847 #define IWMProfile2_RemoveStream(This,pConfig) (This)->lpVtbl->RemoveStream(This,pConfig)
1848 #define IWMProfile2_RemoveStreamByNumber(This,wStreamNum) (This)->lpVtbl->RemoveStreamByNumber(This,wStreamNum)
1849 #define IWMProfile2_AddStream(This,pConfig) (This)->lpVtbl->AddStream(This,pConfig)
1850 #define IWMProfile2_ReconfigStream(This,pConfig) (This)->lpVtbl->ReconfigStream(This,pConfig)
1851 #define IWMProfile2_CreateNewStream(This,guidStreamType,ppConfig) (This)->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig)
1852 #define IWMProfile2_GetMutualExclusionCount(This,pcME) (This)->lpVtbl->GetMutualExclusionCount(This,pcME)
1853 #define IWMProfile2_GetMutualExclusion(This,dwMEIndex,ppME) (This)->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME)
1854 #define IWMProfile2_RemoveMutualExclusion(This,pME) (This)->lpVtbl->RemoveMutualExclusion(This,pME)
1855 #define IWMProfile2_AddMutualExclusion(This,pME) (This)->lpVtbl->AddMutualExclusion(This,pME)
1856 #define IWMProfile2_CreateNewMutualExclusion(This,ppME) (This)->lpVtbl->CreateNewMutualExclusion(This,ppME)
1857 /*** IWMProfile2 methods ***/
1858 #define IWMProfile2_GetProfileID(This,guid) (This)->lpVtbl->GetProfileID(This,guid)
1859 #else
1860 /*** IUnknown methods ***/
1861 static FORCEINLINE HRESULT IWMProfile2_QueryInterface(IWMProfile2* This,REFIID riid,void **ppvObject) {
1862     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1863 }
1864 static FORCEINLINE ULONG IWMProfile2_AddRef(IWMProfile2* This) {
1865     return This->lpVtbl->AddRef(This);
1866 }
1867 static FORCEINLINE ULONG IWMProfile2_Release(IWMProfile2* This) {
1868     return This->lpVtbl->Release(This);
1869 }
1870 /*** IWMProfile methods ***/
1871 static FORCEINLINE HRESULT IWMProfile2_GetVersion(IWMProfile2* This,WMT_VERSION *pdwVersion) {
1872     return This->lpVtbl->GetVersion(This,pdwVersion);
1873 }
1874 static FORCEINLINE HRESULT IWMProfile2_GetName(IWMProfile2* This,WCHAR *pwszName,DWORD *pcchName) {
1875     return This->lpVtbl->GetName(This,pwszName,pcchName);
1876 }
1877 static FORCEINLINE HRESULT IWMProfile2_SetName(IWMProfile2* This,const WCHAR *pwszName) {
1878     return This->lpVtbl->SetName(This,pwszName);
1879 }
1880 static FORCEINLINE HRESULT IWMProfile2_GetDescription(IWMProfile2* This,WCHAR *pwszDescription,DWORD *pcchDescription) {
1881     return This->lpVtbl->GetDescription(This,pwszDescription,pcchDescription);
1882 }
1883 static FORCEINLINE HRESULT IWMProfile2_SetDescription(IWMProfile2* This,const WCHAR *pwszDescription) {
1884     return This->lpVtbl->SetDescription(This,pwszDescription);
1885 }
1886 static FORCEINLINE HRESULT IWMProfile2_GetStreamCount(IWMProfile2* This,DWORD *pcStreams) {
1887     return This->lpVtbl->GetStreamCount(This,pcStreams);
1888 }
1889 static FORCEINLINE HRESULT IWMProfile2_GetStream(IWMProfile2* This,DWORD dwStreamIndex,IWMStreamConfig **ppConfig) {
1890     return This->lpVtbl->GetStream(This,dwStreamIndex,ppConfig);
1891 }
1892 static FORCEINLINE HRESULT IWMProfile2_GetStreamByNumber(IWMProfile2* This,WORD wStreamNum,IWMStreamConfig **ppConfig) {
1893     return This->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig);
1894 }
1895 static FORCEINLINE HRESULT IWMProfile2_RemoveStream(IWMProfile2* This,IWMStreamConfig *pConfig) {
1896     return This->lpVtbl->RemoveStream(This,pConfig);
1897 }
1898 static FORCEINLINE HRESULT IWMProfile2_RemoveStreamByNumber(IWMProfile2* This,WORD wStreamNum) {
1899     return This->lpVtbl->RemoveStreamByNumber(This,wStreamNum);
1900 }
1901 static FORCEINLINE HRESULT IWMProfile2_AddStream(IWMProfile2* This,IWMStreamConfig *pConfig) {
1902     return This->lpVtbl->AddStream(This,pConfig);
1903 }
1904 static FORCEINLINE HRESULT IWMProfile2_ReconfigStream(IWMProfile2* This,IWMStreamConfig *pConfig) {
1905     return This->lpVtbl->ReconfigStream(This,pConfig);
1906 }
1907 static FORCEINLINE HRESULT IWMProfile2_CreateNewStream(IWMProfile2* This,REFGUID guidStreamType,IWMStreamConfig **ppConfig) {
1908     return This->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig);
1909 }
1910 static FORCEINLINE HRESULT IWMProfile2_GetMutualExclusionCount(IWMProfile2* This,DWORD *pcME) {
1911     return This->lpVtbl->GetMutualExclusionCount(This,pcME);
1912 }
1913 static FORCEINLINE HRESULT IWMProfile2_GetMutualExclusion(IWMProfile2* This,DWORD dwMEIndex,IWMMutualExclusion **ppME) {
1914     return This->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME);
1915 }
1916 static FORCEINLINE HRESULT IWMProfile2_RemoveMutualExclusion(IWMProfile2* This,IWMMutualExclusion *pME) {
1917     return This->lpVtbl->RemoveMutualExclusion(This,pME);
1918 }
1919 static FORCEINLINE HRESULT IWMProfile2_AddMutualExclusion(IWMProfile2* This,IWMMutualExclusion *pME) {
1920     return This->lpVtbl->AddMutualExclusion(This,pME);
1921 }
1922 static FORCEINLINE HRESULT IWMProfile2_CreateNewMutualExclusion(IWMProfile2* This,IWMMutualExclusion **ppME) {
1923     return This->lpVtbl->CreateNewMutualExclusion(This,ppME);
1924 }
1925 /*** IWMProfile2 methods ***/
1926 static FORCEINLINE HRESULT IWMProfile2_GetProfileID(IWMProfile2* This,GUID *guid) {
1927     return This->lpVtbl->GetProfileID(This,guid);
1928 }
1929 #endif
1930 #endif
1931 
1932 #endif
1933 
1934 
1935 #endif  /* __IWMProfile2_INTERFACE_DEFINED__ */
1936 
1937 /*****************************************************************************
1938  * IWMProfile3 interface
1939  */
1940 #ifndef __IWMProfile3_INTERFACE_DEFINED__
1941 #define __IWMProfile3_INTERFACE_DEFINED__
1942 
1943 DEFINE_GUID(IID_IWMProfile3, 0x00ef96cc, 0xa461, 0x4546, 0x8b,0xcd, 0xc9,0xa2,0x8f,0x0e,0x06,0xf5);
1944 #if defined(__cplusplus) && !defined(CINTERFACE)
1945 MIDL_INTERFACE("00ef96cc-a461-4546-8bcd-c9a28f0e06f5")
1946 IWMProfile3 : public IWMProfile2
1947 {
1948     virtual HRESULT STDMETHODCALLTYPE GetStorageFormat(
1949         WMT_STORAGE_FORMAT *storage) = 0;
1950 
1951     virtual HRESULT STDMETHODCALLTYPE SetStorageFormat(
1952         WMT_STORAGE_FORMAT storage) = 0;
1953 
1954     virtual HRESULT STDMETHODCALLTYPE GetBandwidthSharingCount(
1955         DWORD *count) = 0;
1956 
1957     virtual HRESULT STDMETHODCALLTYPE GetBandwidthSharing(
1958         DWORD index,
1959         IWMBandwidthSharing **bandwidth) = 0;
1960 
1961     virtual HRESULT STDMETHODCALLTYPE RemoveBandwidthSharing(
1962         IWMBandwidthSharing *bandwidth) = 0;
1963 
1964     virtual HRESULT STDMETHODCALLTYPE AddBandwidthSharing(
1965         IWMBandwidthSharing *bandwidth) = 0;
1966 
1967     virtual HRESULT STDMETHODCALLTYPE CreateNewBandwidthSharing(
1968         IWMBandwidthSharing **bandwidth) = 0;
1969 
1970     virtual HRESULT STDMETHODCALLTYPE GetStreamPrioritization(
1971         IWMStreamPrioritization **stream) = 0;
1972 
1973     virtual HRESULT STDMETHODCALLTYPE SetStreamPrioritization(
1974         IWMStreamPrioritization *stream) = 0;
1975 
1976     virtual HRESULT STDMETHODCALLTYPE RemoveStreamPrioritization(
1977         ) = 0;
1978 
1979     virtual HRESULT STDMETHODCALLTYPE CreateNewStreamPrioritization(
1980         IWMStreamPrioritization **stream) = 0;
1981 
1982     virtual HRESULT STDMETHODCALLTYPE GetExpectedPacketCount(
1983         QWORD duration,
1984         QWORD *packets) = 0;
1985 
1986 };
1987 #ifdef __CRT_UUID_DECL
1988 __CRT_UUID_DECL(IWMProfile3, 0x00ef96cc, 0xa461, 0x4546, 0x8b,0xcd, 0xc9,0xa2,0x8f,0x0e,0x06,0xf5)
1989 #endif
1990 #else
1991 typedef struct IWMProfile3Vtbl {
1992     BEGIN_INTERFACE
1993 
1994     /*** IUnknown methods ***/
1995     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1996         IWMProfile3 *This,
1997         REFIID riid,
1998         void **ppvObject);
1999 
2000     ULONG (STDMETHODCALLTYPE *AddRef)(
2001         IWMProfile3 *This);
2002 
2003     ULONG (STDMETHODCALLTYPE *Release)(
2004         IWMProfile3 *This);
2005 
2006     /*** IWMProfile methods ***/
2007     HRESULT (STDMETHODCALLTYPE *GetVersion)(
2008         IWMProfile3 *This,
2009         WMT_VERSION *pdwVersion);
2010 
2011     HRESULT (STDMETHODCALLTYPE *GetName)(
2012         IWMProfile3 *This,
2013         WCHAR *pwszName,
2014         DWORD *pcchName);
2015 
2016     HRESULT (STDMETHODCALLTYPE *SetName)(
2017         IWMProfile3 *This,
2018         const WCHAR *pwszName);
2019 
2020     HRESULT (STDMETHODCALLTYPE *GetDescription)(
2021         IWMProfile3 *This,
2022         WCHAR *pwszDescription,
2023         DWORD *pcchDescription);
2024 
2025     HRESULT (STDMETHODCALLTYPE *SetDescription)(
2026         IWMProfile3 *This,
2027         const WCHAR *pwszDescription);
2028 
2029     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
2030         IWMProfile3 *This,
2031         DWORD *pcStreams);
2032 
2033     HRESULT (STDMETHODCALLTYPE *GetStream)(
2034         IWMProfile3 *This,
2035         DWORD dwStreamIndex,
2036         IWMStreamConfig **ppConfig);
2037 
2038     HRESULT (STDMETHODCALLTYPE *GetStreamByNumber)(
2039         IWMProfile3 *This,
2040         WORD wStreamNum,
2041         IWMStreamConfig **ppConfig);
2042 
2043     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
2044         IWMProfile3 *This,
2045         IWMStreamConfig *pConfig);
2046 
2047     HRESULT (STDMETHODCALLTYPE *RemoveStreamByNumber)(
2048         IWMProfile3 *This,
2049         WORD wStreamNum);
2050 
2051     HRESULT (STDMETHODCALLTYPE *AddStream)(
2052         IWMProfile3 *This,
2053         IWMStreamConfig *pConfig);
2054 
2055     HRESULT (STDMETHODCALLTYPE *ReconfigStream)(
2056         IWMProfile3 *This,
2057         IWMStreamConfig *pConfig);
2058 
2059     HRESULT (STDMETHODCALLTYPE *CreateNewStream)(
2060         IWMProfile3 *This,
2061         REFGUID guidStreamType,
2062         IWMStreamConfig **ppConfig);
2063 
2064     HRESULT (STDMETHODCALLTYPE *GetMutualExclusionCount)(
2065         IWMProfile3 *This,
2066         DWORD *pcME);
2067 
2068     HRESULT (STDMETHODCALLTYPE *GetMutualExclusion)(
2069         IWMProfile3 *This,
2070         DWORD dwMEIndex,
2071         IWMMutualExclusion **ppME);
2072 
2073     HRESULT (STDMETHODCALLTYPE *RemoveMutualExclusion)(
2074         IWMProfile3 *This,
2075         IWMMutualExclusion *pME);
2076 
2077     HRESULT (STDMETHODCALLTYPE *AddMutualExclusion)(
2078         IWMProfile3 *This,
2079         IWMMutualExclusion *pME);
2080 
2081     HRESULT (STDMETHODCALLTYPE *CreateNewMutualExclusion)(
2082         IWMProfile3 *This,
2083         IWMMutualExclusion **ppME);
2084 
2085     /*** IWMProfile2 methods ***/
2086     HRESULT (STDMETHODCALLTYPE *GetProfileID)(
2087         IWMProfile3 *This,
2088         GUID *guid);
2089 
2090     /*** IWMProfile3 methods ***/
2091     HRESULT (STDMETHODCALLTYPE *GetStorageFormat)(
2092         IWMProfile3 *This,
2093         WMT_STORAGE_FORMAT *storage);
2094 
2095     HRESULT (STDMETHODCALLTYPE *SetStorageFormat)(
2096         IWMProfile3 *This,
2097         WMT_STORAGE_FORMAT storage);
2098 
2099     HRESULT (STDMETHODCALLTYPE *GetBandwidthSharingCount)(
2100         IWMProfile3 *This,
2101         DWORD *count);
2102 
2103     HRESULT (STDMETHODCALLTYPE *GetBandwidthSharing)(
2104         IWMProfile3 *This,
2105         DWORD index,
2106         IWMBandwidthSharing **bandwidth);
2107 
2108     HRESULT (STDMETHODCALLTYPE *RemoveBandwidthSharing)(
2109         IWMProfile3 *This,
2110         IWMBandwidthSharing *bandwidth);
2111 
2112     HRESULT (STDMETHODCALLTYPE *AddBandwidthSharing)(
2113         IWMProfile3 *This,
2114         IWMBandwidthSharing *bandwidth);
2115 
2116     HRESULT (STDMETHODCALLTYPE *CreateNewBandwidthSharing)(
2117         IWMProfile3 *This,
2118         IWMBandwidthSharing **bandwidth);
2119 
2120     HRESULT (STDMETHODCALLTYPE *GetStreamPrioritization)(
2121         IWMProfile3 *This,
2122         IWMStreamPrioritization **stream);
2123 
2124     HRESULT (STDMETHODCALLTYPE *SetStreamPrioritization)(
2125         IWMProfile3 *This,
2126         IWMStreamPrioritization *stream);
2127 
2128     HRESULT (STDMETHODCALLTYPE *RemoveStreamPrioritization)(
2129         IWMProfile3 *This);
2130 
2131     HRESULT (STDMETHODCALLTYPE *CreateNewStreamPrioritization)(
2132         IWMProfile3 *This,
2133         IWMStreamPrioritization **stream);
2134 
2135     HRESULT (STDMETHODCALLTYPE *GetExpectedPacketCount)(
2136         IWMProfile3 *This,
2137         QWORD duration,
2138         QWORD *packets);
2139 
2140     END_INTERFACE
2141 } IWMProfile3Vtbl;
2142 
2143 interface IWMProfile3 {
2144     CONST_VTBL IWMProfile3Vtbl* lpVtbl;
2145 };
2146 
2147 #ifdef COBJMACROS
2148 #ifndef WIDL_C_INLINE_WRAPPERS
2149 /*** IUnknown methods ***/
2150 #define IWMProfile3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2151 #define IWMProfile3_AddRef(This) (This)->lpVtbl->AddRef(This)
2152 #define IWMProfile3_Release(This) (This)->lpVtbl->Release(This)
2153 /*** IWMProfile methods ***/
2154 #define IWMProfile3_GetVersion(This,pdwVersion) (This)->lpVtbl->GetVersion(This,pdwVersion)
2155 #define IWMProfile3_GetName(This,pwszName,pcchName) (This)->lpVtbl->GetName(This,pwszName,pcchName)
2156 #define IWMProfile3_SetName(This,pwszName) (This)->lpVtbl->SetName(This,pwszName)
2157 #define IWMProfile3_GetDescription(This,pwszDescription,pcchDescription) (This)->lpVtbl->GetDescription(This,pwszDescription,pcchDescription)
2158 #define IWMProfile3_SetDescription(This,pwszDescription) (This)->lpVtbl->SetDescription(This,pwszDescription)
2159 #define IWMProfile3_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
2160 #define IWMProfile3_GetStream(This,dwStreamIndex,ppConfig) (This)->lpVtbl->GetStream(This,dwStreamIndex,ppConfig)
2161 #define IWMProfile3_GetStreamByNumber(This,wStreamNum,ppConfig) (This)->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig)
2162 #define IWMProfile3_RemoveStream(This,pConfig) (This)->lpVtbl->RemoveStream(This,pConfig)
2163 #define IWMProfile3_RemoveStreamByNumber(This,wStreamNum) (This)->lpVtbl->RemoveStreamByNumber(This,wStreamNum)
2164 #define IWMProfile3_AddStream(This,pConfig) (This)->lpVtbl->AddStream(This,pConfig)
2165 #define IWMProfile3_ReconfigStream(This,pConfig) (This)->lpVtbl->ReconfigStream(This,pConfig)
2166 #define IWMProfile3_CreateNewStream(This,guidStreamType,ppConfig) (This)->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig)
2167 #define IWMProfile3_GetMutualExclusionCount(This,pcME) (This)->lpVtbl->GetMutualExclusionCount(This,pcME)
2168 #define IWMProfile3_GetMutualExclusion(This,dwMEIndex,ppME) (This)->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME)
2169 #define IWMProfile3_RemoveMutualExclusion(This,pME) (This)->lpVtbl->RemoveMutualExclusion(This,pME)
2170 #define IWMProfile3_AddMutualExclusion(This,pME) (This)->lpVtbl->AddMutualExclusion(This,pME)
2171 #define IWMProfile3_CreateNewMutualExclusion(This,ppME) (This)->lpVtbl->CreateNewMutualExclusion(This,ppME)
2172 /*** IWMProfile2 methods ***/
2173 #define IWMProfile3_GetProfileID(This,guid) (This)->lpVtbl->GetProfileID(This,guid)
2174 /*** IWMProfile3 methods ***/
2175 #define IWMProfile3_GetStorageFormat(This,storage) (This)->lpVtbl->GetStorageFormat(This,storage)
2176 #define IWMProfile3_SetStorageFormat(This,storage) (This)->lpVtbl->SetStorageFormat(This,storage)
2177 #define IWMProfile3_GetBandwidthSharingCount(This,count) (This)->lpVtbl->GetBandwidthSharingCount(This,count)
2178 #define IWMProfile3_GetBandwidthSharing(This,index,bandwidth) (This)->lpVtbl->GetBandwidthSharing(This,index,bandwidth)
2179 #define IWMProfile3_RemoveBandwidthSharing(This,bandwidth) (This)->lpVtbl->RemoveBandwidthSharing(This,bandwidth)
2180 #define IWMProfile3_AddBandwidthSharing(This,bandwidth) (This)->lpVtbl->AddBandwidthSharing(This,bandwidth)
2181 #define IWMProfile3_CreateNewBandwidthSharing(This,bandwidth) (This)->lpVtbl->CreateNewBandwidthSharing(This,bandwidth)
2182 #define IWMProfile3_GetStreamPrioritization(This,stream) (This)->lpVtbl->GetStreamPrioritization(This,stream)
2183 #define IWMProfile3_SetStreamPrioritization(This,stream) (This)->lpVtbl->SetStreamPrioritization(This,stream)
2184 #define IWMProfile3_RemoveStreamPrioritization(This) (This)->lpVtbl->RemoveStreamPrioritization(This)
2185 #define IWMProfile3_CreateNewStreamPrioritization(This,stream) (This)->lpVtbl->CreateNewStreamPrioritization(This,stream)
2186 #define IWMProfile3_GetExpectedPacketCount(This,duration,packets) (This)->lpVtbl->GetExpectedPacketCount(This,duration,packets)
2187 #else
2188 /*** IUnknown methods ***/
2189 static FORCEINLINE HRESULT IWMProfile3_QueryInterface(IWMProfile3* This,REFIID riid,void **ppvObject) {
2190     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2191 }
2192 static FORCEINLINE ULONG IWMProfile3_AddRef(IWMProfile3* This) {
2193     return This->lpVtbl->AddRef(This);
2194 }
2195 static FORCEINLINE ULONG IWMProfile3_Release(IWMProfile3* This) {
2196     return This->lpVtbl->Release(This);
2197 }
2198 /*** IWMProfile methods ***/
2199 static FORCEINLINE HRESULT IWMProfile3_GetVersion(IWMProfile3* This,WMT_VERSION *pdwVersion) {
2200     return This->lpVtbl->GetVersion(This,pdwVersion);
2201 }
2202 static FORCEINLINE HRESULT IWMProfile3_GetName(IWMProfile3* This,WCHAR *pwszName,DWORD *pcchName) {
2203     return This->lpVtbl->GetName(This,pwszName,pcchName);
2204 }
2205 static FORCEINLINE HRESULT IWMProfile3_SetName(IWMProfile3* This,const WCHAR *pwszName) {
2206     return This->lpVtbl->SetName(This,pwszName);
2207 }
2208 static FORCEINLINE HRESULT IWMProfile3_GetDescription(IWMProfile3* This,WCHAR *pwszDescription,DWORD *pcchDescription) {
2209     return This->lpVtbl->GetDescription(This,pwszDescription,pcchDescription);
2210 }
2211 static FORCEINLINE HRESULT IWMProfile3_SetDescription(IWMProfile3* This,const WCHAR *pwszDescription) {
2212     return This->lpVtbl->SetDescription(This,pwszDescription);
2213 }
2214 static FORCEINLINE HRESULT IWMProfile3_GetStreamCount(IWMProfile3* This,DWORD *pcStreams) {
2215     return This->lpVtbl->GetStreamCount(This,pcStreams);
2216 }
2217 static FORCEINLINE HRESULT IWMProfile3_GetStream(IWMProfile3* This,DWORD dwStreamIndex,IWMStreamConfig **ppConfig) {
2218     return This->lpVtbl->GetStream(This,dwStreamIndex,ppConfig);
2219 }
2220 static FORCEINLINE HRESULT IWMProfile3_GetStreamByNumber(IWMProfile3* This,WORD wStreamNum,IWMStreamConfig **ppConfig) {
2221     return This->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig);
2222 }
2223 static FORCEINLINE HRESULT IWMProfile3_RemoveStream(IWMProfile3* This,IWMStreamConfig *pConfig) {
2224     return This->lpVtbl->RemoveStream(This,pConfig);
2225 }
2226 static FORCEINLINE HRESULT IWMProfile3_RemoveStreamByNumber(IWMProfile3* This,WORD wStreamNum) {
2227     return This->lpVtbl->RemoveStreamByNumber(This,wStreamNum);
2228 }
2229 static FORCEINLINE HRESULT IWMProfile3_AddStream(IWMProfile3* This,IWMStreamConfig *pConfig) {
2230     return This->lpVtbl->AddStream(This,pConfig);
2231 }
2232 static FORCEINLINE HRESULT IWMProfile3_ReconfigStream(IWMProfile3* This,IWMStreamConfig *pConfig) {
2233     return This->lpVtbl->ReconfigStream(This,pConfig);
2234 }
2235 static FORCEINLINE HRESULT IWMProfile3_CreateNewStream(IWMProfile3* This,REFGUID guidStreamType,IWMStreamConfig **ppConfig) {
2236     return This->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig);
2237 }
2238 static FORCEINLINE HRESULT IWMProfile3_GetMutualExclusionCount(IWMProfile3* This,DWORD *pcME) {
2239     return This->lpVtbl->GetMutualExclusionCount(This,pcME);
2240 }
2241 static FORCEINLINE HRESULT IWMProfile3_GetMutualExclusion(IWMProfile3* This,DWORD dwMEIndex,IWMMutualExclusion **ppME) {
2242     return This->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME);
2243 }
2244 static FORCEINLINE HRESULT IWMProfile3_RemoveMutualExclusion(IWMProfile3* This,IWMMutualExclusion *pME) {
2245     return This->lpVtbl->RemoveMutualExclusion(This,pME);
2246 }
2247 static FORCEINLINE HRESULT IWMProfile3_AddMutualExclusion(IWMProfile3* This,IWMMutualExclusion *pME) {
2248     return This->lpVtbl->AddMutualExclusion(This,pME);
2249 }
2250 static FORCEINLINE HRESULT IWMProfile3_CreateNewMutualExclusion(IWMProfile3* This,IWMMutualExclusion **ppME) {
2251     return This->lpVtbl->CreateNewMutualExclusion(This,ppME);
2252 }
2253 /*** IWMProfile2 methods ***/
2254 static FORCEINLINE HRESULT IWMProfile3_GetProfileID(IWMProfile3* This,GUID *guid) {
2255     return This->lpVtbl->GetProfileID(This,guid);
2256 }
2257 /*** IWMProfile3 methods ***/
2258 static FORCEINLINE HRESULT IWMProfile3_GetStorageFormat(IWMProfile3* This,WMT_STORAGE_FORMAT *storage) {
2259     return This->lpVtbl->GetStorageFormat(This,storage);
2260 }
2261 static FORCEINLINE HRESULT IWMProfile3_SetStorageFormat(IWMProfile3* This,WMT_STORAGE_FORMAT storage) {
2262     return This->lpVtbl->SetStorageFormat(This,storage);
2263 }
2264 static FORCEINLINE HRESULT IWMProfile3_GetBandwidthSharingCount(IWMProfile3* This,DWORD *count) {
2265     return This->lpVtbl->GetBandwidthSharingCount(This,count);
2266 }
2267 static FORCEINLINE HRESULT IWMProfile3_GetBandwidthSharing(IWMProfile3* This,DWORD index,IWMBandwidthSharing **bandwidth) {
2268     return This->lpVtbl->GetBandwidthSharing(This,index,bandwidth);
2269 }
2270 static FORCEINLINE HRESULT IWMProfile3_RemoveBandwidthSharing(IWMProfile3* This,IWMBandwidthSharing *bandwidth) {
2271     return This->lpVtbl->RemoveBandwidthSharing(This,bandwidth);
2272 }
2273 static FORCEINLINE HRESULT IWMProfile3_AddBandwidthSharing(IWMProfile3* This,IWMBandwidthSharing *bandwidth) {
2274     return This->lpVtbl->AddBandwidthSharing(This,bandwidth);
2275 }
2276 static FORCEINLINE HRESULT IWMProfile3_CreateNewBandwidthSharing(IWMProfile3* This,IWMBandwidthSharing **bandwidth) {
2277     return This->lpVtbl->CreateNewBandwidthSharing(This,bandwidth);
2278 }
2279 static FORCEINLINE HRESULT IWMProfile3_GetStreamPrioritization(IWMProfile3* This,IWMStreamPrioritization **stream) {
2280     return This->lpVtbl->GetStreamPrioritization(This,stream);
2281 }
2282 static FORCEINLINE HRESULT IWMProfile3_SetStreamPrioritization(IWMProfile3* This,IWMStreamPrioritization *stream) {
2283     return This->lpVtbl->SetStreamPrioritization(This,stream);
2284 }
2285 static FORCEINLINE HRESULT IWMProfile3_RemoveStreamPrioritization(IWMProfile3* This) {
2286     return This->lpVtbl->RemoveStreamPrioritization(This);
2287 }
2288 static FORCEINLINE HRESULT IWMProfile3_CreateNewStreamPrioritization(IWMProfile3* This,IWMStreamPrioritization **stream) {
2289     return This->lpVtbl->CreateNewStreamPrioritization(This,stream);
2290 }
2291 static FORCEINLINE HRESULT IWMProfile3_GetExpectedPacketCount(IWMProfile3* This,QWORD duration,QWORD *packets) {
2292     return This->lpVtbl->GetExpectedPacketCount(This,duration,packets);
2293 }
2294 #endif
2295 #endif
2296 
2297 #endif
2298 
2299 
2300 #endif  /* __IWMProfile3_INTERFACE_DEFINED__ */
2301 
2302 /*****************************************************************************
2303  * IWMProfileManager interface
2304  */
2305 #ifndef __IWMProfileManager_INTERFACE_DEFINED__
2306 #define __IWMProfileManager_INTERFACE_DEFINED__
2307 
2308 DEFINE_GUID(IID_IWMProfileManager, 0xd16679f2, 0x6ca0, 0x472d, 0x8d,0x31, 0x2f,0x5d,0x55,0xae,0xe1,0x55);
2309 #if defined(__cplusplus) && !defined(CINTERFACE)
2310 MIDL_INTERFACE("d16679f2-6ca0-472d-8d31-2f5d55aee155")
2311 IWMProfileManager : public IUnknown
2312 {
2313     virtual HRESULT STDMETHODCALLTYPE CreateEmptyProfile(
2314         WMT_VERSION dwVersion,
2315         IWMProfile **ppProfile) = 0;
2316 
2317     virtual HRESULT STDMETHODCALLTYPE LoadProfileByID(
2318         REFGUID guidProfile,
2319         IWMProfile **ppProfile) = 0;
2320 
2321     virtual HRESULT STDMETHODCALLTYPE LoadProfileByData(
2322         const WCHAR *pwszProfile,
2323         IWMProfile **ppProfile) = 0;
2324 
2325     virtual HRESULT STDMETHODCALLTYPE SaveProfile(
2326         IWMProfile *pIWMProfile,
2327         WCHAR *pwszProfile,
2328         DWORD *pdwLength) = 0;
2329 
2330     virtual HRESULT STDMETHODCALLTYPE GetSystemProfileCount(
2331         DWORD *pcProfiles) = 0;
2332 
2333     virtual HRESULT STDMETHODCALLTYPE LoadSystemProfile(
2334         DWORD dwProfileIndex,
2335         IWMProfile **ppProfile) = 0;
2336 
2337 };
2338 #ifdef __CRT_UUID_DECL
2339 __CRT_UUID_DECL(IWMProfileManager, 0xd16679f2, 0x6ca0, 0x472d, 0x8d,0x31, 0x2f,0x5d,0x55,0xae,0xe1,0x55)
2340 #endif
2341 #else
2342 typedef struct IWMProfileManagerVtbl {
2343     BEGIN_INTERFACE
2344 
2345     /*** IUnknown methods ***/
2346     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2347         IWMProfileManager *This,
2348         REFIID riid,
2349         void **ppvObject);
2350 
2351     ULONG (STDMETHODCALLTYPE *AddRef)(
2352         IWMProfileManager *This);
2353 
2354     ULONG (STDMETHODCALLTYPE *Release)(
2355         IWMProfileManager *This);
2356 
2357     /*** IWMProfileManager methods ***/
2358     HRESULT (STDMETHODCALLTYPE *CreateEmptyProfile)(
2359         IWMProfileManager *This,
2360         WMT_VERSION dwVersion,
2361         IWMProfile **ppProfile);
2362 
2363     HRESULT (STDMETHODCALLTYPE *LoadProfileByID)(
2364         IWMProfileManager *This,
2365         REFGUID guidProfile,
2366         IWMProfile **ppProfile);
2367 
2368     HRESULT (STDMETHODCALLTYPE *LoadProfileByData)(
2369         IWMProfileManager *This,
2370         const WCHAR *pwszProfile,
2371         IWMProfile **ppProfile);
2372 
2373     HRESULT (STDMETHODCALLTYPE *SaveProfile)(
2374         IWMProfileManager *This,
2375         IWMProfile *pIWMProfile,
2376         WCHAR *pwszProfile,
2377         DWORD *pdwLength);
2378 
2379     HRESULT (STDMETHODCALLTYPE *GetSystemProfileCount)(
2380         IWMProfileManager *This,
2381         DWORD *pcProfiles);
2382 
2383     HRESULT (STDMETHODCALLTYPE *LoadSystemProfile)(
2384         IWMProfileManager *This,
2385         DWORD dwProfileIndex,
2386         IWMProfile **ppProfile);
2387 
2388     END_INTERFACE
2389 } IWMProfileManagerVtbl;
2390 
2391 interface IWMProfileManager {
2392     CONST_VTBL IWMProfileManagerVtbl* lpVtbl;
2393 };
2394 
2395 #ifdef COBJMACROS
2396 #ifndef WIDL_C_INLINE_WRAPPERS
2397 /*** IUnknown methods ***/
2398 #define IWMProfileManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2399 #define IWMProfileManager_AddRef(This) (This)->lpVtbl->AddRef(This)
2400 #define IWMProfileManager_Release(This) (This)->lpVtbl->Release(This)
2401 /*** IWMProfileManager methods ***/
2402 #define IWMProfileManager_CreateEmptyProfile(This,dwVersion,ppProfile) (This)->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile)
2403 #define IWMProfileManager_LoadProfileByID(This,guidProfile,ppProfile) (This)->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile)
2404 #define IWMProfileManager_LoadProfileByData(This,pwszProfile,ppProfile) (This)->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile)
2405 #define IWMProfileManager_SaveProfile(This,pIWMProfile,pwszProfile,pdwLength) (This)->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength)
2406 #define IWMProfileManager_GetSystemProfileCount(This,pcProfiles) (This)->lpVtbl->GetSystemProfileCount(This,pcProfiles)
2407 #define IWMProfileManager_LoadSystemProfile(This,dwProfileIndex,ppProfile) (This)->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile)
2408 #else
2409 /*** IUnknown methods ***/
2410 static FORCEINLINE HRESULT IWMProfileManager_QueryInterface(IWMProfileManager* This,REFIID riid,void **ppvObject) {
2411     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2412 }
2413 static FORCEINLINE ULONG IWMProfileManager_AddRef(IWMProfileManager* This) {
2414     return This->lpVtbl->AddRef(This);
2415 }
2416 static FORCEINLINE ULONG IWMProfileManager_Release(IWMProfileManager* This) {
2417     return This->lpVtbl->Release(This);
2418 }
2419 /*** IWMProfileManager methods ***/
2420 static FORCEINLINE HRESULT IWMProfileManager_CreateEmptyProfile(IWMProfileManager* This,WMT_VERSION dwVersion,IWMProfile **ppProfile) {
2421     return This->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile);
2422 }
2423 static FORCEINLINE HRESULT IWMProfileManager_LoadProfileByID(IWMProfileManager* This,REFGUID guidProfile,IWMProfile **ppProfile) {
2424     return This->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile);
2425 }
2426 static FORCEINLINE HRESULT IWMProfileManager_LoadProfileByData(IWMProfileManager* This,const WCHAR *pwszProfile,IWMProfile **ppProfile) {
2427     return This->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile);
2428 }
2429 static FORCEINLINE HRESULT IWMProfileManager_SaveProfile(IWMProfileManager* This,IWMProfile *pIWMProfile,WCHAR *pwszProfile,DWORD *pdwLength) {
2430     return This->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength);
2431 }
2432 static FORCEINLINE HRESULT IWMProfileManager_GetSystemProfileCount(IWMProfileManager* This,DWORD *pcProfiles) {
2433     return This->lpVtbl->GetSystemProfileCount(This,pcProfiles);
2434 }
2435 static FORCEINLINE HRESULT IWMProfileManager_LoadSystemProfile(IWMProfileManager* This,DWORD dwProfileIndex,IWMProfile **ppProfile) {
2436     return This->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile);
2437 }
2438 #endif
2439 #endif
2440 
2441 #endif
2442 
2443 
2444 #endif  /* __IWMProfileManager_INTERFACE_DEFINED__ */
2445 
2446 /*****************************************************************************
2447  * IWMProfileManager2 interface
2448  */
2449 #ifndef __IWMProfileManager2_INTERFACE_DEFINED__
2450 #define __IWMProfileManager2_INTERFACE_DEFINED__
2451 
2452 DEFINE_GUID(IID_IWMProfileManager2, 0x7a924e51, 0x73c1, 0x494d, 0x80,0x19, 0x23,0xd3,0x7e,0xd9,0xb8,0x9a);
2453 #if defined(__cplusplus) && !defined(CINTERFACE)
2454 MIDL_INTERFACE("7a924e51-73c1-494d-8019-23d37ed9b89a")
2455 IWMProfileManager2 : public IWMProfileManager
2456 {
2457     virtual HRESULT STDMETHODCALLTYPE GetSystemProfileVersion(
2458         WMT_VERSION *version) = 0;
2459 
2460     virtual HRESULT STDMETHODCALLTYPE SetSystemProfileVersion(
2461         WMT_VERSION version) = 0;
2462 
2463 };
2464 #ifdef __CRT_UUID_DECL
2465 __CRT_UUID_DECL(IWMProfileManager2, 0x7a924e51, 0x73c1, 0x494d, 0x80,0x19, 0x23,0xd3,0x7e,0xd9,0xb8,0x9a)
2466 #endif
2467 #else
2468 typedef struct IWMProfileManager2Vtbl {
2469     BEGIN_INTERFACE
2470 
2471     /*** IUnknown methods ***/
2472     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2473         IWMProfileManager2 *This,
2474         REFIID riid,
2475         void **ppvObject);
2476 
2477     ULONG (STDMETHODCALLTYPE *AddRef)(
2478         IWMProfileManager2 *This);
2479 
2480     ULONG (STDMETHODCALLTYPE *Release)(
2481         IWMProfileManager2 *This);
2482 
2483     /*** IWMProfileManager methods ***/
2484     HRESULT (STDMETHODCALLTYPE *CreateEmptyProfile)(
2485         IWMProfileManager2 *This,
2486         WMT_VERSION dwVersion,
2487         IWMProfile **ppProfile);
2488 
2489     HRESULT (STDMETHODCALLTYPE *LoadProfileByID)(
2490         IWMProfileManager2 *This,
2491         REFGUID guidProfile,
2492         IWMProfile **ppProfile);
2493 
2494     HRESULT (STDMETHODCALLTYPE *LoadProfileByData)(
2495         IWMProfileManager2 *This,
2496         const WCHAR *pwszProfile,
2497         IWMProfile **ppProfile);
2498 
2499     HRESULT (STDMETHODCALLTYPE *SaveProfile)(
2500         IWMProfileManager2 *This,
2501         IWMProfile *pIWMProfile,
2502         WCHAR *pwszProfile,
2503         DWORD *pdwLength);
2504 
2505     HRESULT (STDMETHODCALLTYPE *GetSystemProfileCount)(
2506         IWMProfileManager2 *This,
2507         DWORD *pcProfiles);
2508 
2509     HRESULT (STDMETHODCALLTYPE *LoadSystemProfile)(
2510         IWMProfileManager2 *This,
2511         DWORD dwProfileIndex,
2512         IWMProfile **ppProfile);
2513 
2514     /*** IWMProfileManager2 methods ***/
2515     HRESULT (STDMETHODCALLTYPE *GetSystemProfileVersion)(
2516         IWMProfileManager2 *This,
2517         WMT_VERSION *version);
2518 
2519     HRESULT (STDMETHODCALLTYPE *SetSystemProfileVersion)(
2520         IWMProfileManager2 *This,
2521         WMT_VERSION version);
2522 
2523     END_INTERFACE
2524 } IWMProfileManager2Vtbl;
2525 
2526 interface IWMProfileManager2 {
2527     CONST_VTBL IWMProfileManager2Vtbl* lpVtbl;
2528 };
2529 
2530 #ifdef COBJMACROS
2531 #ifndef WIDL_C_INLINE_WRAPPERS
2532 /*** IUnknown methods ***/
2533 #define IWMProfileManager2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2534 #define IWMProfileManager2_AddRef(This) (This)->lpVtbl->AddRef(This)
2535 #define IWMProfileManager2_Release(This) (This)->lpVtbl->Release(This)
2536 /*** IWMProfileManager methods ***/
2537 #define IWMProfileManager2_CreateEmptyProfile(This,dwVersion,ppProfile) (This)->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile)
2538 #define IWMProfileManager2_LoadProfileByID(This,guidProfile,ppProfile) (This)->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile)
2539 #define IWMProfileManager2_LoadProfileByData(This,pwszProfile,ppProfile) (This)->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile)
2540 #define IWMProfileManager2_SaveProfile(This,pIWMProfile,pwszProfile,pdwLength) (This)->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength)
2541 #define IWMProfileManager2_GetSystemProfileCount(This,pcProfiles) (This)->lpVtbl->GetSystemProfileCount(This,pcProfiles)
2542 #define IWMProfileManager2_LoadSystemProfile(This,dwProfileIndex,ppProfile) (This)->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile)
2543 /*** IWMProfileManager2 methods ***/
2544 #define IWMProfileManager2_GetSystemProfileVersion(This,version) (This)->lpVtbl->GetSystemProfileVersion(This,version)
2545 #define IWMProfileManager2_SetSystemProfileVersion(This,version) (This)->lpVtbl->SetSystemProfileVersion(This,version)
2546 #else
2547 /*** IUnknown methods ***/
2548 static FORCEINLINE HRESULT IWMProfileManager2_QueryInterface(IWMProfileManager2* This,REFIID riid,void **ppvObject) {
2549     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2550 }
2551 static FORCEINLINE ULONG IWMProfileManager2_AddRef(IWMProfileManager2* This) {
2552     return This->lpVtbl->AddRef(This);
2553 }
2554 static FORCEINLINE ULONG IWMProfileManager2_Release(IWMProfileManager2* This) {
2555     return This->lpVtbl->Release(This);
2556 }
2557 /*** IWMProfileManager methods ***/
2558 static FORCEINLINE HRESULT IWMProfileManager2_CreateEmptyProfile(IWMProfileManager2* This,WMT_VERSION dwVersion,IWMProfile **ppProfile) {
2559     return This->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile);
2560 }
2561 static FORCEINLINE HRESULT IWMProfileManager2_LoadProfileByID(IWMProfileManager2* This,REFGUID guidProfile,IWMProfile **ppProfile) {
2562     return This->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile);
2563 }
2564 static FORCEINLINE HRESULT IWMProfileManager2_LoadProfileByData(IWMProfileManager2* This,const WCHAR *pwszProfile,IWMProfile **ppProfile) {
2565     return This->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile);
2566 }
2567 static FORCEINLINE HRESULT IWMProfileManager2_SaveProfile(IWMProfileManager2* This,IWMProfile *pIWMProfile,WCHAR *pwszProfile,DWORD *pdwLength) {
2568     return This->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength);
2569 }
2570 static FORCEINLINE HRESULT IWMProfileManager2_GetSystemProfileCount(IWMProfileManager2* This,DWORD *pcProfiles) {
2571     return This->lpVtbl->GetSystemProfileCount(This,pcProfiles);
2572 }
2573 static FORCEINLINE HRESULT IWMProfileManager2_LoadSystemProfile(IWMProfileManager2* This,DWORD dwProfileIndex,IWMProfile **ppProfile) {
2574     return This->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile);
2575 }
2576 /*** IWMProfileManager2 methods ***/
2577 static FORCEINLINE HRESULT IWMProfileManager2_GetSystemProfileVersion(IWMProfileManager2* This,WMT_VERSION *version) {
2578     return This->lpVtbl->GetSystemProfileVersion(This,version);
2579 }
2580 static FORCEINLINE HRESULT IWMProfileManager2_SetSystemProfileVersion(IWMProfileManager2* This,WMT_VERSION version) {
2581     return This->lpVtbl->SetSystemProfileVersion(This,version);
2582 }
2583 #endif
2584 #endif
2585 
2586 #endif
2587 
2588 
2589 #endif  /* __IWMProfileManager2_INTERFACE_DEFINED__ */
2590 
2591 HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);
2592 /*****************************************************************************
2593  * IWMCodecInfo interface
2594  */
2595 #ifndef __IWMCodecInfo_INTERFACE_DEFINED__
2596 #define __IWMCodecInfo_INTERFACE_DEFINED__
2597 
2598 DEFINE_GUID(IID_IWMCodecInfo, 0xa970f41e, 0x34de, 0x4a98, 0xb3,0xba, 0xe4,0xb3,0xca,0x75,0x28,0xf0);
2599 #if defined(__cplusplus) && !defined(CINTERFACE)
2600 MIDL_INTERFACE("a970f41e-34de-4a98-b3ba-e4b3ca7528f0")
2601 IWMCodecInfo : public IUnknown
2602 {
2603     virtual HRESULT STDMETHODCALLTYPE GetCodecInfoCount(
2604         REFGUID guid,
2605         DWORD *count) = 0;
2606 
2607     virtual HRESULT STDMETHODCALLTYPE GetCodecFormatCount(
2608         REFGUID guid,
2609         DWORD codecindex,
2610         DWORD *formatcount) = 0;
2611 
2612     virtual HRESULT STDMETHODCALLTYPE GetCodecFormat(
2613         REFGUID guid,
2614         DWORD codecindex,
2615         DWORD formatindex,
2616         IWMStreamConfig **streamconfig) = 0;
2617 
2618 };
2619 #ifdef __CRT_UUID_DECL
2620 __CRT_UUID_DECL(IWMCodecInfo, 0xa970f41e, 0x34de, 0x4a98, 0xb3,0xba, 0xe4,0xb3,0xca,0x75,0x28,0xf0)
2621 #endif
2622 #else
2623 typedef struct IWMCodecInfoVtbl {
2624     BEGIN_INTERFACE
2625 
2626     /*** IUnknown methods ***/
2627     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2628         IWMCodecInfo *This,
2629         REFIID riid,
2630         void **ppvObject);
2631 
2632     ULONG (STDMETHODCALLTYPE *AddRef)(
2633         IWMCodecInfo *This);
2634 
2635     ULONG (STDMETHODCALLTYPE *Release)(
2636         IWMCodecInfo *This);
2637 
2638     /*** IWMCodecInfo methods ***/
2639     HRESULT (STDMETHODCALLTYPE *GetCodecInfoCount)(
2640         IWMCodecInfo *This,
2641         REFGUID guid,
2642         DWORD *count);
2643 
2644     HRESULT (STDMETHODCALLTYPE *GetCodecFormatCount)(
2645         IWMCodecInfo *This,
2646         REFGUID guid,
2647         DWORD codecindex,
2648         DWORD *formatcount);
2649 
2650     HRESULT (STDMETHODCALLTYPE *GetCodecFormat)(
2651         IWMCodecInfo *This,
2652         REFGUID guid,
2653         DWORD codecindex,
2654         DWORD formatindex,
2655         IWMStreamConfig **streamconfig);
2656 
2657     END_INTERFACE
2658 } IWMCodecInfoVtbl;
2659 
2660 interface IWMCodecInfo {
2661     CONST_VTBL IWMCodecInfoVtbl* lpVtbl;
2662 };
2663 
2664 #ifdef COBJMACROS
2665 #ifndef WIDL_C_INLINE_WRAPPERS
2666 /*** IUnknown methods ***/
2667 #define IWMCodecInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2668 #define IWMCodecInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
2669 #define IWMCodecInfo_Release(This) (This)->lpVtbl->Release(This)
2670 /*** IWMCodecInfo methods ***/
2671 #define IWMCodecInfo_GetCodecInfoCount(This,guid,count) (This)->lpVtbl->GetCodecInfoCount(This,guid,count)
2672 #define IWMCodecInfo_GetCodecFormatCount(This,guid,codecindex,formatcount) (This)->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount)
2673 #define IWMCodecInfo_GetCodecFormat(This,guid,codecindex,formatindex,streamconfig) (This)->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig)
2674 #else
2675 /*** IUnknown methods ***/
2676 static FORCEINLINE HRESULT IWMCodecInfo_QueryInterface(IWMCodecInfo* This,REFIID riid,void **ppvObject) {
2677     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2678 }
2679 static FORCEINLINE ULONG IWMCodecInfo_AddRef(IWMCodecInfo* This) {
2680     return This->lpVtbl->AddRef(This);
2681 }
2682 static FORCEINLINE ULONG IWMCodecInfo_Release(IWMCodecInfo* This) {
2683     return This->lpVtbl->Release(This);
2684 }
2685 /*** IWMCodecInfo methods ***/
2686 static FORCEINLINE HRESULT IWMCodecInfo_GetCodecInfoCount(IWMCodecInfo* This,REFGUID guid,DWORD *count) {
2687     return This->lpVtbl->GetCodecInfoCount(This,guid,count);
2688 }
2689 static FORCEINLINE HRESULT IWMCodecInfo_GetCodecFormatCount(IWMCodecInfo* This,REFGUID guid,DWORD codecindex,DWORD *formatcount) {
2690     return This->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount);
2691 }
2692 static FORCEINLINE HRESULT IWMCodecInfo_GetCodecFormat(IWMCodecInfo* This,REFGUID guid,DWORD codecindex,DWORD formatindex,IWMStreamConfig **streamconfig) {
2693     return This->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig);
2694 }
2695 #endif
2696 #endif
2697 
2698 #endif
2699 
2700 
2701 #endif  /* __IWMCodecInfo_INTERFACE_DEFINED__ */
2702 
2703 /*****************************************************************************
2704  * IWMCodecInfo2 interface
2705  */
2706 #ifndef __IWMCodecInfo2_INTERFACE_DEFINED__
2707 #define __IWMCodecInfo2_INTERFACE_DEFINED__
2708 
2709 DEFINE_GUID(IID_IWMCodecInfo2, 0xaa65e273, 0xb686, 0x4056, 0x91,0xec, 0xdd,0x76,0x8d,0x4d,0xf7,0x10);
2710 #if defined(__cplusplus) && !defined(CINTERFACE)
2711 MIDL_INTERFACE("aa65e273-b686-4056-91ec-dd768d4df710")
2712 IWMCodecInfo2 : public IWMCodecInfo
2713 {
2714     virtual HRESULT STDMETHODCALLTYPE GetCodecName(
2715         REFGUID guid,
2716         DWORD codecindex,
2717         WCHAR *name,
2718         DWORD *namesize) = 0;
2719 
2720     virtual HRESULT STDMETHODCALLTYPE GetCodecFormatDesc(
2721         REFGUID guid,
2722         DWORD codecindex,
2723         DWORD formatindex,
2724         IWMStreamConfig **streamconfig,
2725         WCHAR *description,
2726         DWORD *descrsize) = 0;
2727 
2728 };
2729 #ifdef __CRT_UUID_DECL
2730 __CRT_UUID_DECL(IWMCodecInfo2, 0xaa65e273, 0xb686, 0x4056, 0x91,0xec, 0xdd,0x76,0x8d,0x4d,0xf7,0x10)
2731 #endif
2732 #else
2733 typedef struct IWMCodecInfo2Vtbl {
2734     BEGIN_INTERFACE
2735 
2736     /*** IUnknown methods ***/
2737     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2738         IWMCodecInfo2 *This,
2739         REFIID riid,
2740         void **ppvObject);
2741 
2742     ULONG (STDMETHODCALLTYPE *AddRef)(
2743         IWMCodecInfo2 *This);
2744 
2745     ULONG (STDMETHODCALLTYPE *Release)(
2746         IWMCodecInfo2 *This);
2747 
2748     /*** IWMCodecInfo methods ***/
2749     HRESULT (STDMETHODCALLTYPE *GetCodecInfoCount)(
2750         IWMCodecInfo2 *This,
2751         REFGUID guid,
2752         DWORD *count);
2753 
2754     HRESULT (STDMETHODCALLTYPE *GetCodecFormatCount)(
2755         IWMCodecInfo2 *This,
2756         REFGUID guid,
2757         DWORD codecindex,
2758         DWORD *formatcount);
2759 
2760     HRESULT (STDMETHODCALLTYPE *GetCodecFormat)(
2761         IWMCodecInfo2 *This,
2762         REFGUID guid,
2763         DWORD codecindex,
2764         DWORD formatindex,
2765         IWMStreamConfig **streamconfig);
2766 
2767     /*** IWMCodecInfo2 methods ***/
2768     HRESULT (STDMETHODCALLTYPE *GetCodecName)(
2769         IWMCodecInfo2 *This,
2770         REFGUID guid,
2771         DWORD codecindex,
2772         WCHAR *name,
2773         DWORD *namesize);
2774 
2775     HRESULT (STDMETHODCALLTYPE *GetCodecFormatDesc)(
2776         IWMCodecInfo2 *This,
2777         REFGUID guid,
2778         DWORD codecindex,
2779         DWORD formatindex,
2780         IWMStreamConfig **streamconfig,
2781         WCHAR *description,
2782         DWORD *descrsize);
2783 
2784     END_INTERFACE
2785 } IWMCodecInfo2Vtbl;
2786 
2787 interface IWMCodecInfo2 {
2788     CONST_VTBL IWMCodecInfo2Vtbl* lpVtbl;
2789 };
2790 
2791 #ifdef COBJMACROS
2792 #ifndef WIDL_C_INLINE_WRAPPERS
2793 /*** IUnknown methods ***/
2794 #define IWMCodecInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2795 #define IWMCodecInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
2796 #define IWMCodecInfo2_Release(This) (This)->lpVtbl->Release(This)
2797 /*** IWMCodecInfo methods ***/
2798 #define IWMCodecInfo2_GetCodecInfoCount(This,guid,count) (This)->lpVtbl->GetCodecInfoCount(This,guid,count)
2799 #define IWMCodecInfo2_GetCodecFormatCount(This,guid,codecindex,formatcount) (This)->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount)
2800 #define IWMCodecInfo2_GetCodecFormat(This,guid,codecindex,formatindex,streamconfig) (This)->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig)
2801 /*** IWMCodecInfo2 methods ***/
2802 #define IWMCodecInfo2_GetCodecName(This,guid,codecindex,name,namesize) (This)->lpVtbl->GetCodecName(This,guid,codecindex,name,namesize)
2803 #define IWMCodecInfo2_GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize) (This)->lpVtbl->GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize)
2804 #else
2805 /*** IUnknown methods ***/
2806 static FORCEINLINE HRESULT IWMCodecInfo2_QueryInterface(IWMCodecInfo2* This,REFIID riid,void **ppvObject) {
2807     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2808 }
2809 static FORCEINLINE ULONG IWMCodecInfo2_AddRef(IWMCodecInfo2* This) {
2810     return This->lpVtbl->AddRef(This);
2811 }
2812 static FORCEINLINE ULONG IWMCodecInfo2_Release(IWMCodecInfo2* This) {
2813     return This->lpVtbl->Release(This);
2814 }
2815 /*** IWMCodecInfo methods ***/
2816 static FORCEINLINE HRESULT IWMCodecInfo2_GetCodecInfoCount(IWMCodecInfo2* This,REFGUID guid,DWORD *count) {
2817     return This->lpVtbl->GetCodecInfoCount(This,guid,count);
2818 }
2819 static FORCEINLINE HRESULT IWMCodecInfo2_GetCodecFormatCount(IWMCodecInfo2* This,REFGUID guid,DWORD codecindex,DWORD *formatcount) {
2820     return This->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount);
2821 }
2822 static FORCEINLINE HRESULT IWMCodecInfo2_GetCodecFormat(IWMCodecInfo2* This,REFGUID guid,DWORD codecindex,DWORD formatindex,IWMStreamConfig **streamconfig) {
2823     return This->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig);
2824 }
2825 /*** IWMCodecInfo2 methods ***/
2826 static FORCEINLINE HRESULT IWMCodecInfo2_GetCodecName(IWMCodecInfo2* This,REFGUID guid,DWORD codecindex,WCHAR *name,DWORD *namesize) {
2827     return This->lpVtbl->GetCodecName(This,guid,codecindex,name,namesize);
2828 }
2829 static FORCEINLINE HRESULT IWMCodecInfo2_GetCodecFormatDesc(IWMCodecInfo2* This,REFGUID guid,DWORD codecindex,DWORD formatindex,IWMStreamConfig **streamconfig,WCHAR *description,DWORD *descrsize) {
2830     return This->lpVtbl->GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize);
2831 }
2832 #endif
2833 #endif
2834 
2835 #endif
2836 
2837 
2838 #endif  /* __IWMCodecInfo2_INTERFACE_DEFINED__ */
2839 
2840 /*****************************************************************************
2841  * IWMCodecInfo3 interface
2842  */
2843 #ifndef __IWMCodecInfo3_INTERFACE_DEFINED__
2844 #define __IWMCodecInfo3_INTERFACE_DEFINED__
2845 
2846 DEFINE_GUID(IID_IWMCodecInfo3, 0x7e51f487, 0x4d93, 0x4f98, 0x8a,0xb4, 0x27,0xd0,0x56,0x5a,0xdc,0x51);
2847 #if defined(__cplusplus) && !defined(CINTERFACE)
2848 MIDL_INTERFACE("7e51f487-4d93-4f98-8ab4-27d0565adc51")
2849 IWMCodecInfo3 : public IWMCodecInfo2
2850 {
2851     virtual HRESULT STDMETHODCALLTYPE GetCodecFormatProp(
2852         REFGUID guid,
2853         DWORD codecindex,
2854         DWORD formatindex,
2855         const WCHAR *name,
2856         WMT_ATTR_DATATYPE *type,
2857         BYTE *value,
2858         DWORD *size) = 0;
2859 
2860     virtual HRESULT STDMETHODCALLTYPE GetCodecProp(
2861         REFGUID guid,
2862         DWORD codecindex,
2863         const WCHAR *name,
2864         WMT_ATTR_DATATYPE *type,
2865         BYTE *value,
2866         DWORD *size) = 0;
2867 
2868     virtual HRESULT STDMETHODCALLTYPE SetCodecEnumerationSetting(
2869         REFGUID guid,
2870         DWORD codecindex,
2871         const WCHAR *name,
2872         WMT_ATTR_DATATYPE type,
2873         const BYTE *value,
2874         DWORD size) = 0;
2875 
2876     virtual HRESULT STDMETHODCALLTYPE GetCodecEnumerationSetting(
2877         REFGUID guid,
2878         DWORD codecindex,
2879         const WCHAR *name,
2880         WMT_ATTR_DATATYPE *type,
2881         BYTE *value,
2882         DWORD *size) = 0;
2883 
2884 };
2885 #ifdef __CRT_UUID_DECL
2886 __CRT_UUID_DECL(IWMCodecInfo3, 0x7e51f487, 0x4d93, 0x4f98, 0x8a,0xb4, 0x27,0xd0,0x56,0x5a,0xdc,0x51)
2887 #endif
2888 #else
2889 typedef struct IWMCodecInfo3Vtbl {
2890     BEGIN_INTERFACE
2891 
2892     /*** IUnknown methods ***/
2893     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2894         IWMCodecInfo3 *This,
2895         REFIID riid,
2896         void **ppvObject);
2897 
2898     ULONG (STDMETHODCALLTYPE *AddRef)(
2899         IWMCodecInfo3 *This);
2900 
2901     ULONG (STDMETHODCALLTYPE *Release)(
2902         IWMCodecInfo3 *This);
2903 
2904     /*** IWMCodecInfo methods ***/
2905     HRESULT (STDMETHODCALLTYPE *GetCodecInfoCount)(
2906         IWMCodecInfo3 *This,
2907         REFGUID guid,
2908         DWORD *count);
2909 
2910     HRESULT (STDMETHODCALLTYPE *GetCodecFormatCount)(
2911         IWMCodecInfo3 *This,
2912         REFGUID guid,
2913         DWORD codecindex,
2914         DWORD *formatcount);
2915 
2916     HRESULT (STDMETHODCALLTYPE *GetCodecFormat)(
2917         IWMCodecInfo3 *This,
2918         REFGUID guid,
2919         DWORD codecindex,
2920         DWORD formatindex,
2921         IWMStreamConfig **streamconfig);
2922 
2923     /*** IWMCodecInfo2 methods ***/
2924     HRESULT (STDMETHODCALLTYPE *GetCodecName)(
2925         IWMCodecInfo3 *This,
2926         REFGUID guid,
2927         DWORD codecindex,
2928         WCHAR *name,
2929         DWORD *namesize);
2930 
2931     HRESULT (STDMETHODCALLTYPE *GetCodecFormatDesc)(
2932         IWMCodecInfo3 *This,
2933         REFGUID guid,
2934         DWORD codecindex,
2935         DWORD formatindex,
2936         IWMStreamConfig **streamconfig,
2937         WCHAR *description,
2938         DWORD *descrsize);
2939 
2940     /*** IWMCodecInfo3 methods ***/
2941     HRESULT (STDMETHODCALLTYPE *GetCodecFormatProp)(
2942         IWMCodecInfo3 *This,
2943         REFGUID guid,
2944         DWORD codecindex,
2945         DWORD formatindex,
2946         const WCHAR *name,
2947         WMT_ATTR_DATATYPE *type,
2948         BYTE *value,
2949         DWORD *size);
2950 
2951     HRESULT (STDMETHODCALLTYPE *GetCodecProp)(
2952         IWMCodecInfo3 *This,
2953         REFGUID guid,
2954         DWORD codecindex,
2955         const WCHAR *name,
2956         WMT_ATTR_DATATYPE *type,
2957         BYTE *value,
2958         DWORD *size);
2959 
2960     HRESULT (STDMETHODCALLTYPE *SetCodecEnumerationSetting)(
2961         IWMCodecInfo3 *This,
2962         REFGUID guid,
2963         DWORD codecindex,
2964         const WCHAR *name,
2965         WMT_ATTR_DATATYPE type,
2966         const BYTE *value,
2967         DWORD size);
2968 
2969     HRESULT (STDMETHODCALLTYPE *GetCodecEnumerationSetting)(
2970         IWMCodecInfo3 *This,
2971         REFGUID guid,
2972         DWORD codecindex,
2973         const WCHAR *name,
2974         WMT_ATTR_DATATYPE *type,
2975         BYTE *value,
2976         DWORD *size);
2977 
2978     END_INTERFACE
2979 } IWMCodecInfo3Vtbl;
2980 
2981 interface IWMCodecInfo3 {
2982     CONST_VTBL IWMCodecInfo3Vtbl* lpVtbl;
2983 };
2984 
2985 #ifdef COBJMACROS
2986 #ifndef WIDL_C_INLINE_WRAPPERS
2987 /*** IUnknown methods ***/
2988 #define IWMCodecInfo3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2989 #define IWMCodecInfo3_AddRef(This) (This)->lpVtbl->AddRef(This)
2990 #define IWMCodecInfo3_Release(This) (This)->lpVtbl->Release(This)
2991 /*** IWMCodecInfo methods ***/
2992 #define IWMCodecInfo3_GetCodecInfoCount(This,guid,count) (This)->lpVtbl->GetCodecInfoCount(This,guid,count)
2993 #define IWMCodecInfo3_GetCodecFormatCount(This,guid,codecindex,formatcount) (This)->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount)
2994 #define IWMCodecInfo3_GetCodecFormat(This,guid,codecindex,formatindex,streamconfig) (This)->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig)
2995 /*** IWMCodecInfo2 methods ***/
2996 #define IWMCodecInfo3_GetCodecName(This,guid,codecindex,name,namesize) (This)->lpVtbl->GetCodecName(This,guid,codecindex,name,namesize)
2997 #define IWMCodecInfo3_GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize) (This)->lpVtbl->GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize)
2998 /*** IWMCodecInfo3 methods ***/
2999 #define IWMCodecInfo3_GetCodecFormatProp(This,guid,codecindex,formatindex,name,type,value,size) (This)->lpVtbl->GetCodecFormatProp(This,guid,codecindex,formatindex,name,type,value,size)
3000 #define IWMCodecInfo3_GetCodecProp(This,guid,codecindex,name,type,value,size) (This)->lpVtbl->GetCodecProp(This,guid,codecindex,name,type,value,size)
3001 #define IWMCodecInfo3_SetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size) (This)->lpVtbl->SetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size)
3002 #define IWMCodecInfo3_GetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size) (This)->lpVtbl->GetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size)
3003 #else
3004 /*** IUnknown methods ***/
3005 static FORCEINLINE HRESULT IWMCodecInfo3_QueryInterface(IWMCodecInfo3* This,REFIID riid,void **ppvObject) {
3006     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3007 }
3008 static FORCEINLINE ULONG IWMCodecInfo3_AddRef(IWMCodecInfo3* This) {
3009     return This->lpVtbl->AddRef(This);
3010 }
3011 static FORCEINLINE ULONG IWMCodecInfo3_Release(IWMCodecInfo3* This) {
3012     return This->lpVtbl->Release(This);
3013 }
3014 /*** IWMCodecInfo methods ***/
3015 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecInfoCount(IWMCodecInfo3* This,REFGUID guid,DWORD *count) {
3016     return This->lpVtbl->GetCodecInfoCount(This,guid,count);
3017 }
3018 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecFormatCount(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,DWORD *formatcount) {
3019     return This->lpVtbl->GetCodecFormatCount(This,guid,codecindex,formatcount);
3020 }
3021 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecFormat(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,DWORD formatindex,IWMStreamConfig **streamconfig) {
3022     return This->lpVtbl->GetCodecFormat(This,guid,codecindex,formatindex,streamconfig);
3023 }
3024 /*** IWMCodecInfo2 methods ***/
3025 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecName(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,WCHAR *name,DWORD *namesize) {
3026     return This->lpVtbl->GetCodecName(This,guid,codecindex,name,namesize);
3027 }
3028 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecFormatDesc(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,DWORD formatindex,IWMStreamConfig **streamconfig,WCHAR *description,DWORD *descrsize) {
3029     return This->lpVtbl->GetCodecFormatDesc(This,guid,codecindex,formatindex,streamconfig,description,descrsize);
3030 }
3031 /*** IWMCodecInfo3 methods ***/
3032 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecFormatProp(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,DWORD formatindex,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
3033     return This->lpVtbl->GetCodecFormatProp(This,guid,codecindex,formatindex,name,type,value,size);
3034 }
3035 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecProp(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
3036     return This->lpVtbl->GetCodecProp(This,guid,codecindex,name,type,value,size);
3037 }
3038 static FORCEINLINE HRESULT IWMCodecInfo3_SetCodecEnumerationSetting(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,const WCHAR *name,WMT_ATTR_DATATYPE type,const BYTE *value,DWORD size) {
3039     return This->lpVtbl->SetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size);
3040 }
3041 static FORCEINLINE HRESULT IWMCodecInfo3_GetCodecEnumerationSetting(IWMCodecInfo3* This,REFGUID guid,DWORD codecindex,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
3042     return This->lpVtbl->GetCodecEnumerationSetting(This,guid,codecindex,name,type,value,size);
3043 }
3044 #endif
3045 #endif
3046 
3047 #endif
3048 
3049 
3050 #endif  /* __IWMCodecInfo3_INTERFACE_DEFINED__ */
3051 
3052 static const WCHAR g_wszNumPasses[] = {'_','P','A','S','S','E','S','U','S','E','D',0};
3053 static const WCHAR g_wszVBREnabled[] = {'_','V','B','R','E','N','A','B','L','E','D',0};
3054 /*****************************************************************************
3055  * IWMMediaProps interface
3056  */
3057 #ifndef __IWMMediaProps_INTERFACE_DEFINED__
3058 #define __IWMMediaProps_INTERFACE_DEFINED__
3059 
3060 DEFINE_GUID(IID_IWMMediaProps, 0x96406bce, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
3061 #if defined(__cplusplus) && !defined(CINTERFACE)
3062 MIDL_INTERFACE("96406bce-2b2b-11d3-b36b-00c04f6108ff")
3063 IWMMediaProps : public IUnknown
3064 {
3065     virtual HRESULT STDMETHODCALLTYPE GetType(
3066         GUID *pguidType) = 0;
3067 
3068     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
3069         WM_MEDIA_TYPE *pType,
3070         DWORD *pcbType) = 0;
3071 
3072     virtual HRESULT STDMETHODCALLTYPE SetMediaType(
3073         WM_MEDIA_TYPE *pType) = 0;
3074 
3075 };
3076 #ifdef __CRT_UUID_DECL
3077 __CRT_UUID_DECL(IWMMediaProps, 0x96406bce, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
3078 #endif
3079 #else
3080 typedef struct IWMMediaPropsVtbl {
3081     BEGIN_INTERFACE
3082 
3083     /*** IUnknown methods ***/
3084     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3085         IWMMediaProps *This,
3086         REFIID riid,
3087         void **ppvObject);
3088 
3089     ULONG (STDMETHODCALLTYPE *AddRef)(
3090         IWMMediaProps *This);
3091 
3092     ULONG (STDMETHODCALLTYPE *Release)(
3093         IWMMediaProps *This);
3094 
3095     /*** IWMMediaProps methods ***/
3096     HRESULT (STDMETHODCALLTYPE *GetType)(
3097         IWMMediaProps *This,
3098         GUID *pguidType);
3099 
3100     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
3101         IWMMediaProps *This,
3102         WM_MEDIA_TYPE *pType,
3103         DWORD *pcbType);
3104 
3105     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
3106         IWMMediaProps *This,
3107         WM_MEDIA_TYPE *pType);
3108 
3109     END_INTERFACE
3110 } IWMMediaPropsVtbl;
3111 
3112 interface IWMMediaProps {
3113     CONST_VTBL IWMMediaPropsVtbl* lpVtbl;
3114 };
3115 
3116 #ifdef COBJMACROS
3117 #ifndef WIDL_C_INLINE_WRAPPERS
3118 /*** IUnknown methods ***/
3119 #define IWMMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3120 #define IWMMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
3121 #define IWMMediaProps_Release(This) (This)->lpVtbl->Release(This)
3122 /*** IWMMediaProps methods ***/
3123 #define IWMMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
3124 #define IWMMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
3125 #define IWMMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
3126 #else
3127 /*** IUnknown methods ***/
3128 static FORCEINLINE HRESULT IWMMediaProps_QueryInterface(IWMMediaProps* This,REFIID riid,void **ppvObject) {
3129     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3130 }
3131 static FORCEINLINE ULONG IWMMediaProps_AddRef(IWMMediaProps* This) {
3132     return This->lpVtbl->AddRef(This);
3133 }
3134 static FORCEINLINE ULONG IWMMediaProps_Release(IWMMediaProps* This) {
3135     return This->lpVtbl->Release(This);
3136 }
3137 /*** IWMMediaProps methods ***/
3138 static FORCEINLINE HRESULT IWMMediaProps_GetType(IWMMediaProps* This,GUID *pguidType) {
3139     return This->lpVtbl->GetType(This,pguidType);
3140 }
3141 static FORCEINLINE HRESULT IWMMediaProps_GetMediaType(IWMMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
3142     return This->lpVtbl->GetMediaType(This,pType,pcbType);
3143 }
3144 static FORCEINLINE HRESULT IWMMediaProps_SetMediaType(IWMMediaProps* This,WM_MEDIA_TYPE *pType) {
3145     return This->lpVtbl->SetMediaType(This,pType);
3146 }
3147 #endif
3148 #endif
3149 
3150 #endif
3151 
3152 
3153 #endif  /* __IWMMediaProps_INTERFACE_DEFINED__ */
3154 
3155 /*****************************************************************************
3156  * IWMOutputMediaProps interface
3157  */
3158 #ifndef __IWMOutputMediaProps_INTERFACE_DEFINED__
3159 #define __IWMOutputMediaProps_INTERFACE_DEFINED__
3160 
3161 DEFINE_GUID(IID_IWMOutputMediaProps, 0x96406bd7, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
3162 #if defined(__cplusplus) && !defined(CINTERFACE)
3163 MIDL_INTERFACE("96406bd7-2b2b-11d3-b36b-00c04f6108ff")
3164 IWMOutputMediaProps : public IWMMediaProps
3165 {
3166     virtual HRESULT STDMETHODCALLTYPE GetStreamGroupName(
3167         WCHAR *pwszName,
3168         WORD *pcchName) = 0;
3169 
3170     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
3171         WCHAR *pwszName,
3172         WORD *pcchName) = 0;
3173 
3174 };
3175 #ifdef __CRT_UUID_DECL
3176 __CRT_UUID_DECL(IWMOutputMediaProps, 0x96406bd7, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
3177 #endif
3178 #else
3179 typedef struct IWMOutputMediaPropsVtbl {
3180     BEGIN_INTERFACE
3181 
3182     /*** IUnknown methods ***/
3183     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3184         IWMOutputMediaProps *This,
3185         REFIID riid,
3186         void **ppvObject);
3187 
3188     ULONG (STDMETHODCALLTYPE *AddRef)(
3189         IWMOutputMediaProps *This);
3190 
3191     ULONG (STDMETHODCALLTYPE *Release)(
3192         IWMOutputMediaProps *This);
3193 
3194     /*** IWMMediaProps methods ***/
3195     HRESULT (STDMETHODCALLTYPE *GetType)(
3196         IWMOutputMediaProps *This,
3197         GUID *pguidType);
3198 
3199     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
3200         IWMOutputMediaProps *This,
3201         WM_MEDIA_TYPE *pType,
3202         DWORD *pcbType);
3203 
3204     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
3205         IWMOutputMediaProps *This,
3206         WM_MEDIA_TYPE *pType);
3207 
3208     /*** IWMOutputMediaProps methods ***/
3209     HRESULT (STDMETHODCALLTYPE *GetStreamGroupName)(
3210         IWMOutputMediaProps *This,
3211         WCHAR *pwszName,
3212         WORD *pcchName);
3213 
3214     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
3215         IWMOutputMediaProps *This,
3216         WCHAR *pwszName,
3217         WORD *pcchName);
3218 
3219     END_INTERFACE
3220 } IWMOutputMediaPropsVtbl;
3221 
3222 interface IWMOutputMediaProps {
3223     CONST_VTBL IWMOutputMediaPropsVtbl* lpVtbl;
3224 };
3225 
3226 #ifdef COBJMACROS
3227 #ifndef WIDL_C_INLINE_WRAPPERS
3228 /*** IUnknown methods ***/
3229 #define IWMOutputMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3230 #define IWMOutputMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
3231 #define IWMOutputMediaProps_Release(This) (This)->lpVtbl->Release(This)
3232 /*** IWMMediaProps methods ***/
3233 #define IWMOutputMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
3234 #define IWMOutputMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
3235 #define IWMOutputMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
3236 /*** IWMOutputMediaProps methods ***/
3237 #define IWMOutputMediaProps_GetStreamGroupName(This,pwszName,pcchName) (This)->lpVtbl->GetStreamGroupName(This,pwszName,pcchName)
3238 #define IWMOutputMediaProps_GetConnectionName(This,pwszName,pcchName) (This)->lpVtbl->GetConnectionName(This,pwszName,pcchName)
3239 #else
3240 /*** IUnknown methods ***/
3241 static FORCEINLINE HRESULT IWMOutputMediaProps_QueryInterface(IWMOutputMediaProps* This,REFIID riid,void **ppvObject) {
3242     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3243 }
3244 static FORCEINLINE ULONG IWMOutputMediaProps_AddRef(IWMOutputMediaProps* This) {
3245     return This->lpVtbl->AddRef(This);
3246 }
3247 static FORCEINLINE ULONG IWMOutputMediaProps_Release(IWMOutputMediaProps* This) {
3248     return This->lpVtbl->Release(This);
3249 }
3250 /*** IWMMediaProps methods ***/
3251 static FORCEINLINE HRESULT IWMOutputMediaProps_GetType(IWMOutputMediaProps* This,GUID *pguidType) {
3252     return This->lpVtbl->GetType(This,pguidType);
3253 }
3254 static FORCEINLINE HRESULT IWMOutputMediaProps_GetMediaType(IWMOutputMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
3255     return This->lpVtbl->GetMediaType(This,pType,pcbType);
3256 }
3257 static FORCEINLINE HRESULT IWMOutputMediaProps_SetMediaType(IWMOutputMediaProps* This,WM_MEDIA_TYPE *pType) {
3258     return This->lpVtbl->SetMediaType(This,pType);
3259 }
3260 /*** IWMOutputMediaProps methods ***/
3261 static FORCEINLINE HRESULT IWMOutputMediaProps_GetStreamGroupName(IWMOutputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
3262     return This->lpVtbl->GetStreamGroupName(This,pwszName,pcchName);
3263 }
3264 static FORCEINLINE HRESULT IWMOutputMediaProps_GetConnectionName(IWMOutputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
3265     return This->lpVtbl->GetConnectionName(This,pwszName,pcchName);
3266 }
3267 #endif
3268 #endif
3269 
3270 #endif
3271 
3272 
3273 #endif  /* __IWMOutputMediaProps_INTERFACE_DEFINED__ */
3274 
3275 /*****************************************************************************
3276  * IWMMetadataEditor interface
3277  */
3278 #ifndef __IWMMetadataEditor_INTERFACE_DEFINED__
3279 #define __IWMMetadataEditor_INTERFACE_DEFINED__
3280 
3281 DEFINE_GUID(IID_IWMMetadataEditor, 0x96406bd9, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
3282 #if defined(__cplusplus) && !defined(CINTERFACE)
3283 MIDL_INTERFACE("96406bd9-2b2b-11d3-b36b-00c04f6108ff")
3284 IWMMetadataEditor : public IUnknown
3285 {
3286     virtual HRESULT STDMETHODCALLTYPE Open(
3287         const WCHAR *pwszFilename) = 0;
3288 
3289     virtual HRESULT STDMETHODCALLTYPE Close(
3290         ) = 0;
3291 
3292     virtual HRESULT STDMETHODCALLTYPE Flush(
3293         ) = 0;
3294 
3295 };
3296 #ifdef __CRT_UUID_DECL
3297 __CRT_UUID_DECL(IWMMetadataEditor, 0x96406bd9, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
3298 #endif
3299 #else
3300 typedef struct IWMMetadataEditorVtbl {
3301     BEGIN_INTERFACE
3302 
3303     /*** IUnknown methods ***/
3304     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3305         IWMMetadataEditor *This,
3306         REFIID riid,
3307         void **ppvObject);
3308 
3309     ULONG (STDMETHODCALLTYPE *AddRef)(
3310         IWMMetadataEditor *This);
3311 
3312     ULONG (STDMETHODCALLTYPE *Release)(
3313         IWMMetadataEditor *This);
3314 
3315     /*** IWMMetadataEditor methods ***/
3316     HRESULT (STDMETHODCALLTYPE *Open)(
3317         IWMMetadataEditor *This,
3318         const WCHAR *pwszFilename);
3319 
3320     HRESULT (STDMETHODCALLTYPE *Close)(
3321         IWMMetadataEditor *This);
3322 
3323     HRESULT (STDMETHODCALLTYPE *Flush)(
3324         IWMMetadataEditor *This);
3325 
3326     END_INTERFACE
3327 } IWMMetadataEditorVtbl;
3328 
3329 interface IWMMetadataEditor {
3330     CONST_VTBL IWMMetadataEditorVtbl* lpVtbl;
3331 };
3332 
3333 #ifdef COBJMACROS
3334 #ifndef WIDL_C_INLINE_WRAPPERS
3335 /*** IUnknown methods ***/
3336 #define IWMMetadataEditor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3337 #define IWMMetadataEditor_AddRef(This) (This)->lpVtbl->AddRef(This)
3338 #define IWMMetadataEditor_Release(This) (This)->lpVtbl->Release(This)
3339 /*** IWMMetadataEditor methods ***/
3340 #define IWMMetadataEditor_Open(This,pwszFilename) (This)->lpVtbl->Open(This,pwszFilename)
3341 #define IWMMetadataEditor_Close(This) (This)->lpVtbl->Close(This)
3342 #define IWMMetadataEditor_Flush(This) (This)->lpVtbl->Flush(This)
3343 #else
3344 /*** IUnknown methods ***/
3345 static FORCEINLINE HRESULT IWMMetadataEditor_QueryInterface(IWMMetadataEditor* This,REFIID riid,void **ppvObject) {
3346     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3347 }
3348 static FORCEINLINE ULONG IWMMetadataEditor_AddRef(IWMMetadataEditor* This) {
3349     return This->lpVtbl->AddRef(This);
3350 }
3351 static FORCEINLINE ULONG IWMMetadataEditor_Release(IWMMetadataEditor* This) {
3352     return This->lpVtbl->Release(This);
3353 }
3354 /*** IWMMetadataEditor methods ***/
3355 static FORCEINLINE HRESULT IWMMetadataEditor_Open(IWMMetadataEditor* This,const WCHAR *pwszFilename) {
3356     return This->lpVtbl->Open(This,pwszFilename);
3357 }
3358 static FORCEINLINE HRESULT IWMMetadataEditor_Close(IWMMetadataEditor* This) {
3359     return This->lpVtbl->Close(This);
3360 }
3361 static FORCEINLINE HRESULT IWMMetadataEditor_Flush(IWMMetadataEditor* This) {
3362     return This->lpVtbl->Flush(This);
3363 }
3364 #endif
3365 #endif
3366 
3367 #endif
3368 
3369 
3370 #endif  /* __IWMMetadataEditor_INTERFACE_DEFINED__ */
3371 
3372 /*****************************************************************************
3373  * IWMReader interface
3374  */
3375 #ifndef __IWMReader_INTERFACE_DEFINED__
3376 #define __IWMReader_INTERFACE_DEFINED__
3377 
3378 DEFINE_GUID(IID_IWMReader, 0x96406bd6, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
3379 #if defined(__cplusplus) && !defined(CINTERFACE)
3380 MIDL_INTERFACE("96406bd6-2b2b-11d3-b36b-00c04f6108ff")
3381 IWMReader : public IUnknown
3382 {
3383     virtual HRESULT STDMETHODCALLTYPE Open(
3384         const WCHAR *pwszURL,
3385         IWMReaderCallback *pCallback,
3386         void *pvContext) = 0;
3387 
3388     virtual HRESULT STDMETHODCALLTYPE Close(
3389         ) = 0;
3390 
3391     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
3392         DWORD *pcOutputs) = 0;
3393 
3394     virtual HRESULT STDMETHODCALLTYPE GetOutputProps(
3395         DWORD dwOutputNum,
3396         IWMOutputMediaProps **ppOutput) = 0;
3397 
3398     virtual HRESULT STDMETHODCALLTYPE SetOutputProps(
3399         DWORD dwOutputNum,
3400         IWMOutputMediaProps *pOutput) = 0;
3401 
3402     virtual HRESULT STDMETHODCALLTYPE GetOutputFormatCount(
3403         DWORD dwOutputNumber,
3404         DWORD *pcFormats) = 0;
3405 
3406     virtual HRESULT STDMETHODCALLTYPE GetOutputFormat(
3407         DWORD dwOutputNumber,
3408         DWORD dwFormatNumber,
3409         IWMOutputMediaProps **ppProps) = 0;
3410 
3411     virtual HRESULT STDMETHODCALLTYPE Start(
3412         QWORD cnsStart,
3413         QWORD cnsDuration,
3414         float fRate,
3415         void *pvContext) = 0;
3416 
3417     virtual HRESULT STDMETHODCALLTYPE Stop(
3418         ) = 0;
3419 
3420     virtual HRESULT STDMETHODCALLTYPE Pause(
3421         ) = 0;
3422 
3423     virtual HRESULT STDMETHODCALLTYPE Resume(
3424         ) = 0;
3425 
3426 };
3427 #ifdef __CRT_UUID_DECL
3428 __CRT_UUID_DECL(IWMReader, 0x96406bd6, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
3429 #endif
3430 #else
3431 typedef struct IWMReaderVtbl {
3432     BEGIN_INTERFACE
3433 
3434     /*** IUnknown methods ***/
3435     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3436         IWMReader *This,
3437         REFIID riid,
3438         void **ppvObject);
3439 
3440     ULONG (STDMETHODCALLTYPE *AddRef)(
3441         IWMReader *This);
3442 
3443     ULONG (STDMETHODCALLTYPE *Release)(
3444         IWMReader *This);
3445 
3446     /*** IWMReader methods ***/
3447     HRESULT (STDMETHODCALLTYPE *Open)(
3448         IWMReader *This,
3449         const WCHAR *pwszURL,
3450         IWMReaderCallback *pCallback,
3451         void *pvContext);
3452 
3453     HRESULT (STDMETHODCALLTYPE *Close)(
3454         IWMReader *This);
3455 
3456     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
3457         IWMReader *This,
3458         DWORD *pcOutputs);
3459 
3460     HRESULT (STDMETHODCALLTYPE *GetOutputProps)(
3461         IWMReader *This,
3462         DWORD dwOutputNum,
3463         IWMOutputMediaProps **ppOutput);
3464 
3465     HRESULT (STDMETHODCALLTYPE *SetOutputProps)(
3466         IWMReader *This,
3467         DWORD dwOutputNum,
3468         IWMOutputMediaProps *pOutput);
3469 
3470     HRESULT (STDMETHODCALLTYPE *GetOutputFormatCount)(
3471         IWMReader *This,
3472         DWORD dwOutputNumber,
3473         DWORD *pcFormats);
3474 
3475     HRESULT (STDMETHODCALLTYPE *GetOutputFormat)(
3476         IWMReader *This,
3477         DWORD dwOutputNumber,
3478         DWORD dwFormatNumber,
3479         IWMOutputMediaProps **ppProps);
3480 
3481     HRESULT (STDMETHODCALLTYPE *Start)(
3482         IWMReader *This,
3483         QWORD cnsStart,
3484         QWORD cnsDuration,
3485         float fRate,
3486         void *pvContext);
3487 
3488     HRESULT (STDMETHODCALLTYPE *Stop)(
3489         IWMReader *This);
3490 
3491     HRESULT (STDMETHODCALLTYPE *Pause)(
3492         IWMReader *This);
3493 
3494     HRESULT (STDMETHODCALLTYPE *Resume)(
3495         IWMReader *This);
3496 
3497     END_INTERFACE
3498 } IWMReaderVtbl;
3499 
3500 interface IWMReader {
3501     CONST_VTBL IWMReaderVtbl* lpVtbl;
3502 };
3503 
3504 #ifdef COBJMACROS
3505 #ifndef WIDL_C_INLINE_WRAPPERS
3506 /*** IUnknown methods ***/
3507 #define IWMReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3508 #define IWMReader_AddRef(This) (This)->lpVtbl->AddRef(This)
3509 #define IWMReader_Release(This) (This)->lpVtbl->Release(This)
3510 /*** IWMReader methods ***/
3511 #define IWMReader_Open(This,pwszURL,pCallback,pvContext) (This)->lpVtbl->Open(This,pwszURL,pCallback,pvContext)
3512 #define IWMReader_Close(This) (This)->lpVtbl->Close(This)
3513 #define IWMReader_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
3514 #define IWMReader_GetOutputProps(This,dwOutputNum,ppOutput) (This)->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput)
3515 #define IWMReader_SetOutputProps(This,dwOutputNum,pOutput) (This)->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput)
3516 #define IWMReader_GetOutputFormatCount(This,dwOutputNumber,pcFormats) (This)->lpVtbl->GetOutputFormatCount(This,dwOutputNumber,pcFormats)
3517 #define IWMReader_GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps) (This)->lpVtbl->GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps)
3518 #define IWMReader_Start(This,cnsStart,cnsDuration,fRate,pvContext) (This)->lpVtbl->Start(This,cnsStart,cnsDuration,fRate,pvContext)
3519 #define IWMReader_Stop(This) (This)->lpVtbl->Stop(This)
3520 #define IWMReader_Pause(This) (This)->lpVtbl->Pause(This)
3521 #define IWMReader_Resume(This) (This)->lpVtbl->Resume(This)
3522 #else
3523 /*** IUnknown methods ***/
3524 static FORCEINLINE HRESULT IWMReader_QueryInterface(IWMReader* This,REFIID riid,void **ppvObject) {
3525     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3526 }
3527 static FORCEINLINE ULONG IWMReader_AddRef(IWMReader* This) {
3528     return This->lpVtbl->AddRef(This);
3529 }
3530 static FORCEINLINE ULONG IWMReader_Release(IWMReader* This) {
3531     return This->lpVtbl->Release(This);
3532 }
3533 /*** IWMReader methods ***/
3534 static FORCEINLINE HRESULT IWMReader_Open(IWMReader* This,const WCHAR *pwszURL,IWMReaderCallback *pCallback,void *pvContext) {
3535     return This->lpVtbl->Open(This,pwszURL,pCallback,pvContext);
3536 }
3537 static FORCEINLINE HRESULT IWMReader_Close(IWMReader* This) {
3538     return This->lpVtbl->Close(This);
3539 }
3540 static FORCEINLINE HRESULT IWMReader_GetOutputCount(IWMReader* This,DWORD *pcOutputs) {
3541     return This->lpVtbl->GetOutputCount(This,pcOutputs);
3542 }
3543 static FORCEINLINE HRESULT IWMReader_GetOutputProps(IWMReader* This,DWORD dwOutputNum,IWMOutputMediaProps **ppOutput) {
3544     return This->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput);
3545 }
3546 static FORCEINLINE HRESULT IWMReader_SetOutputProps(IWMReader* This,DWORD dwOutputNum,IWMOutputMediaProps *pOutput) {
3547     return This->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput);
3548 }
3549 static FORCEINLINE HRESULT IWMReader_GetOutputFormatCount(IWMReader* This,DWORD dwOutputNumber,DWORD *pcFormats) {
3550     return This->lpVtbl->GetOutputFormatCount(This,dwOutputNumber,pcFormats);
3551 }
3552 static FORCEINLINE HRESULT IWMReader_GetOutputFormat(IWMReader* This,DWORD dwOutputNumber,DWORD dwFormatNumber,IWMOutputMediaProps **ppProps) {
3553     return This->lpVtbl->GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps);
3554 }
3555 static FORCEINLINE HRESULT IWMReader_Start(IWMReader* This,QWORD cnsStart,QWORD cnsDuration,float fRate,void *pvContext) {
3556     return This->lpVtbl->Start(This,cnsStart,cnsDuration,fRate,pvContext);
3557 }
3558 static FORCEINLINE HRESULT IWMReader_Stop(IWMReader* This) {
3559     return This->lpVtbl->Stop(This);
3560 }
3561 static FORCEINLINE HRESULT IWMReader_Pause(IWMReader* This) {
3562     return This->lpVtbl->Pause(This);
3563 }
3564 static FORCEINLINE HRESULT IWMReader_Resume(IWMReader* This) {
3565     return This->lpVtbl->Resume(This);
3566 }
3567 #endif
3568 #endif
3569 
3570 #endif
3571 
3572 
3573 #endif  /* __IWMReader_INTERFACE_DEFINED__ */
3574 
3575 /*****************************************************************************
3576  * IWMPlayerHook interface
3577  */
3578 #ifndef __IWMPlayerHook_INTERFACE_DEFINED__
3579 #define __IWMPlayerHook_INTERFACE_DEFINED__
3580 
3581 DEFINE_GUID(IID_IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04);
3582 #if defined(__cplusplus) && !defined(CINTERFACE)
3583 MIDL_INTERFACE("e5b7ca9a-0f1c-4f66-9002-74ec50d8b304")
3584 IWMPlayerHook : public IUnknown
3585 {
3586     virtual HRESULT STDMETHODCALLTYPE PreDecode(
3587         ) = 0;
3588 
3589 };
3590 #ifdef __CRT_UUID_DECL
3591 __CRT_UUID_DECL(IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04)
3592 #endif
3593 #else
3594 typedef struct IWMPlayerHookVtbl {
3595     BEGIN_INTERFACE
3596 
3597     /*** IUnknown methods ***/
3598     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3599         IWMPlayerHook *This,
3600         REFIID riid,
3601         void **ppvObject);
3602 
3603     ULONG (STDMETHODCALLTYPE *AddRef)(
3604         IWMPlayerHook *This);
3605 
3606     ULONG (STDMETHODCALLTYPE *Release)(
3607         IWMPlayerHook *This);
3608 
3609     /*** IWMPlayerHook methods ***/
3610     HRESULT (STDMETHODCALLTYPE *PreDecode)(
3611         IWMPlayerHook *This);
3612 
3613     END_INTERFACE
3614 } IWMPlayerHookVtbl;
3615 
3616 interface IWMPlayerHook {
3617     CONST_VTBL IWMPlayerHookVtbl* lpVtbl;
3618 };
3619 
3620 #ifdef COBJMACROS
3621 #ifndef WIDL_C_INLINE_WRAPPERS
3622 /*** IUnknown methods ***/
3623 #define IWMPlayerHook_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3624 #define IWMPlayerHook_AddRef(This) (This)->lpVtbl->AddRef(This)
3625 #define IWMPlayerHook_Release(This) (This)->lpVtbl->Release(This)
3626 /*** IWMPlayerHook methods ***/
3627 #define IWMPlayerHook_PreDecode(This) (This)->lpVtbl->PreDecode(This)
3628 #else
3629 /*** IUnknown methods ***/
3630 static FORCEINLINE HRESULT IWMPlayerHook_QueryInterface(IWMPlayerHook* This,REFIID riid,void **ppvObject) {
3631     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3632 }
3633 static FORCEINLINE ULONG IWMPlayerHook_AddRef(IWMPlayerHook* This) {
3634     return This->lpVtbl->AddRef(This);
3635 }
3636 static FORCEINLINE ULONG IWMPlayerHook_Release(IWMPlayerHook* This) {
3637     return This->lpVtbl->Release(This);
3638 }
3639 /*** IWMPlayerHook methods ***/
3640 static FORCEINLINE HRESULT IWMPlayerHook_PreDecode(IWMPlayerHook* This) {
3641     return This->lpVtbl->PreDecode(This);
3642 }
3643 #endif
3644 #endif
3645 
3646 #endif
3647 
3648 
3649 #endif  /* __IWMPlayerHook_INTERFACE_DEFINED__ */
3650 
3651 /*****************************************************************************
3652  * IWMReaderAdvanced interface
3653  */
3654 #ifndef __IWMReaderAdvanced_INTERFACE_DEFINED__
3655 #define __IWMReaderAdvanced_INTERFACE_DEFINED__
3656 
3657 DEFINE_GUID(IID_IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
3658 #if defined(__cplusplus) && !defined(CINTERFACE)
3659 MIDL_INTERFACE("96406bea-2b2b-11d3-b36b-00c04f6108ff")
3660 IWMReaderAdvanced : public IUnknown
3661 {
3662     virtual HRESULT STDMETHODCALLTYPE SetUserProvidedClock(
3663         WINBOOL fUserClock) = 0;
3664 
3665     virtual HRESULT STDMETHODCALLTYPE GetUserProvidedClock(
3666         WINBOOL *pfUserClock) = 0;
3667 
3668     virtual HRESULT STDMETHODCALLTYPE DeliverTime(
3669         QWORD cnsTime) = 0;
3670 
3671     virtual HRESULT STDMETHODCALLTYPE SetManualStreamSelection(
3672         WINBOOL fSelection) = 0;
3673 
3674     virtual HRESULT STDMETHODCALLTYPE GetManualStreamSelection(
3675         WINBOOL *pfSelection) = 0;
3676 
3677     virtual HRESULT STDMETHODCALLTYPE SetStreamsSelected(
3678         WORD cStreamCount,
3679         WORD *pwStreamNumbers,
3680         WMT_STREAM_SELECTION *pSelections) = 0;
3681 
3682     virtual HRESULT STDMETHODCALLTYPE GetStreamSelected(
3683         WORD wStreamNum,
3684         WMT_STREAM_SELECTION *pSelection) = 0;
3685 
3686     virtual HRESULT STDMETHODCALLTYPE SetReceiveSelectionCallbacks(
3687         WINBOOL fGetCallbacks) = 0;
3688 
3689     virtual HRESULT STDMETHODCALLTYPE GetReceiveSelectionCallbacks(
3690         WINBOOL *pfGetCallbacks) = 0;
3691 
3692     virtual HRESULT STDMETHODCALLTYPE SetReceiveStreamSamples(
3693         WORD wStreamNum,
3694         WINBOOL fReceiveStreamSamples) = 0;
3695 
3696     virtual HRESULT STDMETHODCALLTYPE GetReceiveStreamSamples(
3697         WORD wStreamNum,
3698         WINBOOL *pfReceiveStreamSamples) = 0;
3699 
3700     virtual HRESULT STDMETHODCALLTYPE SetAllocateForOutput(
3701         DWORD dwOutputNum,
3702         WINBOOL fAllocate) = 0;
3703 
3704     virtual HRESULT STDMETHODCALLTYPE GetAllocateForOutput(
3705         DWORD dwOutputNum,
3706         WINBOOL *pfAllocate) = 0;
3707 
3708     virtual HRESULT STDMETHODCALLTYPE SetAllocateForStream(
3709         WORD wStreamNum,
3710         WINBOOL fAllocate) = 0;
3711 
3712     virtual HRESULT STDMETHODCALLTYPE GetAllocateForStream(
3713         WORD dwStreamNum,
3714         WINBOOL *pfAllocate) = 0;
3715 
3716     virtual HRESULT STDMETHODCALLTYPE GetStatistics(
3717         WM_READER_STATISTICS *pStatistics) = 0;
3718 
3719     virtual HRESULT STDMETHODCALLTYPE SetClientInfo(
3720         WM_READER_CLIENTINFO *pClientInfo) = 0;
3721 
3722     virtual HRESULT STDMETHODCALLTYPE GetMaxOutputSampleSize(
3723         DWORD dwOutput,
3724         DWORD *pcbMax) = 0;
3725 
3726     virtual HRESULT STDMETHODCALLTYPE GetMaxStreamSampleSize(
3727         WORD wStream,
3728         DWORD *pcbMax) = 0;
3729 
3730     virtual HRESULT STDMETHODCALLTYPE NotifyLateDelivery(
3731         QWORD cnsLateness) = 0;
3732 
3733 };
3734 #ifdef __CRT_UUID_DECL
3735 __CRT_UUID_DECL(IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
3736 #endif
3737 #else
3738 typedef struct IWMReaderAdvancedVtbl {
3739     BEGIN_INTERFACE
3740 
3741     /*** IUnknown methods ***/
3742     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3743         IWMReaderAdvanced *This,
3744         REFIID riid,
3745         void **ppvObject);
3746 
3747     ULONG (STDMETHODCALLTYPE *AddRef)(
3748         IWMReaderAdvanced *This);
3749 
3750     ULONG (STDMETHODCALLTYPE *Release)(
3751         IWMReaderAdvanced *This);
3752 
3753     /*** IWMReaderAdvanced methods ***/
3754     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
3755         IWMReaderAdvanced *This,
3756         WINBOOL fUserClock);
3757 
3758     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
3759         IWMReaderAdvanced *This,
3760         WINBOOL *pfUserClock);
3761 
3762     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
3763         IWMReaderAdvanced *This,
3764         QWORD cnsTime);
3765 
3766     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
3767         IWMReaderAdvanced *This,
3768         WINBOOL fSelection);
3769 
3770     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
3771         IWMReaderAdvanced *This,
3772         WINBOOL *pfSelection);
3773 
3774     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
3775         IWMReaderAdvanced *This,
3776         WORD cStreamCount,
3777         WORD *pwStreamNumbers,
3778         WMT_STREAM_SELECTION *pSelections);
3779 
3780     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
3781         IWMReaderAdvanced *This,
3782         WORD wStreamNum,
3783         WMT_STREAM_SELECTION *pSelection);
3784 
3785     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
3786         IWMReaderAdvanced *This,
3787         WINBOOL fGetCallbacks);
3788 
3789     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
3790         IWMReaderAdvanced *This,
3791         WINBOOL *pfGetCallbacks);
3792 
3793     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
3794         IWMReaderAdvanced *This,
3795         WORD wStreamNum,
3796         WINBOOL fReceiveStreamSamples);
3797 
3798     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
3799         IWMReaderAdvanced *This,
3800         WORD wStreamNum,
3801         WINBOOL *pfReceiveStreamSamples);
3802 
3803     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
3804         IWMReaderAdvanced *This,
3805         DWORD dwOutputNum,
3806         WINBOOL fAllocate);
3807 
3808     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
3809         IWMReaderAdvanced *This,
3810         DWORD dwOutputNum,
3811         WINBOOL *pfAllocate);
3812 
3813     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
3814         IWMReaderAdvanced *This,
3815         WORD wStreamNum,
3816         WINBOOL fAllocate);
3817 
3818     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
3819         IWMReaderAdvanced *This,
3820         WORD dwStreamNum,
3821         WINBOOL *pfAllocate);
3822 
3823     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
3824         IWMReaderAdvanced *This,
3825         WM_READER_STATISTICS *pStatistics);
3826 
3827     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
3828         IWMReaderAdvanced *This,
3829         WM_READER_CLIENTINFO *pClientInfo);
3830 
3831     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
3832         IWMReaderAdvanced *This,
3833         DWORD dwOutput,
3834         DWORD *pcbMax);
3835 
3836     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
3837         IWMReaderAdvanced *This,
3838         WORD wStream,
3839         DWORD *pcbMax);
3840 
3841     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
3842         IWMReaderAdvanced *This,
3843         QWORD cnsLateness);
3844 
3845     END_INTERFACE
3846 } IWMReaderAdvancedVtbl;
3847 
3848 interface IWMReaderAdvanced {
3849     CONST_VTBL IWMReaderAdvancedVtbl* lpVtbl;
3850 };
3851 
3852 #ifdef COBJMACROS
3853 #ifndef WIDL_C_INLINE_WRAPPERS
3854 /*** IUnknown methods ***/
3855 #define IWMReaderAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
3856 #define IWMReaderAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
3857 #define IWMReaderAdvanced_Release(This) (This)->lpVtbl->Release(This)
3858 /*** IWMReaderAdvanced methods ***/
3859 #define IWMReaderAdvanced_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
3860 #define IWMReaderAdvanced_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
3861 #define IWMReaderAdvanced_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
3862 #define IWMReaderAdvanced_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
3863 #define IWMReaderAdvanced_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
3864 #define IWMReaderAdvanced_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
3865 #define IWMReaderAdvanced_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
3866 #define IWMReaderAdvanced_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
3867 #define IWMReaderAdvanced_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
3868 #define IWMReaderAdvanced_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
3869 #define IWMReaderAdvanced_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
3870 #define IWMReaderAdvanced_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
3871 #define IWMReaderAdvanced_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
3872 #define IWMReaderAdvanced_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
3873 #define IWMReaderAdvanced_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
3874 #define IWMReaderAdvanced_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
3875 #define IWMReaderAdvanced_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
3876 #define IWMReaderAdvanced_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
3877 #define IWMReaderAdvanced_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
3878 #define IWMReaderAdvanced_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
3879 #else
3880 /*** IUnknown methods ***/
3881 static FORCEINLINE HRESULT IWMReaderAdvanced_QueryInterface(IWMReaderAdvanced* This,REFIID riid,void **ppvObject) {
3882     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3883 }
3884 static FORCEINLINE ULONG IWMReaderAdvanced_AddRef(IWMReaderAdvanced* This) {
3885     return This->lpVtbl->AddRef(This);
3886 }
3887 static FORCEINLINE ULONG IWMReaderAdvanced_Release(IWMReaderAdvanced* This) {
3888     return This->lpVtbl->Release(This);
3889 }
3890 /*** IWMReaderAdvanced methods ***/
3891 static FORCEINLINE HRESULT IWMReaderAdvanced_SetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL fUserClock) {
3892     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
3893 }
3894 static FORCEINLINE HRESULT IWMReaderAdvanced_GetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL *pfUserClock) {
3895     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
3896 }
3897 static FORCEINLINE HRESULT IWMReaderAdvanced_DeliverTime(IWMReaderAdvanced* This,QWORD cnsTime) {
3898     return This->lpVtbl->DeliverTime(This,cnsTime);
3899 }
3900 static FORCEINLINE HRESULT IWMReaderAdvanced_SetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL fSelection) {
3901     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
3902 }
3903 static FORCEINLINE HRESULT IWMReaderAdvanced_GetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL *pfSelection) {
3904     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
3905 }
3906 static FORCEINLINE HRESULT IWMReaderAdvanced_SetStreamsSelected(IWMReaderAdvanced* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
3907     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
3908 }
3909 static FORCEINLINE HRESULT IWMReaderAdvanced_GetStreamSelected(IWMReaderAdvanced* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
3910     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
3911 }
3912 static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL fGetCallbacks) {
3913     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
3914 }
3915 static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL *pfGetCallbacks) {
3916     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
3917 }
3918 static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
3919     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
3920 }
3921 static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
3922     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
3923 }
3924 static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL fAllocate) {
3925     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
3926 }
3927 static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
3928     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
3929 }
3930 static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForStream(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fAllocate) {
3931     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
3932 }
3933 static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForStream(IWMReaderAdvanced* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
3934     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
3935 }
3936 static FORCEINLINE HRESULT IWMReaderAdvanced_GetStatistics(IWMReaderAdvanced* This,WM_READER_STATISTICS *pStatistics) {
3937     return This->lpVtbl->GetStatistics(This,pStatistics);
3938 }
3939 static FORCEINLINE HRESULT IWMReaderAdvanced_SetClientInfo(IWMReaderAdvanced* This,WM_READER_CLIENTINFO *pClientInfo) {
3940     return This->lpVtbl->SetClientInfo(This,pClientInfo);
3941 }
3942 static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxOutputSampleSize(IWMReaderAdvanced* This,DWORD dwOutput,DWORD *pcbMax) {
3943     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
3944 }
3945 static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxStreamSampleSize(IWMReaderAdvanced* This,WORD wStream,DWORD *pcbMax) {
3946     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
3947 }
3948 static FORCEINLINE HRESULT IWMReaderAdvanced_NotifyLateDelivery(IWMReaderAdvanced* This,QWORD cnsLateness) {
3949     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
3950 }
3951 #endif
3952 #endif
3953 
3954 #endif
3955 
3956 
3957 #endif  /* __IWMReaderAdvanced_INTERFACE_DEFINED__ */
3958 
3959 /*****************************************************************************
3960  * IWMReaderAdvanced2 interface
3961  */
3962 #ifndef __IWMReaderAdvanced2_INTERFACE_DEFINED__
3963 #define __IWMReaderAdvanced2_INTERFACE_DEFINED__
3964 
3965 DEFINE_GUID(IID_IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e);
3966 #if defined(__cplusplus) && !defined(CINTERFACE)
3967 MIDL_INTERFACE("ae14a945-b90c-4d0d-9127-80d665f7d73e")
3968 IWMReaderAdvanced2 : public IWMReaderAdvanced
3969 {
3970     virtual HRESULT STDMETHODCALLTYPE SetPlayMode(
3971         WMT_PLAY_MODE Mode) = 0;
3972 
3973     virtual HRESULT STDMETHODCALLTYPE GetPlayMode(
3974         WMT_PLAY_MODE *pMode) = 0;
3975 
3976     virtual HRESULT STDMETHODCALLTYPE GetBufferProgress(
3977         DWORD *pdwPercent,
3978         QWORD *pcnsBuffering) = 0;
3979 
3980     virtual HRESULT STDMETHODCALLTYPE GetDownloadProgress(
3981         DWORD *pdwPercent,
3982         QWORD *pqwBytesDownloaded,
3983         QWORD *pcnsDownload) = 0;
3984 
3985     virtual HRESULT STDMETHODCALLTYPE GetSaveAsProgress(
3986         DWORD *pdwPercent) = 0;
3987 
3988     virtual HRESULT STDMETHODCALLTYPE SaveFileAs(
3989         const WCHAR *pwszFilename) = 0;
3990 
3991     virtual HRESULT STDMETHODCALLTYPE GetProtocolName(
3992         WCHAR *pwszProtocol,
3993         DWORD *pcchProtocol) = 0;
3994 
3995     virtual HRESULT STDMETHODCALLTYPE StartAtMarker(
3996         WORD wMarkerIndex,
3997         QWORD cnsDuration,
3998         float fRate,
3999         void *pvContext) = 0;
4000 
4001     virtual HRESULT STDMETHODCALLTYPE GetOutputSetting(
4002         DWORD dwOutputNum,
4003         LPCWSTR pszName,
4004         WMT_ATTR_DATATYPE *pType,
4005         BYTE *pValue,
4006         WORD *pcbLength) = 0;
4007 
4008     virtual HRESULT STDMETHODCALLTYPE SetOutputSetting(
4009         DWORD dwOutputNum,
4010         LPCWSTR pszName,
4011         WMT_ATTR_DATATYPE Type,
4012         const BYTE *pValue,
4013         WORD cbLength) = 0;
4014 
4015     virtual HRESULT STDMETHODCALLTYPE Preroll(
4016         QWORD cnsStart,
4017         QWORD cnsDuration,
4018         float fRate) = 0;
4019 
4020     virtual HRESULT STDMETHODCALLTYPE SetLogClientID(
4021         WINBOOL fLogClientID) = 0;
4022 
4023     virtual HRESULT STDMETHODCALLTYPE GetLogClientID(
4024         WINBOOL *pfLogClientID) = 0;
4025 
4026     virtual HRESULT STDMETHODCALLTYPE StopBuffering(
4027         ) = 0;
4028 
4029     virtual HRESULT STDMETHODCALLTYPE OpenStream(
4030         IStream *pStream,
4031         IWMReaderCallback *pCallback,
4032         void *pvContext) = 0;
4033 
4034 };
4035 #ifdef __CRT_UUID_DECL
4036 __CRT_UUID_DECL(IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e)
4037 #endif
4038 #else
4039 typedef struct IWMReaderAdvanced2Vtbl {
4040     BEGIN_INTERFACE
4041 
4042     /*** IUnknown methods ***/
4043     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4044         IWMReaderAdvanced2 *This,
4045         REFIID riid,
4046         void **ppvObject);
4047 
4048     ULONG (STDMETHODCALLTYPE *AddRef)(
4049         IWMReaderAdvanced2 *This);
4050 
4051     ULONG (STDMETHODCALLTYPE *Release)(
4052         IWMReaderAdvanced2 *This);
4053 
4054     /*** IWMReaderAdvanced methods ***/
4055     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
4056         IWMReaderAdvanced2 *This,
4057         WINBOOL fUserClock);
4058 
4059     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
4060         IWMReaderAdvanced2 *This,
4061         WINBOOL *pfUserClock);
4062 
4063     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
4064         IWMReaderAdvanced2 *This,
4065         QWORD cnsTime);
4066 
4067     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
4068         IWMReaderAdvanced2 *This,
4069         WINBOOL fSelection);
4070 
4071     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
4072         IWMReaderAdvanced2 *This,
4073         WINBOOL *pfSelection);
4074 
4075     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
4076         IWMReaderAdvanced2 *This,
4077         WORD cStreamCount,
4078         WORD *pwStreamNumbers,
4079         WMT_STREAM_SELECTION *pSelections);
4080 
4081     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
4082         IWMReaderAdvanced2 *This,
4083         WORD wStreamNum,
4084         WMT_STREAM_SELECTION *pSelection);
4085 
4086     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
4087         IWMReaderAdvanced2 *This,
4088         WINBOOL fGetCallbacks);
4089 
4090     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
4091         IWMReaderAdvanced2 *This,
4092         WINBOOL *pfGetCallbacks);
4093 
4094     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
4095         IWMReaderAdvanced2 *This,
4096         WORD wStreamNum,
4097         WINBOOL fReceiveStreamSamples);
4098 
4099     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
4100         IWMReaderAdvanced2 *This,
4101         WORD wStreamNum,
4102         WINBOOL *pfReceiveStreamSamples);
4103 
4104     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
4105         IWMReaderAdvanced2 *This,
4106         DWORD dwOutputNum,
4107         WINBOOL fAllocate);
4108 
4109     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
4110         IWMReaderAdvanced2 *This,
4111         DWORD dwOutputNum,
4112         WINBOOL *pfAllocate);
4113 
4114     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
4115         IWMReaderAdvanced2 *This,
4116         WORD wStreamNum,
4117         WINBOOL fAllocate);
4118 
4119     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
4120         IWMReaderAdvanced2 *This,
4121         WORD dwStreamNum,
4122         WINBOOL *pfAllocate);
4123 
4124     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
4125         IWMReaderAdvanced2 *This,
4126         WM_READER_STATISTICS *pStatistics);
4127 
4128     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
4129         IWMReaderAdvanced2 *This,
4130         WM_READER_CLIENTINFO *pClientInfo);
4131 
4132     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
4133         IWMReaderAdvanced2 *This,
4134         DWORD dwOutput,
4135         DWORD *pcbMax);
4136 
4137     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
4138         IWMReaderAdvanced2 *This,
4139         WORD wStream,
4140         DWORD *pcbMax);
4141 
4142     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
4143         IWMReaderAdvanced2 *This,
4144         QWORD cnsLateness);
4145 
4146     /*** IWMReaderAdvanced2 methods ***/
4147     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
4148         IWMReaderAdvanced2 *This,
4149         WMT_PLAY_MODE Mode);
4150 
4151     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
4152         IWMReaderAdvanced2 *This,
4153         WMT_PLAY_MODE *pMode);
4154 
4155     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
4156         IWMReaderAdvanced2 *This,
4157         DWORD *pdwPercent,
4158         QWORD *pcnsBuffering);
4159 
4160     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
4161         IWMReaderAdvanced2 *This,
4162         DWORD *pdwPercent,
4163         QWORD *pqwBytesDownloaded,
4164         QWORD *pcnsDownload);
4165 
4166     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
4167         IWMReaderAdvanced2 *This,
4168         DWORD *pdwPercent);
4169 
4170     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
4171         IWMReaderAdvanced2 *This,
4172         const WCHAR *pwszFilename);
4173 
4174     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
4175         IWMReaderAdvanced2 *This,
4176         WCHAR *pwszProtocol,
4177         DWORD *pcchProtocol);
4178 
4179     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
4180         IWMReaderAdvanced2 *This,
4181         WORD wMarkerIndex,
4182         QWORD cnsDuration,
4183         float fRate,
4184         void *pvContext);
4185 
4186     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
4187         IWMReaderAdvanced2 *This,
4188         DWORD dwOutputNum,
4189         LPCWSTR pszName,
4190         WMT_ATTR_DATATYPE *pType,
4191         BYTE *pValue,
4192         WORD *pcbLength);
4193 
4194     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
4195         IWMReaderAdvanced2 *This,
4196         DWORD dwOutputNum,
4197         LPCWSTR pszName,
4198         WMT_ATTR_DATATYPE Type,
4199         const BYTE *pValue,
4200         WORD cbLength);
4201 
4202     HRESULT (STDMETHODCALLTYPE *Preroll)(
4203         IWMReaderAdvanced2 *This,
4204         QWORD cnsStart,
4205         QWORD cnsDuration,
4206         float fRate);
4207 
4208     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
4209         IWMReaderAdvanced2 *This,
4210         WINBOOL fLogClientID);
4211 
4212     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
4213         IWMReaderAdvanced2 *This,
4214         WINBOOL *pfLogClientID);
4215 
4216     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
4217         IWMReaderAdvanced2 *This);
4218 
4219     HRESULT (STDMETHODCALLTYPE *OpenStream)(
4220         IWMReaderAdvanced2 *This,
4221         IStream *pStream,
4222         IWMReaderCallback *pCallback,
4223         void *pvContext);
4224 
4225     END_INTERFACE
4226 } IWMReaderAdvanced2Vtbl;
4227 
4228 interface IWMReaderAdvanced2 {
4229     CONST_VTBL IWMReaderAdvanced2Vtbl* lpVtbl;
4230 };
4231 
4232 #ifdef COBJMACROS
4233 #ifndef WIDL_C_INLINE_WRAPPERS
4234 /*** IUnknown methods ***/
4235 #define IWMReaderAdvanced2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4236 #define IWMReaderAdvanced2_AddRef(This) (This)->lpVtbl->AddRef(This)
4237 #define IWMReaderAdvanced2_Release(This) (This)->lpVtbl->Release(This)
4238 /*** IWMReaderAdvanced methods ***/
4239 #define IWMReaderAdvanced2_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
4240 #define IWMReaderAdvanced2_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
4241 #define IWMReaderAdvanced2_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
4242 #define IWMReaderAdvanced2_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
4243 #define IWMReaderAdvanced2_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
4244 #define IWMReaderAdvanced2_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
4245 #define IWMReaderAdvanced2_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
4246 #define IWMReaderAdvanced2_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
4247 #define IWMReaderAdvanced2_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
4248 #define IWMReaderAdvanced2_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
4249 #define IWMReaderAdvanced2_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
4250 #define IWMReaderAdvanced2_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
4251 #define IWMReaderAdvanced2_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
4252 #define IWMReaderAdvanced2_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
4253 #define IWMReaderAdvanced2_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
4254 #define IWMReaderAdvanced2_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
4255 #define IWMReaderAdvanced2_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
4256 #define IWMReaderAdvanced2_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
4257 #define IWMReaderAdvanced2_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
4258 #define IWMReaderAdvanced2_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
4259 /*** IWMReaderAdvanced2 methods ***/
4260 #define IWMReaderAdvanced2_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
4261 #define IWMReaderAdvanced2_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
4262 #define IWMReaderAdvanced2_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
4263 #define IWMReaderAdvanced2_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
4264 #define IWMReaderAdvanced2_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
4265 #define IWMReaderAdvanced2_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
4266 #define IWMReaderAdvanced2_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
4267 #define IWMReaderAdvanced2_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
4268 #define IWMReaderAdvanced2_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
4269 #define IWMReaderAdvanced2_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
4270 #define IWMReaderAdvanced2_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
4271 #define IWMReaderAdvanced2_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
4272 #define IWMReaderAdvanced2_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
4273 #define IWMReaderAdvanced2_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
4274 #define IWMReaderAdvanced2_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
4275 #else
4276 /*** IUnknown methods ***/
4277 static FORCEINLINE HRESULT IWMReaderAdvanced2_QueryInterface(IWMReaderAdvanced2* This,REFIID riid,void **ppvObject) {
4278     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4279 }
4280 static FORCEINLINE ULONG IWMReaderAdvanced2_AddRef(IWMReaderAdvanced2* This) {
4281     return This->lpVtbl->AddRef(This);
4282 }
4283 static FORCEINLINE ULONG IWMReaderAdvanced2_Release(IWMReaderAdvanced2* This) {
4284     return This->lpVtbl->Release(This);
4285 }
4286 /*** IWMReaderAdvanced methods ***/
4287 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL fUserClock) {
4288     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
4289 }
4290 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL *pfUserClock) {
4291     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
4292 }
4293 static FORCEINLINE HRESULT IWMReaderAdvanced2_DeliverTime(IWMReaderAdvanced2* This,QWORD cnsTime) {
4294     return This->lpVtbl->DeliverTime(This,cnsTime);
4295 }
4296 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL fSelection) {
4297     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
4298 }
4299 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL *pfSelection) {
4300     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
4301 }
4302 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetStreamsSelected(IWMReaderAdvanced2* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
4303     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
4304 }
4305 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStreamSelected(IWMReaderAdvanced2* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
4306     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
4307 }
4308 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL fGetCallbacks) {
4309     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
4310 }
4311 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL *pfGetCallbacks) {
4312     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
4313 }
4314 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
4315     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
4316 }
4317 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
4318     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
4319 }
4320 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL fAllocate) {
4321     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
4322 }
4323 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
4324     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
4325 }
4326 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForStream(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fAllocate) {
4327     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
4328 }
4329 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForStream(IWMReaderAdvanced2* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
4330     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
4331 }
4332 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStatistics(IWMReaderAdvanced2* This,WM_READER_STATISTICS *pStatistics) {
4333     return This->lpVtbl->GetStatistics(This,pStatistics);
4334 }
4335 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetClientInfo(IWMReaderAdvanced2* This,WM_READER_CLIENTINFO *pClientInfo) {
4336     return This->lpVtbl->SetClientInfo(This,pClientInfo);
4337 }
4338 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxOutputSampleSize(IWMReaderAdvanced2* This,DWORD dwOutput,DWORD *pcbMax) {
4339     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
4340 }
4341 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxStreamSampleSize(IWMReaderAdvanced2* This,WORD wStream,DWORD *pcbMax) {
4342     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
4343 }
4344 static FORCEINLINE HRESULT IWMReaderAdvanced2_NotifyLateDelivery(IWMReaderAdvanced2* This,QWORD cnsLateness) {
4345     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
4346 }
4347 /*** IWMReaderAdvanced2 methods ***/
4348 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE Mode) {
4349     return This->lpVtbl->SetPlayMode(This,Mode);
4350 }
4351 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE *pMode) {
4352     return This->lpVtbl->GetPlayMode(This,pMode);
4353 }
4354 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetBufferProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
4355     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
4356 }
4357 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetDownloadProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
4358     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
4359 }
4360 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetSaveAsProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent) {
4361     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
4362 }
4363 static FORCEINLINE HRESULT IWMReaderAdvanced2_SaveFileAs(IWMReaderAdvanced2* This,const WCHAR *pwszFilename) {
4364     return This->lpVtbl->SaveFileAs(This,pwszFilename);
4365 }
4366 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetProtocolName(IWMReaderAdvanced2* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
4367     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
4368 }
4369 static FORCEINLINE HRESULT IWMReaderAdvanced2_StartAtMarker(IWMReaderAdvanced2* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
4370     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
4371 }
4372 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
4373     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
4374 }
4375 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
4376     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
4377 }
4378 static FORCEINLINE HRESULT IWMReaderAdvanced2_Preroll(IWMReaderAdvanced2* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
4379     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
4380 }
4381 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetLogClientID(IWMReaderAdvanced2* This,WINBOOL fLogClientID) {
4382     return This->lpVtbl->SetLogClientID(This,fLogClientID);
4383 }
4384 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetLogClientID(IWMReaderAdvanced2* This,WINBOOL *pfLogClientID) {
4385     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
4386 }
4387 static FORCEINLINE HRESULT IWMReaderAdvanced2_StopBuffering(IWMReaderAdvanced2* This) {
4388     return This->lpVtbl->StopBuffering(This);
4389 }
4390 static FORCEINLINE HRESULT IWMReaderAdvanced2_OpenStream(IWMReaderAdvanced2* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
4391     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
4392 }
4393 #endif
4394 #endif
4395 
4396 #endif
4397 
4398 
4399 #endif  /* __IWMReaderAdvanced2_INTERFACE_DEFINED__ */
4400 
4401 /*****************************************************************************
4402  * IWMReaderAdvanced3 interface
4403  */
4404 #ifndef __IWMReaderAdvanced3_INTERFACE_DEFINED__
4405 #define __IWMReaderAdvanced3_INTERFACE_DEFINED__
4406 
4407 DEFINE_GUID(IID_IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00);
4408 #if defined(__cplusplus) && !defined(CINTERFACE)
4409 MIDL_INTERFACE("5dc0674b-f04b-4a4e-9f2a-b1afde2c8100")
4410 IWMReaderAdvanced3 : public IWMReaderAdvanced2
4411 {
4412     virtual HRESULT STDMETHODCALLTYPE StopNetStreaming(
4413         ) = 0;
4414 
4415     virtual HRESULT STDMETHODCALLTYPE StartAtPosition(
4416         WORD wStreamNum,
4417         void *pvOffsetStart,
4418         void *pvDuration,
4419         WMT_OFFSET_FORMAT dwOffsetFormat,
4420         float fRate,
4421         void *pvContext) = 0;
4422 
4423 };
4424 #ifdef __CRT_UUID_DECL
4425 __CRT_UUID_DECL(IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00)
4426 #endif
4427 #else
4428 typedef struct IWMReaderAdvanced3Vtbl {
4429     BEGIN_INTERFACE
4430 
4431     /*** IUnknown methods ***/
4432     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4433         IWMReaderAdvanced3 *This,
4434         REFIID riid,
4435         void **ppvObject);
4436 
4437     ULONG (STDMETHODCALLTYPE *AddRef)(
4438         IWMReaderAdvanced3 *This);
4439 
4440     ULONG (STDMETHODCALLTYPE *Release)(
4441         IWMReaderAdvanced3 *This);
4442 
4443     /*** IWMReaderAdvanced methods ***/
4444     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
4445         IWMReaderAdvanced3 *This,
4446         WINBOOL fUserClock);
4447 
4448     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
4449         IWMReaderAdvanced3 *This,
4450         WINBOOL *pfUserClock);
4451 
4452     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
4453         IWMReaderAdvanced3 *This,
4454         QWORD cnsTime);
4455 
4456     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
4457         IWMReaderAdvanced3 *This,
4458         WINBOOL fSelection);
4459 
4460     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
4461         IWMReaderAdvanced3 *This,
4462         WINBOOL *pfSelection);
4463 
4464     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
4465         IWMReaderAdvanced3 *This,
4466         WORD cStreamCount,
4467         WORD *pwStreamNumbers,
4468         WMT_STREAM_SELECTION *pSelections);
4469 
4470     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
4471         IWMReaderAdvanced3 *This,
4472         WORD wStreamNum,
4473         WMT_STREAM_SELECTION *pSelection);
4474 
4475     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
4476         IWMReaderAdvanced3 *This,
4477         WINBOOL fGetCallbacks);
4478 
4479     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
4480         IWMReaderAdvanced3 *This,
4481         WINBOOL *pfGetCallbacks);
4482 
4483     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
4484         IWMReaderAdvanced3 *This,
4485         WORD wStreamNum,
4486         WINBOOL fReceiveStreamSamples);
4487 
4488     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
4489         IWMReaderAdvanced3 *This,
4490         WORD wStreamNum,
4491         WINBOOL *pfReceiveStreamSamples);
4492 
4493     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
4494         IWMReaderAdvanced3 *This,
4495         DWORD dwOutputNum,
4496         WINBOOL fAllocate);
4497 
4498     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
4499         IWMReaderAdvanced3 *This,
4500         DWORD dwOutputNum,
4501         WINBOOL *pfAllocate);
4502 
4503     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
4504         IWMReaderAdvanced3 *This,
4505         WORD wStreamNum,
4506         WINBOOL fAllocate);
4507 
4508     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
4509         IWMReaderAdvanced3 *This,
4510         WORD dwStreamNum,
4511         WINBOOL *pfAllocate);
4512 
4513     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
4514         IWMReaderAdvanced3 *This,
4515         WM_READER_STATISTICS *pStatistics);
4516 
4517     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
4518         IWMReaderAdvanced3 *This,
4519         WM_READER_CLIENTINFO *pClientInfo);
4520 
4521     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
4522         IWMReaderAdvanced3 *This,
4523         DWORD dwOutput,
4524         DWORD *pcbMax);
4525 
4526     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
4527         IWMReaderAdvanced3 *This,
4528         WORD wStream,
4529         DWORD *pcbMax);
4530 
4531     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
4532         IWMReaderAdvanced3 *This,
4533         QWORD cnsLateness);
4534 
4535     /*** IWMReaderAdvanced2 methods ***/
4536     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
4537         IWMReaderAdvanced3 *This,
4538         WMT_PLAY_MODE Mode);
4539 
4540     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
4541         IWMReaderAdvanced3 *This,
4542         WMT_PLAY_MODE *pMode);
4543 
4544     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
4545         IWMReaderAdvanced3 *This,
4546         DWORD *pdwPercent,
4547         QWORD *pcnsBuffering);
4548 
4549     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
4550         IWMReaderAdvanced3 *This,
4551         DWORD *pdwPercent,
4552         QWORD *pqwBytesDownloaded,
4553         QWORD *pcnsDownload);
4554 
4555     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
4556         IWMReaderAdvanced3 *This,
4557         DWORD *pdwPercent);
4558 
4559     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
4560         IWMReaderAdvanced3 *This,
4561         const WCHAR *pwszFilename);
4562 
4563     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
4564         IWMReaderAdvanced3 *This,
4565         WCHAR *pwszProtocol,
4566         DWORD *pcchProtocol);
4567 
4568     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
4569         IWMReaderAdvanced3 *This,
4570         WORD wMarkerIndex,
4571         QWORD cnsDuration,
4572         float fRate,
4573         void *pvContext);
4574 
4575     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
4576         IWMReaderAdvanced3 *This,
4577         DWORD dwOutputNum,
4578         LPCWSTR pszName,
4579         WMT_ATTR_DATATYPE *pType,
4580         BYTE *pValue,
4581         WORD *pcbLength);
4582 
4583     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
4584         IWMReaderAdvanced3 *This,
4585         DWORD dwOutputNum,
4586         LPCWSTR pszName,
4587         WMT_ATTR_DATATYPE Type,
4588         const BYTE *pValue,
4589         WORD cbLength);
4590 
4591     HRESULT (STDMETHODCALLTYPE *Preroll)(
4592         IWMReaderAdvanced3 *This,
4593         QWORD cnsStart,
4594         QWORD cnsDuration,
4595         float fRate);
4596 
4597     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
4598         IWMReaderAdvanced3 *This,
4599         WINBOOL fLogClientID);
4600 
4601     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
4602         IWMReaderAdvanced3 *This,
4603         WINBOOL *pfLogClientID);
4604 
4605     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
4606         IWMReaderAdvanced3 *This);
4607 
4608     HRESULT (STDMETHODCALLTYPE *OpenStream)(
4609         IWMReaderAdvanced3 *This,
4610         IStream *pStream,
4611         IWMReaderCallback *pCallback,
4612         void *pvContext);
4613 
4614     /*** IWMReaderAdvanced3 methods ***/
4615     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
4616         IWMReaderAdvanced3 *This);
4617 
4618     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
4619         IWMReaderAdvanced3 *This,
4620         WORD wStreamNum,
4621         void *pvOffsetStart,
4622         void *pvDuration,
4623         WMT_OFFSET_FORMAT dwOffsetFormat,
4624         float fRate,
4625         void *pvContext);
4626 
4627     END_INTERFACE
4628 } IWMReaderAdvanced3Vtbl;
4629 
4630 interface IWMReaderAdvanced3 {
4631     CONST_VTBL IWMReaderAdvanced3Vtbl* lpVtbl;
4632 };
4633 
4634 #ifdef COBJMACROS
4635 #ifndef WIDL_C_INLINE_WRAPPERS
4636 /*** IUnknown methods ***/
4637 #define IWMReaderAdvanced3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
4638 #define IWMReaderAdvanced3_AddRef(This) (This)->lpVtbl->AddRef(This)
4639 #define IWMReaderAdvanced3_Release(This) (This)->lpVtbl->Release(This)
4640 /*** IWMReaderAdvanced methods ***/
4641 #define IWMReaderAdvanced3_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
4642 #define IWMReaderAdvanced3_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
4643 #define IWMReaderAdvanced3_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
4644 #define IWMReaderAdvanced3_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
4645 #define IWMReaderAdvanced3_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
4646 #define IWMReaderAdvanced3_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
4647 #define IWMReaderAdvanced3_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
4648 #define IWMReaderAdvanced3_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
4649 #define IWMReaderAdvanced3_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
4650 #define IWMReaderAdvanced3_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
4651 #define IWMReaderAdvanced3_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
4652 #define IWMReaderAdvanced3_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
4653 #define IWMReaderAdvanced3_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
4654 #define IWMReaderAdvanced3_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
4655 #define IWMReaderAdvanced3_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
4656 #define IWMReaderAdvanced3_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
4657 #define IWMReaderAdvanced3_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
4658 #define IWMReaderAdvanced3_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
4659 #define IWMReaderAdvanced3_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
4660 #define IWMReaderAdvanced3_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
4661 /*** IWMReaderAdvanced2 methods ***/
4662 #define IWMReaderAdvanced3_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
4663 #define IWMReaderAdvanced3_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
4664 #define IWMReaderAdvanced3_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
4665 #define IWMReaderAdvanced3_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
4666 #define IWMReaderAdvanced3_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
4667 #define IWMReaderAdvanced3_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
4668 #define IWMReaderAdvanced3_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
4669 #define IWMReaderAdvanced3_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
4670 #define IWMReaderAdvanced3_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
4671 #define IWMReaderAdvanced3_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
4672 #define IWMReaderAdvanced3_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
4673 #define IWMReaderAdvanced3_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
4674 #define IWMReaderAdvanced3_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
4675 #define IWMReaderAdvanced3_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
4676 #define IWMReaderAdvanced3_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
4677 /*** IWMReaderAdvanced3 methods ***/
4678 #define IWMReaderAdvanced3_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
4679 #define IWMReaderAdvanced3_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
4680 #else
4681 /*** IUnknown methods ***/
4682 static FORCEINLINE HRESULT IWMReaderAdvanced3_QueryInterface(IWMReaderAdvanced3* This,REFIID riid,void **ppvObject) {
4683     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
4684 }
4685 static FORCEINLINE ULONG IWMReaderAdvanced3_AddRef(IWMReaderAdvanced3* This) {
4686     return This->lpVtbl->AddRef(This);
4687 }
4688 static FORCEINLINE ULONG IWMReaderAdvanced3_Release(IWMReaderAdvanced3* This) {
4689     return This->lpVtbl->Release(This);
4690 }
4691 /*** IWMReaderAdvanced methods ***/
4692 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL fUserClock) {
4693     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
4694 }
4695 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL *pfUserClock) {
4696     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
4697 }
4698 static FORCEINLINE HRESULT IWMReaderAdvanced3_DeliverTime(IWMReaderAdvanced3* This,QWORD cnsTime) {
4699     return This->lpVtbl->DeliverTime(This,cnsTime);
4700 }
4701 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL fSelection) {
4702     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
4703 }
4704 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL *pfSelection) {
4705     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
4706 }
4707 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetStreamsSelected(IWMReaderAdvanced3* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
4708     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
4709 }
4710 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStreamSelected(IWMReaderAdvanced3* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
4711     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
4712 }
4713 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL fGetCallbacks) {
4714     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
4715 }
4716 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL *pfGetCallbacks) {
4717     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
4718 }
4719 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
4720     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
4721 }
4722 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
4723     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
4724 }
4725 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL fAllocate) {
4726     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
4727 }
4728 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
4729     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
4730 }
4731 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForStream(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fAllocate) {
4732     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
4733 }
4734 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForStream(IWMReaderAdvanced3* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
4735     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
4736 }
4737 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStatistics(IWMReaderAdvanced3* This,WM_READER_STATISTICS *pStatistics) {
4738     return This->lpVtbl->GetStatistics(This,pStatistics);
4739 }
4740 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetClientInfo(IWMReaderAdvanced3* This,WM_READER_CLIENTINFO *pClientInfo) {
4741     return This->lpVtbl->SetClientInfo(This,pClientInfo);
4742 }
4743 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxOutputSampleSize(IWMReaderAdvanced3* This,DWORD dwOutput,DWORD *pcbMax) {
4744     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
4745 }
4746 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxStreamSampleSize(IWMReaderAdvanced3* This,WORD wStream,DWORD *pcbMax) {
4747     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
4748 }
4749 static FORCEINLINE HRESULT IWMReaderAdvanced3_NotifyLateDelivery(IWMReaderAdvanced3* This,QWORD cnsLateness) {
4750     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
4751 }
4752 /*** IWMReaderAdvanced2 methods ***/
4753 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE Mode) {
4754     return This->lpVtbl->SetPlayMode(This,Mode);
4755 }
4756 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE *pMode) {
4757     return This->lpVtbl->GetPlayMode(This,pMode);
4758 }
4759 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetBufferProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
4760     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
4761 }
4762 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetDownloadProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
4763     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
4764 }
4765 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetSaveAsProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent) {
4766     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
4767 }
4768 static FORCEINLINE HRESULT IWMReaderAdvanced3_SaveFileAs(IWMReaderAdvanced3* This,const WCHAR *pwszFilename) {
4769     return This->lpVtbl->SaveFileAs(This,pwszFilename);
4770 }
4771 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetProtocolName(IWMReaderAdvanced3* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
4772     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
4773 }
4774 static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtMarker(IWMReaderAdvanced3* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
4775     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
4776 }
4777 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
4778     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
4779 }
4780 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
4781     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
4782 }
4783 static FORCEINLINE HRESULT IWMReaderAdvanced3_Preroll(IWMReaderAdvanced3* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
4784     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
4785 }
4786 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetLogClientID(IWMReaderAdvanced3* This,WINBOOL fLogClientID) {
4787     return This->lpVtbl->SetLogClientID(This,fLogClientID);
4788 }
4789 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetLogClientID(IWMReaderAdvanced3* This,WINBOOL *pfLogClientID) {
4790     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
4791 }
4792 static FORCEINLINE HRESULT IWMReaderAdvanced3_StopBuffering(IWMReaderAdvanced3* This) {
4793     return This->lpVtbl->StopBuffering(This);
4794 }
4795 static FORCEINLINE HRESULT IWMReaderAdvanced3_OpenStream(IWMReaderAdvanced3* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
4796     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
4797 }
4798 /*** IWMReaderAdvanced3 methods ***/
4799 static FORCEINLINE HRESULT IWMReaderAdvanced3_StopNetStreaming(IWMReaderAdvanced3* This) {
4800     return This->lpVtbl->StopNetStreaming(This);
4801 }
4802 static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtPosition(IWMReaderAdvanced3* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
4803     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
4804 }
4805 #endif
4806 #endif
4807 
4808 #endif
4809 
4810 
4811 #endif  /* __IWMReaderAdvanced3_INTERFACE_DEFINED__ */
4812 
4813 /*****************************************************************************
4814  * IWMReaderAdvanced4 interface
4815  */
4816 #ifndef __IWMReaderAdvanced4_INTERFACE_DEFINED__
4817 #define __IWMReaderAdvanced4_INTERFACE_DEFINED__
4818 
4819 DEFINE_GUID(IID_IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85);
4820 #if defined(__cplusplus) && !defined(CINTERFACE)
4821 MIDL_INTERFACE("945a76a2-12ae-4d48-bd3c-cd1d90399b85")
4822 IWMReaderAdvanced4 : public IWMReaderAdvanced3
4823 {
4824     virtual HRESULT STDMETHODCALLTYPE GetLanguageCount(
4825         DWORD dwOutputNum,
4826         WORD *pwLanguageCount) = 0;
4827 
4828     virtual HRESULT STDMETHODCALLTYPE GetLanguage(
4829         DWORD dwOutputNum,
4830         WORD wLanguage,
4831         WCHAR *pwszLanguageString,
4832         WORD *pcchLanguageStringLength) = 0;
4833 
4834     virtual HRESULT STDMETHODCALLTYPE GetMaxSpeedFactor(
4835         double *pdblFactor) = 0;
4836 
4837     virtual HRESULT STDMETHODCALLTYPE IsUsingFastCache(
4838         WINBOOL *pfUsingFastCache) = 0;
4839 
4840     virtual HRESULT STDMETHODCALLTYPE AddLogParam(
4841         LPCWSTR wszNameSpace,
4842         LPCWSTR wszName,
4843         LPCWSTR wszValue) = 0;
4844 
4845     virtual HRESULT STDMETHODCALLTYPE SendLogParams(
4846         ) = 0;
4847 
4848     virtual HRESULT STDMETHODCALLTYPE CanSaveFileAs(
4849         WINBOOL *pfCanSave) = 0;
4850 
4851     virtual HRESULT STDMETHODCALLTYPE CancelSaveFileAs(
4852         ) = 0;
4853 
4854     virtual HRESULT STDMETHODCALLTYPE GetURL(
4855         WCHAR *pwszURL,
4856         DWORD *pcchURL) = 0;
4857 
4858 };
4859 #ifdef __CRT_UUID_DECL
4860 __CRT_UUID_DECL(IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85)
4861 #endif
4862 #else
4863 typedef struct IWMReaderAdvanced4Vtbl {
4864     BEGIN_INTERFACE
4865 
4866     /*** IUnknown methods ***/
4867     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4868         IWMReaderAdvanced4 *This,
4869         REFIID riid,
4870         void **ppvObject);
4871 
4872     ULONG (STDMETHODCALLTYPE *AddRef)(
4873         IWMReaderAdvanced4 *This);
4874 
4875     ULONG (STDMETHODCALLTYPE *Release)(
4876         IWMReaderAdvanced4 *This);
4877 
4878     /*** IWMReaderAdvanced methods ***/
4879     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
4880         IWMReaderAdvanced4 *This,
4881         WINBOOL fUserClock);
4882 
4883     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
4884         IWMReaderAdvanced4 *This,
4885         WINBOOL *pfUserClock);
4886 
4887     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
4888         IWMReaderAdvanced4 *This,
4889         QWORD cnsTime);
4890 
4891     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
4892         IWMReaderAdvanced4 *This,
4893         WINBOOL fSelection);
4894 
4895     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
4896         IWMReaderAdvanced4 *This,
4897         WINBOOL *pfSelection);
4898 
4899     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
4900         IWMReaderAdvanced4 *This,
4901         WORD cStreamCount,
4902         WORD *pwStreamNumbers,
4903         WMT_STREAM_SELECTION *pSelections);
4904 
4905     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
4906         IWMReaderAdvanced4 *This,
4907         WORD wStreamNum,
4908         WMT_STREAM_SELECTION *pSelection);
4909 
4910     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
4911         IWMReaderAdvanced4 *This,
4912         WINBOOL fGetCallbacks);
4913 
4914     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
4915         IWMReaderAdvanced4 *This,
4916         WINBOOL *pfGetCallbacks);
4917 
4918     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
4919         IWMReaderAdvanced4 *This,
4920         WORD wStreamNum,
4921         WINBOOL fReceiveStreamSamples);
4922 
4923     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
4924         IWMReaderAdvanced4 *This,
4925         WORD wStreamNum,
4926         WINBOOL *pfReceiveStreamSamples);
4927 
4928     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
4929         IWMReaderAdvanced4 *This,
4930         DWORD dwOutputNum,
4931         WINBOOL fAllocate);
4932 
4933     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
4934         IWMReaderAdvanced4 *This,
4935         DWORD dwOutputNum,
4936         WINBOOL *pfAllocate);
4937 
4938     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
4939         IWMReaderAdvanced4 *This,
4940         WORD wStreamNum,
4941         WINBOOL fAllocate);
4942 
4943     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
4944         IWMReaderAdvanced4 *This,
4945         WORD dwStreamNum,
4946         WINBOOL *pfAllocate);
4947 
4948     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
4949         IWMReaderAdvanced4 *This,
4950         WM_READER_STATISTICS *pStatistics);
4951 
4952     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
4953         IWMReaderAdvanced4 *This,
4954         WM_READER_CLIENTINFO *pClientInfo);
4955 
4956     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
4957         IWMReaderAdvanced4 *This,
4958         DWORD dwOutput,
4959         DWORD *pcbMax);
4960 
4961     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
4962         IWMReaderAdvanced4 *This,
4963         WORD wStream,
4964         DWORD *pcbMax);
4965 
4966     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
4967         IWMReaderAdvanced4 *This,
4968         QWORD cnsLateness);
4969 
4970     /*** IWMReaderAdvanced2 methods ***/
4971     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
4972         IWMReaderAdvanced4 *This,
4973         WMT_PLAY_MODE Mode);
4974 
4975     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
4976         IWMReaderAdvanced4 *This,
4977         WMT_PLAY_MODE *pMode);
4978 
4979     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
4980         IWMReaderAdvanced4 *This,
4981         DWORD *pdwPercent,
4982         QWORD *pcnsBuffering);
4983 
4984     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
4985         IWMReaderAdvanced4 *This,
4986         DWORD *pdwPercent,
4987         QWORD *pqwBytesDownloaded,
4988         QWORD *pcnsDownload);
4989 
4990     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
4991         IWMReaderAdvanced4 *This,
4992         DWORD *pdwPercent);
4993 
4994     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
4995         IWMReaderAdvanced4 *This,
4996         const WCHAR *pwszFilename);
4997 
4998     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
4999         IWMReaderAdvanced4 *This,
5000         WCHAR *pwszProtocol,
5001         DWORD *pcchProtocol);
5002 
5003     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
5004         IWMReaderAdvanced4 *This,
5005         WORD wMarkerIndex,
5006         QWORD cnsDuration,
5007         float fRate,
5008         void *pvContext);
5009 
5010     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
5011         IWMReaderAdvanced4 *This,
5012         DWORD dwOutputNum,
5013         LPCWSTR pszName,
5014         WMT_ATTR_DATATYPE *pType,
5015         BYTE *pValue,
5016         WORD *pcbLength);
5017 
5018     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
5019         IWMReaderAdvanced4 *This,
5020         DWORD dwOutputNum,
5021         LPCWSTR pszName,
5022         WMT_ATTR_DATATYPE Type,
5023         const BYTE *pValue,
5024         WORD cbLength);
5025 
5026     HRESULT (STDMETHODCALLTYPE *Preroll)(
5027         IWMReaderAdvanced4 *This,
5028         QWORD cnsStart,
5029         QWORD cnsDuration,
5030         float fRate);
5031 
5032     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
5033         IWMReaderAdvanced4 *This,
5034         WINBOOL fLogClientID);
5035 
5036     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
5037         IWMReaderAdvanced4 *This,
5038         WINBOOL *pfLogClientID);
5039 
5040     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
5041         IWMReaderAdvanced4 *This);
5042 
5043     HRESULT (STDMETHODCALLTYPE *OpenStream)(
5044         IWMReaderAdvanced4 *This,
5045         IStream *pStream,
5046         IWMReaderCallback *pCallback,
5047         void *pvContext);
5048 
5049     /*** IWMReaderAdvanced3 methods ***/
5050     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
5051         IWMReaderAdvanced4 *This);
5052 
5053     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
5054         IWMReaderAdvanced4 *This,
5055         WORD wStreamNum,
5056         void *pvOffsetStart,
5057         void *pvDuration,
5058         WMT_OFFSET_FORMAT dwOffsetFormat,
5059         float fRate,
5060         void *pvContext);
5061 
5062     /*** IWMReaderAdvanced4 methods ***/
5063     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
5064         IWMReaderAdvanced4 *This,
5065         DWORD dwOutputNum,
5066         WORD *pwLanguageCount);
5067 
5068     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
5069         IWMReaderAdvanced4 *This,
5070         DWORD dwOutputNum,
5071         WORD wLanguage,
5072         WCHAR *pwszLanguageString,
5073         WORD *pcchLanguageStringLength);
5074 
5075     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
5076         IWMReaderAdvanced4 *This,
5077         double *pdblFactor);
5078 
5079     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
5080         IWMReaderAdvanced4 *This,
5081         WINBOOL *pfUsingFastCache);
5082 
5083     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
5084         IWMReaderAdvanced4 *This,
5085         LPCWSTR wszNameSpace,
5086         LPCWSTR wszName,
5087         LPCWSTR wszValue);
5088 
5089     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
5090         IWMReaderAdvanced4 *This);
5091 
5092     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
5093         IWMReaderAdvanced4 *This,
5094         WINBOOL *pfCanSave);
5095 
5096     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
5097         IWMReaderAdvanced4 *This);
5098 
5099     HRESULT (STDMETHODCALLTYPE *GetURL)(
5100         IWMReaderAdvanced4 *This,
5101         WCHAR *pwszURL,
5102         DWORD *pcchURL);
5103 
5104     END_INTERFACE
5105 } IWMReaderAdvanced4Vtbl;
5106 
5107 interface IWMReaderAdvanced4 {
5108     CONST_VTBL IWMReaderAdvanced4Vtbl* lpVtbl;
5109 };
5110 
5111 #ifdef COBJMACROS
5112 #ifndef WIDL_C_INLINE_WRAPPERS
5113 /*** IUnknown methods ***/
5114 #define IWMReaderAdvanced4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5115 #define IWMReaderAdvanced4_AddRef(This) (This)->lpVtbl->AddRef(This)
5116 #define IWMReaderAdvanced4_Release(This) (This)->lpVtbl->Release(This)
5117 /*** IWMReaderAdvanced methods ***/
5118 #define IWMReaderAdvanced4_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
5119 #define IWMReaderAdvanced4_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
5120 #define IWMReaderAdvanced4_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
5121 #define IWMReaderAdvanced4_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
5122 #define IWMReaderAdvanced4_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
5123 #define IWMReaderAdvanced4_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
5124 #define IWMReaderAdvanced4_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
5125 #define IWMReaderAdvanced4_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
5126 #define IWMReaderAdvanced4_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
5127 #define IWMReaderAdvanced4_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
5128 #define IWMReaderAdvanced4_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
5129 #define IWMReaderAdvanced4_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
5130 #define IWMReaderAdvanced4_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
5131 #define IWMReaderAdvanced4_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
5132 #define IWMReaderAdvanced4_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
5133 #define IWMReaderAdvanced4_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
5134 #define IWMReaderAdvanced4_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
5135 #define IWMReaderAdvanced4_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
5136 #define IWMReaderAdvanced4_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
5137 #define IWMReaderAdvanced4_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
5138 /*** IWMReaderAdvanced2 methods ***/
5139 #define IWMReaderAdvanced4_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
5140 #define IWMReaderAdvanced4_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
5141 #define IWMReaderAdvanced4_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
5142 #define IWMReaderAdvanced4_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
5143 #define IWMReaderAdvanced4_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
5144 #define IWMReaderAdvanced4_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
5145 #define IWMReaderAdvanced4_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
5146 #define IWMReaderAdvanced4_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
5147 #define IWMReaderAdvanced4_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
5148 #define IWMReaderAdvanced4_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
5149 #define IWMReaderAdvanced4_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
5150 #define IWMReaderAdvanced4_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
5151 #define IWMReaderAdvanced4_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
5152 #define IWMReaderAdvanced4_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
5153 #define IWMReaderAdvanced4_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
5154 /*** IWMReaderAdvanced3 methods ***/
5155 #define IWMReaderAdvanced4_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
5156 #define IWMReaderAdvanced4_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
5157 /*** IWMReaderAdvanced4 methods ***/
5158 #define IWMReaderAdvanced4_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
5159 #define IWMReaderAdvanced4_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
5160 #define IWMReaderAdvanced4_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
5161 #define IWMReaderAdvanced4_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
5162 #define IWMReaderAdvanced4_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
5163 #define IWMReaderAdvanced4_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
5164 #define IWMReaderAdvanced4_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
5165 #define IWMReaderAdvanced4_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
5166 #define IWMReaderAdvanced4_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
5167 #else
5168 /*** IUnknown methods ***/
5169 static FORCEINLINE HRESULT IWMReaderAdvanced4_QueryInterface(IWMReaderAdvanced4* This,REFIID riid,void **ppvObject) {
5170     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5171 }
5172 static FORCEINLINE ULONG IWMReaderAdvanced4_AddRef(IWMReaderAdvanced4* This) {
5173     return This->lpVtbl->AddRef(This);
5174 }
5175 static FORCEINLINE ULONG IWMReaderAdvanced4_Release(IWMReaderAdvanced4* This) {
5176     return This->lpVtbl->Release(This);
5177 }
5178 /*** IWMReaderAdvanced methods ***/
5179 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL fUserClock) {
5180     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
5181 }
5182 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL *pfUserClock) {
5183     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
5184 }
5185 static FORCEINLINE HRESULT IWMReaderAdvanced4_DeliverTime(IWMReaderAdvanced4* This,QWORD cnsTime) {
5186     return This->lpVtbl->DeliverTime(This,cnsTime);
5187 }
5188 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL fSelection) {
5189     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
5190 }
5191 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL *pfSelection) {
5192     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
5193 }
5194 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetStreamsSelected(IWMReaderAdvanced4* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
5195     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
5196 }
5197 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStreamSelected(IWMReaderAdvanced4* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
5198     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
5199 }
5200 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL fGetCallbacks) {
5201     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
5202 }
5203 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL *pfGetCallbacks) {
5204     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
5205 }
5206 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
5207     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
5208 }
5209 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
5210     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
5211 }
5212 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL fAllocate) {
5213     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
5214 }
5215 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
5216     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
5217 }
5218 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForStream(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fAllocate) {
5219     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
5220 }
5221 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForStream(IWMReaderAdvanced4* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
5222     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
5223 }
5224 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStatistics(IWMReaderAdvanced4* This,WM_READER_STATISTICS *pStatistics) {
5225     return This->lpVtbl->GetStatistics(This,pStatistics);
5226 }
5227 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetClientInfo(IWMReaderAdvanced4* This,WM_READER_CLIENTINFO *pClientInfo) {
5228     return This->lpVtbl->SetClientInfo(This,pClientInfo);
5229 }
5230 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxOutputSampleSize(IWMReaderAdvanced4* This,DWORD dwOutput,DWORD *pcbMax) {
5231     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
5232 }
5233 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxStreamSampleSize(IWMReaderAdvanced4* This,WORD wStream,DWORD *pcbMax) {
5234     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
5235 }
5236 static FORCEINLINE HRESULT IWMReaderAdvanced4_NotifyLateDelivery(IWMReaderAdvanced4* This,QWORD cnsLateness) {
5237     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
5238 }
5239 /*** IWMReaderAdvanced2 methods ***/
5240 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE Mode) {
5241     return This->lpVtbl->SetPlayMode(This,Mode);
5242 }
5243 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE *pMode) {
5244     return This->lpVtbl->GetPlayMode(This,pMode);
5245 }
5246 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetBufferProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
5247     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
5248 }
5249 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetDownloadProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
5250     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
5251 }
5252 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetSaveAsProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent) {
5253     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
5254 }
5255 static FORCEINLINE HRESULT IWMReaderAdvanced4_SaveFileAs(IWMReaderAdvanced4* This,const WCHAR *pwszFilename) {
5256     return This->lpVtbl->SaveFileAs(This,pwszFilename);
5257 }
5258 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetProtocolName(IWMReaderAdvanced4* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
5259     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
5260 }
5261 static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtMarker(IWMReaderAdvanced4* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
5262     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
5263 }
5264 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
5265     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
5266 }
5267 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
5268     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
5269 }
5270 static FORCEINLINE HRESULT IWMReaderAdvanced4_Preroll(IWMReaderAdvanced4* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
5271     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
5272 }
5273 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetLogClientID(IWMReaderAdvanced4* This,WINBOOL fLogClientID) {
5274     return This->lpVtbl->SetLogClientID(This,fLogClientID);
5275 }
5276 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLogClientID(IWMReaderAdvanced4* This,WINBOOL *pfLogClientID) {
5277     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
5278 }
5279 static FORCEINLINE HRESULT IWMReaderAdvanced4_StopBuffering(IWMReaderAdvanced4* This) {
5280     return This->lpVtbl->StopBuffering(This);
5281 }
5282 static FORCEINLINE HRESULT IWMReaderAdvanced4_OpenStream(IWMReaderAdvanced4* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
5283     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
5284 }
5285 /*** IWMReaderAdvanced3 methods ***/
5286 static FORCEINLINE HRESULT IWMReaderAdvanced4_StopNetStreaming(IWMReaderAdvanced4* This) {
5287     return This->lpVtbl->StopNetStreaming(This);
5288 }
5289 static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtPosition(IWMReaderAdvanced4* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
5290     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
5291 }
5292 /*** IWMReaderAdvanced4 methods ***/
5293 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguageCount(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
5294     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
5295 }
5296 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguage(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
5297     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
5298 }
5299 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxSpeedFactor(IWMReaderAdvanced4* This,double *pdblFactor) {
5300     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
5301 }
5302 static FORCEINLINE HRESULT IWMReaderAdvanced4_IsUsingFastCache(IWMReaderAdvanced4* This,WINBOOL *pfUsingFastCache) {
5303     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
5304 }
5305 static FORCEINLINE HRESULT IWMReaderAdvanced4_AddLogParam(IWMReaderAdvanced4* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
5306     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
5307 }
5308 static FORCEINLINE HRESULT IWMReaderAdvanced4_SendLogParams(IWMReaderAdvanced4* This) {
5309     return This->lpVtbl->SendLogParams(This);
5310 }
5311 static FORCEINLINE HRESULT IWMReaderAdvanced4_CanSaveFileAs(IWMReaderAdvanced4* This,WINBOOL *pfCanSave) {
5312     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
5313 }
5314 static FORCEINLINE HRESULT IWMReaderAdvanced4_CancelSaveFileAs(IWMReaderAdvanced4* This) {
5315     return This->lpVtbl->CancelSaveFileAs(This);
5316 }
5317 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetURL(IWMReaderAdvanced4* This,WCHAR *pwszURL,DWORD *pcchURL) {
5318     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
5319 }
5320 #endif
5321 #endif
5322 
5323 #endif
5324 
5325 
5326 #endif  /* __IWMReaderAdvanced4_INTERFACE_DEFINED__ */
5327 
5328 /*****************************************************************************
5329  * IWMReaderAdvanced5 interface
5330  */
5331 #ifndef __IWMReaderAdvanced5_INTERFACE_DEFINED__
5332 #define __IWMReaderAdvanced5_INTERFACE_DEFINED__
5333 
5334 DEFINE_GUID(IID_IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63);
5335 #if defined(__cplusplus) && !defined(CINTERFACE)
5336 MIDL_INTERFACE("24c44db0-55d1-49ae-a5cc-f13815e36363")
5337 IWMReaderAdvanced5 : public IWMReaderAdvanced4
5338 {
5339     virtual HRESULT STDMETHODCALLTYPE SetPlayerHook(
5340         DWORD dwOutputNum,
5341         IWMPlayerHook *pHook) = 0;
5342 
5343 };
5344 #ifdef __CRT_UUID_DECL
5345 __CRT_UUID_DECL(IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63)
5346 #endif
5347 #else
5348 typedef struct IWMReaderAdvanced5Vtbl {
5349     BEGIN_INTERFACE
5350 
5351     /*** IUnknown methods ***/
5352     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5353         IWMReaderAdvanced5 *This,
5354         REFIID riid,
5355         void **ppvObject);
5356 
5357     ULONG (STDMETHODCALLTYPE *AddRef)(
5358         IWMReaderAdvanced5 *This);
5359 
5360     ULONG (STDMETHODCALLTYPE *Release)(
5361         IWMReaderAdvanced5 *This);
5362 
5363     /*** IWMReaderAdvanced methods ***/
5364     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
5365         IWMReaderAdvanced5 *This,
5366         WINBOOL fUserClock);
5367 
5368     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
5369         IWMReaderAdvanced5 *This,
5370         WINBOOL *pfUserClock);
5371 
5372     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
5373         IWMReaderAdvanced5 *This,
5374         QWORD cnsTime);
5375 
5376     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
5377         IWMReaderAdvanced5 *This,
5378         WINBOOL fSelection);
5379 
5380     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
5381         IWMReaderAdvanced5 *This,
5382         WINBOOL *pfSelection);
5383 
5384     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
5385         IWMReaderAdvanced5 *This,
5386         WORD cStreamCount,
5387         WORD *pwStreamNumbers,
5388         WMT_STREAM_SELECTION *pSelections);
5389 
5390     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
5391         IWMReaderAdvanced5 *This,
5392         WORD wStreamNum,
5393         WMT_STREAM_SELECTION *pSelection);
5394 
5395     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
5396         IWMReaderAdvanced5 *This,
5397         WINBOOL fGetCallbacks);
5398 
5399     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
5400         IWMReaderAdvanced5 *This,
5401         WINBOOL *pfGetCallbacks);
5402 
5403     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
5404         IWMReaderAdvanced5 *This,
5405         WORD wStreamNum,
5406         WINBOOL fReceiveStreamSamples);
5407 
5408     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
5409         IWMReaderAdvanced5 *This,
5410         WORD wStreamNum,
5411         WINBOOL *pfReceiveStreamSamples);
5412 
5413     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
5414         IWMReaderAdvanced5 *This,
5415         DWORD dwOutputNum,
5416         WINBOOL fAllocate);
5417 
5418     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
5419         IWMReaderAdvanced5 *This,
5420         DWORD dwOutputNum,
5421         WINBOOL *pfAllocate);
5422 
5423     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
5424         IWMReaderAdvanced5 *This,
5425         WORD wStreamNum,
5426         WINBOOL fAllocate);
5427 
5428     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
5429         IWMReaderAdvanced5 *This,
5430         WORD dwStreamNum,
5431         WINBOOL *pfAllocate);
5432 
5433     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
5434         IWMReaderAdvanced5 *This,
5435         WM_READER_STATISTICS *pStatistics);
5436 
5437     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
5438         IWMReaderAdvanced5 *This,
5439         WM_READER_CLIENTINFO *pClientInfo);
5440 
5441     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
5442         IWMReaderAdvanced5 *This,
5443         DWORD dwOutput,
5444         DWORD *pcbMax);
5445 
5446     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
5447         IWMReaderAdvanced5 *This,
5448         WORD wStream,
5449         DWORD *pcbMax);
5450 
5451     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
5452         IWMReaderAdvanced5 *This,
5453         QWORD cnsLateness);
5454 
5455     /*** IWMReaderAdvanced2 methods ***/
5456     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
5457         IWMReaderAdvanced5 *This,
5458         WMT_PLAY_MODE Mode);
5459 
5460     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
5461         IWMReaderAdvanced5 *This,
5462         WMT_PLAY_MODE *pMode);
5463 
5464     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
5465         IWMReaderAdvanced5 *This,
5466         DWORD *pdwPercent,
5467         QWORD *pcnsBuffering);
5468 
5469     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
5470         IWMReaderAdvanced5 *This,
5471         DWORD *pdwPercent,
5472         QWORD *pqwBytesDownloaded,
5473         QWORD *pcnsDownload);
5474 
5475     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
5476         IWMReaderAdvanced5 *This,
5477         DWORD *pdwPercent);
5478 
5479     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
5480         IWMReaderAdvanced5 *This,
5481         const WCHAR *pwszFilename);
5482 
5483     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
5484         IWMReaderAdvanced5 *This,
5485         WCHAR *pwszProtocol,
5486         DWORD *pcchProtocol);
5487 
5488     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
5489         IWMReaderAdvanced5 *This,
5490         WORD wMarkerIndex,
5491         QWORD cnsDuration,
5492         float fRate,
5493         void *pvContext);
5494 
5495     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
5496         IWMReaderAdvanced5 *This,
5497         DWORD dwOutputNum,
5498         LPCWSTR pszName,
5499         WMT_ATTR_DATATYPE *pType,
5500         BYTE *pValue,
5501         WORD *pcbLength);
5502 
5503     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
5504         IWMReaderAdvanced5 *This,
5505         DWORD dwOutputNum,
5506         LPCWSTR pszName,
5507         WMT_ATTR_DATATYPE Type,
5508         const BYTE *pValue,
5509         WORD cbLength);
5510 
5511     HRESULT (STDMETHODCALLTYPE *Preroll)(
5512         IWMReaderAdvanced5 *This,
5513         QWORD cnsStart,
5514         QWORD cnsDuration,
5515         float fRate);
5516 
5517     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
5518         IWMReaderAdvanced5 *This,
5519         WINBOOL fLogClientID);
5520 
5521     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
5522         IWMReaderAdvanced5 *This,
5523         WINBOOL *pfLogClientID);
5524 
5525     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
5526         IWMReaderAdvanced5 *This);
5527 
5528     HRESULT (STDMETHODCALLTYPE *OpenStream)(
5529         IWMReaderAdvanced5 *This,
5530         IStream *pStream,
5531         IWMReaderCallback *pCallback,
5532         void *pvContext);
5533 
5534     /*** IWMReaderAdvanced3 methods ***/
5535     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
5536         IWMReaderAdvanced5 *This);
5537 
5538     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
5539         IWMReaderAdvanced5 *This,
5540         WORD wStreamNum,
5541         void *pvOffsetStart,
5542         void *pvDuration,
5543         WMT_OFFSET_FORMAT dwOffsetFormat,
5544         float fRate,
5545         void *pvContext);
5546 
5547     /*** IWMReaderAdvanced4 methods ***/
5548     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
5549         IWMReaderAdvanced5 *This,
5550         DWORD dwOutputNum,
5551         WORD *pwLanguageCount);
5552 
5553     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
5554         IWMReaderAdvanced5 *This,
5555         DWORD dwOutputNum,
5556         WORD wLanguage,
5557         WCHAR *pwszLanguageString,
5558         WORD *pcchLanguageStringLength);
5559 
5560     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
5561         IWMReaderAdvanced5 *This,
5562         double *pdblFactor);
5563 
5564     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
5565         IWMReaderAdvanced5 *This,
5566         WINBOOL *pfUsingFastCache);
5567 
5568     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
5569         IWMReaderAdvanced5 *This,
5570         LPCWSTR wszNameSpace,
5571         LPCWSTR wszName,
5572         LPCWSTR wszValue);
5573 
5574     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
5575         IWMReaderAdvanced5 *This);
5576 
5577     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
5578         IWMReaderAdvanced5 *This,
5579         WINBOOL *pfCanSave);
5580 
5581     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
5582         IWMReaderAdvanced5 *This);
5583 
5584     HRESULT (STDMETHODCALLTYPE *GetURL)(
5585         IWMReaderAdvanced5 *This,
5586         WCHAR *pwszURL,
5587         DWORD *pcchURL);
5588 
5589     /*** IWMReaderAdvanced5 methods ***/
5590     HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
5591         IWMReaderAdvanced5 *This,
5592         DWORD dwOutputNum,
5593         IWMPlayerHook *pHook);
5594 
5595     END_INTERFACE
5596 } IWMReaderAdvanced5Vtbl;
5597 
5598 interface IWMReaderAdvanced5 {
5599     CONST_VTBL IWMReaderAdvanced5Vtbl* lpVtbl;
5600 };
5601 
5602 #ifdef COBJMACROS
5603 #ifndef WIDL_C_INLINE_WRAPPERS
5604 /*** IUnknown methods ***/
5605 #define IWMReaderAdvanced5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
5606 #define IWMReaderAdvanced5_AddRef(This) (This)->lpVtbl->AddRef(This)
5607 #define IWMReaderAdvanced5_Release(This) (This)->lpVtbl->Release(This)
5608 /*** IWMReaderAdvanced methods ***/
5609 #define IWMReaderAdvanced5_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
5610 #define IWMReaderAdvanced5_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
5611 #define IWMReaderAdvanced5_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
5612 #define IWMReaderAdvanced5_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
5613 #define IWMReaderAdvanced5_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
5614 #define IWMReaderAdvanced5_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
5615 #define IWMReaderAdvanced5_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
5616 #define IWMReaderAdvanced5_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
5617 #define IWMReaderAdvanced5_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
5618 #define IWMReaderAdvanced5_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
5619 #define IWMReaderAdvanced5_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
5620 #define IWMReaderAdvanced5_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
5621 #define IWMReaderAdvanced5_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
5622 #define IWMReaderAdvanced5_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
5623 #define IWMReaderAdvanced5_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
5624 #define IWMReaderAdvanced5_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
5625 #define IWMReaderAdvanced5_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
5626 #define IWMReaderAdvanced5_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
5627 #define IWMReaderAdvanced5_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
5628 #define IWMReaderAdvanced5_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
5629 /*** IWMReaderAdvanced2 methods ***/
5630 #define IWMReaderAdvanced5_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
5631 #define IWMReaderAdvanced5_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
5632 #define IWMReaderAdvanced5_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
5633 #define IWMReaderAdvanced5_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
5634 #define IWMReaderAdvanced5_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
5635 #define IWMReaderAdvanced5_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
5636 #define IWMReaderAdvanced5_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
5637 #define IWMReaderAdvanced5_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
5638 #define IWMReaderAdvanced5_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
5639 #define IWMReaderAdvanced5_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
5640 #define IWMReaderAdvanced5_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
5641 #define IWMReaderAdvanced5_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
5642 #define IWMReaderAdvanced5_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
5643 #define IWMReaderAdvanced5_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
5644 #define IWMReaderAdvanced5_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
5645 /*** IWMReaderAdvanced3 methods ***/
5646 #define IWMReaderAdvanced5_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
5647 #define IWMReaderAdvanced5_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
5648 /*** IWMReaderAdvanced4 methods ***/
5649 #define IWMReaderAdvanced5_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
5650 #define IWMReaderAdvanced5_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
5651 #define IWMReaderAdvanced5_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
5652 #define IWMReaderAdvanced5_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
5653 #define IWMReaderAdvanced5_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
5654 #define IWMReaderAdvanced5_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
5655 #define IWMReaderAdvanced5_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
5656 #define IWMReaderAdvanced5_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
5657 #define IWMReaderAdvanced5_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
5658 /*** IWMReaderAdvanced5 methods ***/
5659 #define IWMReaderAdvanced5_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
5660 #else
5661 /*** IUnknown methods ***/
5662 static FORCEINLINE HRESULT IWMReaderAdvanced5_QueryInterface(IWMReaderAdvanced5* This,REFIID riid,void **ppvObject) {
5663     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
5664 }
5665 static FORCEINLINE ULONG IWMReaderAdvanced5_AddRef(IWMReaderAdvanced5* This) {
5666     return This->lpVtbl->AddRef(This);
5667 }
5668 static FORCEINLINE ULONG IWMReaderAdvanced5_Release(IWMReaderAdvanced5* This) {
5669     return This->lpVtbl->Release(This);
5670 }
5671 /*** IWMReaderAdvanced methods ***/
5672 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL fUserClock) {
5673     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
5674 }
5675 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL *pfUserClock) {
5676     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
5677 }
5678 static FORCEINLINE HRESULT IWMReaderAdvanced5_DeliverTime(IWMReaderAdvanced5* This,QWORD cnsTime) {
5679     return This->lpVtbl->DeliverTime(This,cnsTime);
5680 }
5681 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL fSelection) {
5682     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
5683 }
5684 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL *pfSelection) {
5685     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
5686 }
5687 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetStreamsSelected(IWMReaderAdvanced5* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
5688     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
5689 }
5690 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStreamSelected(IWMReaderAdvanced5* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
5691     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
5692 }
5693 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL fGetCallbacks) {
5694     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
5695 }
5696 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL *pfGetCallbacks) {
5697     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
5698 }
5699 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
5700     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
5701 }
5702 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
5703     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
5704 }
5705 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL fAllocate) {
5706     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
5707 }
5708 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
5709     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
5710 }
5711 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForStream(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fAllocate) {
5712     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
5713 }
5714 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForStream(IWMReaderAdvanced5* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
5715     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
5716 }
5717 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStatistics(IWMReaderAdvanced5* This,WM_READER_STATISTICS *pStatistics) {
5718     return This->lpVtbl->GetStatistics(This,pStatistics);
5719 }
5720 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetClientInfo(IWMReaderAdvanced5* This,WM_READER_CLIENTINFO *pClientInfo) {
5721     return This->lpVtbl->SetClientInfo(This,pClientInfo);
5722 }
5723 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxOutputSampleSize(IWMReaderAdvanced5* This,DWORD dwOutput,DWORD *pcbMax) {
5724     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
5725 }
5726 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxStreamSampleSize(IWMReaderAdvanced5* This,WORD wStream,DWORD *pcbMax) {
5727     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
5728 }
5729 static FORCEINLINE HRESULT IWMReaderAdvanced5_NotifyLateDelivery(IWMReaderAdvanced5* This,QWORD cnsLateness) {
5730     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
5731 }
5732 /*** IWMReaderAdvanced2 methods ***/
5733 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE Mode) {
5734     return This->lpVtbl->SetPlayMode(This,Mode);
5735 }
5736 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE *pMode) {
5737     return This->lpVtbl->GetPlayMode(This,pMode);
5738 }
5739 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetBufferProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
5740     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
5741 }
5742 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetDownloadProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
5743     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
5744 }
5745 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetSaveAsProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent) {
5746     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
5747 }
5748 static FORCEINLINE HRESULT IWMReaderAdvanced5_SaveFileAs(IWMReaderAdvanced5* This,const WCHAR *pwszFilename) {
5749     return This->lpVtbl->SaveFileAs(This,pwszFilename);
5750 }
5751 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetProtocolName(IWMReaderAdvanced5* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
5752     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
5753 }
5754 static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtMarker(IWMReaderAdvanced5* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
5755     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
5756 }
5757 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
5758     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
5759 }
5760 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
5761     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
5762 }
5763 static FORCEINLINE HRESULT IWMReaderAdvanced5_Preroll(IWMReaderAdvanced5* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
5764     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
5765 }
5766 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetLogClientID(IWMReaderAdvanced5* This,WINBOOL fLogClientID) {
5767     return This->lpVtbl->SetLogClientID(This,fLogClientID);
5768 }
5769 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLogClientID(IWMReaderAdvanced5* This,WINBOOL *pfLogClientID) {
5770     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
5771 }
5772 static FORCEINLINE HRESULT IWMReaderAdvanced5_StopBuffering(IWMReaderAdvanced5* This) {
5773     return This->lpVtbl->StopBuffering(This);
5774 }
5775 static FORCEINLINE HRESULT IWMReaderAdvanced5_OpenStream(IWMReaderAdvanced5* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
5776     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
5777 }
5778 /*** IWMReaderAdvanced3 methods ***/
5779 static FORCEINLINE HRESULT IWMReaderAdvanced5_StopNetStreaming(IWMReaderAdvanced5* This) {
5780     return This->lpVtbl->StopNetStreaming(This);
5781 }
5782 static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtPosition(IWMReaderAdvanced5* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
5783     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
5784 }
5785 /*** IWMReaderAdvanced4 methods ***/
5786 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguageCount(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
5787     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
5788 }
5789 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguage(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
5790     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
5791 }
5792 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxSpeedFactor(IWMReaderAdvanced5* This,double *pdblFactor) {
5793     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
5794 }
5795 static FORCEINLINE HRESULT IWMReaderAdvanced5_IsUsingFastCache(IWMReaderAdvanced5* This,WINBOOL *pfUsingFastCache) {
5796     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
5797 }
5798 static FORCEINLINE HRESULT IWMReaderAdvanced5_AddLogParam(IWMReaderAdvanced5* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
5799     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
5800 }
5801 static FORCEINLINE HRESULT IWMReaderAdvanced5_SendLogParams(IWMReaderAdvanced5* This) {
5802     return This->lpVtbl->SendLogParams(This);
5803 }
5804 static FORCEINLINE HRESULT IWMReaderAdvanced5_CanSaveFileAs(IWMReaderAdvanced5* This,WINBOOL *pfCanSave) {
5805     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
5806 }
5807 static FORCEINLINE HRESULT IWMReaderAdvanced5_CancelSaveFileAs(IWMReaderAdvanced5* This) {
5808     return This->lpVtbl->CancelSaveFileAs(This);
5809 }
5810 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetURL(IWMReaderAdvanced5* This,WCHAR *pwszURL,DWORD *pcchURL) {
5811     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
5812 }
5813 /*** IWMReaderAdvanced5 methods ***/
5814 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayerHook(IWMReaderAdvanced5* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
5815     return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
5816 }
5817 #endif
5818 #endif
5819 
5820 #endif
5821 
5822 
5823 #endif  /* __IWMReaderAdvanced5_INTERFACE_DEFINED__ */
5824 
5825 /*****************************************************************************
5826  * IWMReaderAdvanced6 interface
5827  */
5828 #ifndef __IWMReaderAdvanced6_INTERFACE_DEFINED__
5829 #define __IWMReaderAdvanced6_INTERFACE_DEFINED__
5830 
5831 DEFINE_GUID(IID_IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde);
5832 #if defined(__cplusplus) && !defined(CINTERFACE)
5833 MIDL_INTERFACE("18a2e7f8-428f-4acd-8a00-e64639bc93de")
5834 IWMReaderAdvanced6 : public IWMReaderAdvanced5
5835 {
5836     virtual HRESULT STDMETHODCALLTYPE SetProtectStreamSamples(
5837         BYTE *pbCertificate,
5838         DWORD cbCertificate,
5839         DWORD dwCertificateType,
5840         DWORD dwFlags,
5841         BYTE *pbInitializationVector,
5842         DWORD *pcbInitializationVector) = 0;
5843 
5844 };
5845 #ifdef __CRT_UUID_DECL
5846 __CRT_UUID_DECL(IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde)
5847 #endif
5848 #else
5849 typedef struct IWMReaderAdvanced6Vtbl {
5850     BEGIN_INTERFACE
5851 
5852     /*** IUnknown methods ***/
5853     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
5854         IWMReaderAdvanced6 *This,
5855         REFIID riid,
5856         void **ppvObject);
5857 
5858     ULONG (STDMETHODCALLTYPE *AddRef)(
5859         IWMReaderAdvanced6 *This);
5860 
5861     ULONG (STDMETHODCALLTYPE *Release)(
5862         IWMReaderAdvanced6 *This);
5863 
5864     /*** IWMReaderAdvanced methods ***/
5865     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
5866         IWMReaderAdvanced6 *This,
5867         WINBOOL fUserClock);
5868 
5869     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
5870         IWMReaderAdvanced6 *This,
5871         WINBOOL *pfUserClock);
5872 
5873     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
5874         IWMReaderAdvanced6 *This,
5875         QWORD cnsTime);
5876 
5877     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
5878         IWMReaderAdvanced6 *This,
5879         WINBOOL fSelection);
5880 
5881     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
5882         IWMReaderAdvanced6 *This,
5883         WINBOOL *pfSelection);
5884 
5885     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
5886         IWMReaderAdvanced6 *This,
5887         WORD cStreamCount,
5888         WORD *pwStreamNumbers,
5889         WMT_STREAM_SELECTION *pSelections);
5890 
5891     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
5892         IWMReaderAdvanced6 *This,
5893         WORD wStreamNum,
5894         WMT_STREAM_SELECTION *pSelection);
5895 
5896     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
5897         IWMReaderAdvanced6 *This,
5898         WINBOOL fGetCallbacks);
5899 
5900     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
5901         IWMReaderAdvanced6 *This,
5902         WINBOOL *pfGetCallbacks);
5903 
5904     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
5905         IWMReaderAdvanced6 *This,
5906         WORD wStreamNum,
5907         WINBOOL fReceiveStreamSamples);
5908 
5909     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
5910         IWMReaderAdvanced6 *This,
5911         WORD wStreamNum,
5912         WINBOOL *pfReceiveStreamSamples);
5913 
5914     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
5915         IWMReaderAdvanced6 *This,
5916         DWORD dwOutputNum,
5917         WINBOOL fAllocate);
5918 
5919     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
5920         IWMReaderAdvanced6 *This,
5921         DWORD dwOutputNum,
5922         WINBOOL *pfAllocate);
5923 
5924     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
5925         IWMReaderAdvanced6 *This,
5926         WORD wStreamNum,
5927         WINBOOL fAllocate);
5928 
5929     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
5930         IWMReaderAdvanced6 *This,
5931         WORD dwStreamNum,
5932         WINBOOL *pfAllocate);
5933 
5934     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
5935         IWMReaderAdvanced6 *This,
5936         WM_READER_STATISTICS *pStatistics);
5937 
5938     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
5939         IWMReaderAdvanced6 *This,
5940         WM_READER_CLIENTINFO *pClientInfo);
5941 
5942     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
5943         IWMReaderAdvanced6 *This,
5944         DWORD dwOutput,
5945         DWORD *pcbMax);
5946 
5947     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
5948         IWMReaderAdvanced6 *This,
5949         WORD wStream,
5950         DWORD *pcbMax);
5951 
5952     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
5953         IWMReaderAdvanced6 *This,
5954         QWORD cnsLateness);
5955 
5956     /*** IWMReaderAdvanced2 methods ***/
5957     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
5958         IWMReaderAdvanced6 *This,
5959         WMT_PLAY_MODE Mode);
5960 
5961     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
5962         IWMReaderAdvanced6 *This,
5963         WMT_PLAY_MODE *pMode);
5964 
5965     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
5966         IWMReaderAdvanced6 *This,
5967         DWORD *pdwPercent,
5968         QWORD *pcnsBuffering);
5969 
5970     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
5971         IWMReaderAdvanced6 *This,
5972         DWORD *pdwPercent,
5973         QWORD *pqwBytesDownloaded,
5974         QWORD *pcnsDownload);
5975 
5976     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
5977         IWMReaderAdvanced6 *This,
5978         DWORD *pdwPercent);
5979 
5980     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
5981         IWMReaderAdvanced6 *This,
5982         const WCHAR *pwszFilename);
5983 
5984     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
5985         IWMReaderAdvanced6 *This,
5986         WCHAR *pwszProtocol,
5987         DWORD *pcchProtocol);
5988 
5989     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
5990         IWMReaderAdvanced6 *This,
5991         WORD wMarkerIndex,
5992         QWORD cnsDuration,
5993         float fRate,
5994         void *pvContext);
5995 
5996     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
5997         IWMReaderAdvanced6 *This,
5998         DWORD dwOutputNum,
5999         LPCWSTR pszName,
6000         WMT_ATTR_DATATYPE *pType,
6001         BYTE *pValue,
6002         WORD *pcbLength);
6003 
6004     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
6005         IWMReaderAdvanced6 *This,
6006         DWORD dwOutputNum,
6007         LPCWSTR pszName,
6008         WMT_ATTR_DATATYPE Type,
6009         const BYTE *pValue,
6010         WORD cbLength);
6011 
6012     HRESULT (STDMETHODCALLTYPE *Preroll)(
6013         IWMReaderAdvanced6 *This,
6014         QWORD cnsStart,
6015         QWORD cnsDuration,
6016         float fRate);
6017 
6018     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
6019         IWMReaderAdvanced6 *This,
6020         WINBOOL fLogClientID);
6021 
6022     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
6023         IWMReaderAdvanced6 *This,
6024         WINBOOL *pfLogClientID);
6025 
6026     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
6027         IWMReaderAdvanced6 *This);
6028 
6029     HRESULT (STDMETHODCALLTYPE *OpenStream)(
6030         IWMReaderAdvanced6 *This,
6031         IStream *pStream,
6032         IWMReaderCallback *pCallback,
6033         void *pvContext);
6034 
6035     /*** IWMReaderAdvanced3 methods ***/
6036     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
6037         IWMReaderAdvanced6 *This);
6038 
6039     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
6040         IWMReaderAdvanced6 *This,
6041         WORD wStreamNum,
6042         void *pvOffsetStart,
6043         void *pvDuration,
6044         WMT_OFFSET_FORMAT dwOffsetFormat,
6045         float fRate,
6046         void *pvContext);
6047 
6048     /*** IWMReaderAdvanced4 methods ***/
6049     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
6050         IWMReaderAdvanced6 *This,
6051         DWORD dwOutputNum,
6052         WORD *pwLanguageCount);
6053 
6054     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
6055         IWMReaderAdvanced6 *This,
6056         DWORD dwOutputNum,
6057         WORD wLanguage,
6058         WCHAR *pwszLanguageString,
6059         WORD *pcchLanguageStringLength);
6060 
6061     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
6062         IWMReaderAdvanced6 *This,
6063         double *pdblFactor);
6064 
6065     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
6066         IWMReaderAdvanced6 *This,
6067         WINBOOL *pfUsingFastCache);
6068 
6069     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
6070         IWMReaderAdvanced6 *This,
6071         LPCWSTR wszNameSpace,
6072         LPCWSTR wszName,
6073         LPCWSTR wszValue);
6074 
6075     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
6076         IWMReaderAdvanced6 *This);
6077 
6078     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
6079         IWMReaderAdvanced6 *This,
6080         WINBOOL *pfCanSave);
6081 
6082     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
6083         IWMReaderAdvanced6 *This);
6084 
6085     HRESULT (STDMETHODCALLTYPE *GetURL)(
6086         IWMReaderAdvanced6 *This,
6087         WCHAR *pwszURL,
6088         DWORD *pcchURL);
6089 
6090     /*** IWMReaderAdvanced5 methods ***/
6091     HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
6092         IWMReaderAdvanced6 *This,
6093         DWORD dwOutputNum,
6094         IWMPlayerHook *pHook);
6095 
6096     /*** IWMReaderAdvanced6 methods ***/
6097     HRESULT (STDMETHODCALLTYPE *SetProtectStreamSamples)(
6098         IWMReaderAdvanced6 *This,
6099         BYTE *pbCertificate,
6100         DWORD cbCertificate,
6101         DWORD dwCertificateType,
6102         DWORD dwFlags,
6103         BYTE *pbInitializationVector,
6104         DWORD *pcbInitializationVector);
6105 
6106     END_INTERFACE
6107 } IWMReaderAdvanced6Vtbl;
6108 
6109 interface IWMReaderAdvanced6 {
6110     CONST_VTBL IWMReaderAdvanced6Vtbl* lpVtbl;
6111 };
6112 
6113 #ifdef COBJMACROS
6114 #ifndef WIDL_C_INLINE_WRAPPERS
6115 /*** IUnknown methods ***/
6116 #define IWMReaderAdvanced6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6117 #define IWMReaderAdvanced6_AddRef(This) (This)->lpVtbl->AddRef(This)
6118 #define IWMReaderAdvanced6_Release(This) (This)->lpVtbl->Release(This)
6119 /*** IWMReaderAdvanced methods ***/
6120 #define IWMReaderAdvanced6_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
6121 #define IWMReaderAdvanced6_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
6122 #define IWMReaderAdvanced6_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
6123 #define IWMReaderAdvanced6_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
6124 #define IWMReaderAdvanced6_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
6125 #define IWMReaderAdvanced6_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
6126 #define IWMReaderAdvanced6_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
6127 #define IWMReaderAdvanced6_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
6128 #define IWMReaderAdvanced6_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
6129 #define IWMReaderAdvanced6_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
6130 #define IWMReaderAdvanced6_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
6131 #define IWMReaderAdvanced6_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
6132 #define IWMReaderAdvanced6_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
6133 #define IWMReaderAdvanced6_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
6134 #define IWMReaderAdvanced6_GetAllocateForStream(This,dwStreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate)
6135 #define IWMReaderAdvanced6_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
6136 #define IWMReaderAdvanced6_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
6137 #define IWMReaderAdvanced6_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
6138 #define IWMReaderAdvanced6_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
6139 #define IWMReaderAdvanced6_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
6140 /*** IWMReaderAdvanced2 methods ***/
6141 #define IWMReaderAdvanced6_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
6142 #define IWMReaderAdvanced6_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
6143 #define IWMReaderAdvanced6_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
6144 #define IWMReaderAdvanced6_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
6145 #define IWMReaderAdvanced6_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
6146 #define IWMReaderAdvanced6_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
6147 #define IWMReaderAdvanced6_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
6148 #define IWMReaderAdvanced6_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
6149 #define IWMReaderAdvanced6_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
6150 #define IWMReaderAdvanced6_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
6151 #define IWMReaderAdvanced6_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
6152 #define IWMReaderAdvanced6_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
6153 #define IWMReaderAdvanced6_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
6154 #define IWMReaderAdvanced6_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
6155 #define IWMReaderAdvanced6_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
6156 /*** IWMReaderAdvanced3 methods ***/
6157 #define IWMReaderAdvanced6_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
6158 #define IWMReaderAdvanced6_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
6159 /*** IWMReaderAdvanced4 methods ***/
6160 #define IWMReaderAdvanced6_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
6161 #define IWMReaderAdvanced6_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
6162 #define IWMReaderAdvanced6_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
6163 #define IWMReaderAdvanced6_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
6164 #define IWMReaderAdvanced6_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
6165 #define IWMReaderAdvanced6_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
6166 #define IWMReaderAdvanced6_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
6167 #define IWMReaderAdvanced6_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
6168 #define IWMReaderAdvanced6_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
6169 /*** IWMReaderAdvanced5 methods ***/
6170 #define IWMReaderAdvanced6_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
6171 /*** IWMReaderAdvanced6 methods ***/
6172 #define IWMReaderAdvanced6_SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector) (This)->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector)
6173 #else
6174 /*** IUnknown methods ***/
6175 static FORCEINLINE HRESULT IWMReaderAdvanced6_QueryInterface(IWMReaderAdvanced6* This,REFIID riid,void **ppvObject) {
6176     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6177 }
6178 static FORCEINLINE ULONG IWMReaderAdvanced6_AddRef(IWMReaderAdvanced6* This) {
6179     return This->lpVtbl->AddRef(This);
6180 }
6181 static FORCEINLINE ULONG IWMReaderAdvanced6_Release(IWMReaderAdvanced6* This) {
6182     return This->lpVtbl->Release(This);
6183 }
6184 /*** IWMReaderAdvanced methods ***/
6185 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL fUserClock) {
6186     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
6187 }
6188 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL *pfUserClock) {
6189     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
6190 }
6191 static FORCEINLINE HRESULT IWMReaderAdvanced6_DeliverTime(IWMReaderAdvanced6* This,QWORD cnsTime) {
6192     return This->lpVtbl->DeliverTime(This,cnsTime);
6193 }
6194 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL fSelection) {
6195     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
6196 }
6197 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL *pfSelection) {
6198     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
6199 }
6200 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetStreamsSelected(IWMReaderAdvanced6* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
6201     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
6202 }
6203 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStreamSelected(IWMReaderAdvanced6* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
6204     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
6205 }
6206 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL fGetCallbacks) {
6207     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
6208 }
6209 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL *pfGetCallbacks) {
6210     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
6211 }
6212 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
6213     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
6214 }
6215 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
6216     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
6217 }
6218 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL fAllocate) {
6219     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
6220 }
6221 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
6222     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
6223 }
6224 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForStream(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fAllocate) {
6225     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
6226 }
6227 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForStream(IWMReaderAdvanced6* This,WORD dwStreamNum,WINBOOL *pfAllocate) {
6228     return This->lpVtbl->GetAllocateForStream(This,dwStreamNum,pfAllocate);
6229 }
6230 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStatistics(IWMReaderAdvanced6* This,WM_READER_STATISTICS *pStatistics) {
6231     return This->lpVtbl->GetStatistics(This,pStatistics);
6232 }
6233 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetClientInfo(IWMReaderAdvanced6* This,WM_READER_CLIENTINFO *pClientInfo) {
6234     return This->lpVtbl->SetClientInfo(This,pClientInfo);
6235 }
6236 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxOutputSampleSize(IWMReaderAdvanced6* This,DWORD dwOutput,DWORD *pcbMax) {
6237     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
6238 }
6239 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxStreamSampleSize(IWMReaderAdvanced6* This,WORD wStream,DWORD *pcbMax) {
6240     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
6241 }
6242 static FORCEINLINE HRESULT IWMReaderAdvanced6_NotifyLateDelivery(IWMReaderAdvanced6* This,QWORD cnsLateness) {
6243     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
6244 }
6245 /*** IWMReaderAdvanced2 methods ***/
6246 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE Mode) {
6247     return This->lpVtbl->SetPlayMode(This,Mode);
6248 }
6249 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE *pMode) {
6250     return This->lpVtbl->GetPlayMode(This,pMode);
6251 }
6252 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetBufferProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
6253     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
6254 }
6255 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetDownloadProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
6256     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
6257 }
6258 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetSaveAsProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent) {
6259     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
6260 }
6261 static FORCEINLINE HRESULT IWMReaderAdvanced6_SaveFileAs(IWMReaderAdvanced6* This,const WCHAR *pwszFilename) {
6262     return This->lpVtbl->SaveFileAs(This,pwszFilename);
6263 }
6264 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetProtocolName(IWMReaderAdvanced6* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
6265     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
6266 }
6267 static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtMarker(IWMReaderAdvanced6* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
6268     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
6269 }
6270 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
6271     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
6272 }
6273 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
6274     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
6275 }
6276 static FORCEINLINE HRESULT IWMReaderAdvanced6_Preroll(IWMReaderAdvanced6* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
6277     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
6278 }
6279 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetLogClientID(IWMReaderAdvanced6* This,WINBOOL fLogClientID) {
6280     return This->lpVtbl->SetLogClientID(This,fLogClientID);
6281 }
6282 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLogClientID(IWMReaderAdvanced6* This,WINBOOL *pfLogClientID) {
6283     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
6284 }
6285 static FORCEINLINE HRESULT IWMReaderAdvanced6_StopBuffering(IWMReaderAdvanced6* This) {
6286     return This->lpVtbl->StopBuffering(This);
6287 }
6288 static FORCEINLINE HRESULT IWMReaderAdvanced6_OpenStream(IWMReaderAdvanced6* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
6289     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
6290 }
6291 /*** IWMReaderAdvanced3 methods ***/
6292 static FORCEINLINE HRESULT IWMReaderAdvanced6_StopNetStreaming(IWMReaderAdvanced6* This) {
6293     return This->lpVtbl->StopNetStreaming(This);
6294 }
6295 static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtPosition(IWMReaderAdvanced6* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
6296     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
6297 }
6298 /*** IWMReaderAdvanced4 methods ***/
6299 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguageCount(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
6300     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
6301 }
6302 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguage(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
6303     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
6304 }
6305 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxSpeedFactor(IWMReaderAdvanced6* This,double *pdblFactor) {
6306     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
6307 }
6308 static FORCEINLINE HRESULT IWMReaderAdvanced6_IsUsingFastCache(IWMReaderAdvanced6* This,WINBOOL *pfUsingFastCache) {
6309     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
6310 }
6311 static FORCEINLINE HRESULT IWMReaderAdvanced6_AddLogParam(IWMReaderAdvanced6* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
6312     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
6313 }
6314 static FORCEINLINE HRESULT IWMReaderAdvanced6_SendLogParams(IWMReaderAdvanced6* This) {
6315     return This->lpVtbl->SendLogParams(This);
6316 }
6317 static FORCEINLINE HRESULT IWMReaderAdvanced6_CanSaveFileAs(IWMReaderAdvanced6* This,WINBOOL *pfCanSave) {
6318     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
6319 }
6320 static FORCEINLINE HRESULT IWMReaderAdvanced6_CancelSaveFileAs(IWMReaderAdvanced6* This) {
6321     return This->lpVtbl->CancelSaveFileAs(This);
6322 }
6323 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetURL(IWMReaderAdvanced6* This,WCHAR *pwszURL,DWORD *pcchURL) {
6324     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
6325 }
6326 /*** IWMReaderAdvanced5 methods ***/
6327 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayerHook(IWMReaderAdvanced6* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
6328     return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
6329 }
6330 /*** IWMReaderAdvanced6 methods ***/
6331 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetProtectStreamSamples(IWMReaderAdvanced6* This,BYTE *pbCertificate,DWORD cbCertificate,DWORD dwCertificateType,DWORD dwFlags,BYTE *pbInitializationVector,DWORD *pcbInitializationVector) {
6332     return This->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector);
6333 }
6334 #endif
6335 #endif
6336 
6337 #endif
6338 
6339 
6340 #endif  /* __IWMReaderAdvanced6_INTERFACE_DEFINED__ */
6341 
6342 /*****************************************************************************
6343  * IWMSyncReader interface
6344  */
6345 #ifndef __IWMSyncReader_INTERFACE_DEFINED__
6346 #define __IWMSyncReader_INTERFACE_DEFINED__
6347 
6348 DEFINE_GUID(IID_IWMSyncReader, 0x9397f121, 0x7705, 0x4dc9, 0xb0,0x49, 0x98,0xb6,0x98,0x18,0x84,0x14);
6349 #if defined(__cplusplus) && !defined(CINTERFACE)
6350 MIDL_INTERFACE("9397f121-7705-4dc9-b049-98b698188414")
6351 IWMSyncReader : public IUnknown
6352 {
6353     virtual HRESULT STDMETHODCALLTYPE Open(
6354         const WCHAR *pwszFilename) = 0;
6355 
6356     virtual HRESULT STDMETHODCALLTYPE Close(
6357         ) = 0;
6358 
6359     virtual HRESULT STDMETHODCALLTYPE SetRange(
6360         QWORD cnsStartTime,
6361         LONGLONG cnsDuration) = 0;
6362 
6363     virtual HRESULT STDMETHODCALLTYPE SetRangeByFrame(
6364         WORD wStreamNum,
6365         QWORD qwFrameNumber,
6366         LONGLONG cFramesToRead) = 0;
6367 
6368     virtual HRESULT STDMETHODCALLTYPE GetNextSample(
6369         WORD wStreamNum,
6370         INSSBuffer **ppSample,
6371         QWORD *pcnsSampleTime,
6372         QWORD *pcnsDuration,
6373         DWORD *pdwFlags,
6374         DWORD *pdwOutputNum,
6375         WORD *pwStreamNum) = 0;
6376 
6377     virtual HRESULT STDMETHODCALLTYPE SetStreamsSelected(
6378         WORD cStreamCount,
6379         WORD *pwStreamNumbers,
6380         WMT_STREAM_SELECTION *pSelections) = 0;
6381 
6382     virtual HRESULT STDMETHODCALLTYPE GetStreamSelected(
6383         WORD wStreamNum,
6384         WMT_STREAM_SELECTION *pSelection) = 0;
6385 
6386     virtual HRESULT STDMETHODCALLTYPE SetReadStreamSamples(
6387         WORD wStreamNum,
6388         WINBOOL fCompressed) = 0;
6389 
6390     virtual HRESULT STDMETHODCALLTYPE GetReadStreamSamples(
6391         WORD wStreamNum,
6392         WINBOOL *pfCompressed) = 0;
6393 
6394     virtual HRESULT STDMETHODCALLTYPE GetOutputSetting(
6395         DWORD dwOutputNum,
6396         LPCWSTR pszName,
6397         WMT_ATTR_DATATYPE *pType,
6398         BYTE *pValue,
6399         WORD *pcbLength) = 0;
6400 
6401     virtual HRESULT STDMETHODCALLTYPE SetOutputSetting(
6402         DWORD dwOutputNum,
6403         LPCWSTR pszName,
6404         WMT_ATTR_DATATYPE Type,
6405         const BYTE *pValue,
6406         WORD cbLength) = 0;
6407 
6408     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
6409         DWORD *pcOutputs) = 0;
6410 
6411     virtual HRESULT STDMETHODCALLTYPE GetOutputProps(
6412         DWORD dwOutputNum,
6413         IWMOutputMediaProps **ppOutput) = 0;
6414 
6415     virtual HRESULT STDMETHODCALLTYPE SetOutputProps(
6416         DWORD dwOutputNum,
6417         IWMOutputMediaProps *pOutput) = 0;
6418 
6419     virtual HRESULT STDMETHODCALLTYPE GetOutputFormatCount(
6420         DWORD dwOutputNum,
6421         DWORD *pcFormats) = 0;
6422 
6423     virtual HRESULT STDMETHODCALLTYPE GetOutputFormat(
6424         DWORD dwOutputNum,
6425         DWORD dwFormatNum,
6426         IWMOutputMediaProps **ppProps) = 0;
6427 
6428     virtual HRESULT STDMETHODCALLTYPE GetOutputNumberForStream(
6429         WORD wStreamNum,
6430         DWORD *pdwOutputNum) = 0;
6431 
6432     virtual HRESULT STDMETHODCALLTYPE GetStreamNumberForOutput(
6433         DWORD dwOutputNum,
6434         WORD *pwStreamNum) = 0;
6435 
6436     virtual HRESULT STDMETHODCALLTYPE GetMaxOutputSampleSize(
6437         DWORD dwOutput,
6438         DWORD *pcbMax) = 0;
6439 
6440     virtual HRESULT STDMETHODCALLTYPE GetMaxStreamSampleSize(
6441         WORD wStream,
6442         DWORD *pcbMax) = 0;
6443 
6444     virtual HRESULT STDMETHODCALLTYPE OpenStream(
6445         IStream *pStream) = 0;
6446 
6447 };
6448 #ifdef __CRT_UUID_DECL
6449 __CRT_UUID_DECL(IWMSyncReader, 0x9397f121, 0x7705, 0x4dc9, 0xb0,0x49, 0x98,0xb6,0x98,0x18,0x84,0x14)
6450 #endif
6451 #else
6452 typedef struct IWMSyncReaderVtbl {
6453     BEGIN_INTERFACE
6454 
6455     /*** IUnknown methods ***/
6456     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6457         IWMSyncReader *This,
6458         REFIID riid,
6459         void **ppvObject);
6460 
6461     ULONG (STDMETHODCALLTYPE *AddRef)(
6462         IWMSyncReader *This);
6463 
6464     ULONG (STDMETHODCALLTYPE *Release)(
6465         IWMSyncReader *This);
6466 
6467     /*** IWMSyncReader methods ***/
6468     HRESULT (STDMETHODCALLTYPE *Open)(
6469         IWMSyncReader *This,
6470         const WCHAR *pwszFilename);
6471 
6472     HRESULT (STDMETHODCALLTYPE *Close)(
6473         IWMSyncReader *This);
6474 
6475     HRESULT (STDMETHODCALLTYPE *SetRange)(
6476         IWMSyncReader *This,
6477         QWORD cnsStartTime,
6478         LONGLONG cnsDuration);
6479 
6480     HRESULT (STDMETHODCALLTYPE *SetRangeByFrame)(
6481         IWMSyncReader *This,
6482         WORD wStreamNum,
6483         QWORD qwFrameNumber,
6484         LONGLONG cFramesToRead);
6485 
6486     HRESULT (STDMETHODCALLTYPE *GetNextSample)(
6487         IWMSyncReader *This,
6488         WORD wStreamNum,
6489         INSSBuffer **ppSample,
6490         QWORD *pcnsSampleTime,
6491         QWORD *pcnsDuration,
6492         DWORD *pdwFlags,
6493         DWORD *pdwOutputNum,
6494         WORD *pwStreamNum);
6495 
6496     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
6497         IWMSyncReader *This,
6498         WORD cStreamCount,
6499         WORD *pwStreamNumbers,
6500         WMT_STREAM_SELECTION *pSelections);
6501 
6502     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
6503         IWMSyncReader *This,
6504         WORD wStreamNum,
6505         WMT_STREAM_SELECTION *pSelection);
6506 
6507     HRESULT (STDMETHODCALLTYPE *SetReadStreamSamples)(
6508         IWMSyncReader *This,
6509         WORD wStreamNum,
6510         WINBOOL fCompressed);
6511 
6512     HRESULT (STDMETHODCALLTYPE *GetReadStreamSamples)(
6513         IWMSyncReader *This,
6514         WORD wStreamNum,
6515         WINBOOL *pfCompressed);
6516 
6517     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
6518         IWMSyncReader *This,
6519         DWORD dwOutputNum,
6520         LPCWSTR pszName,
6521         WMT_ATTR_DATATYPE *pType,
6522         BYTE *pValue,
6523         WORD *pcbLength);
6524 
6525     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
6526         IWMSyncReader *This,
6527         DWORD dwOutputNum,
6528         LPCWSTR pszName,
6529         WMT_ATTR_DATATYPE Type,
6530         const BYTE *pValue,
6531         WORD cbLength);
6532 
6533     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
6534         IWMSyncReader *This,
6535         DWORD *pcOutputs);
6536 
6537     HRESULT (STDMETHODCALLTYPE *GetOutputProps)(
6538         IWMSyncReader *This,
6539         DWORD dwOutputNum,
6540         IWMOutputMediaProps **ppOutput);
6541 
6542     HRESULT (STDMETHODCALLTYPE *SetOutputProps)(
6543         IWMSyncReader *This,
6544         DWORD dwOutputNum,
6545         IWMOutputMediaProps *pOutput);
6546 
6547     HRESULT (STDMETHODCALLTYPE *GetOutputFormatCount)(
6548         IWMSyncReader *This,
6549         DWORD dwOutputNum,
6550         DWORD *pcFormats);
6551 
6552     HRESULT (STDMETHODCALLTYPE *GetOutputFormat)(
6553         IWMSyncReader *This,
6554         DWORD dwOutputNum,
6555         DWORD dwFormatNum,
6556         IWMOutputMediaProps **ppProps);
6557 
6558     HRESULT (STDMETHODCALLTYPE *GetOutputNumberForStream)(
6559         IWMSyncReader *This,
6560         WORD wStreamNum,
6561         DWORD *pdwOutputNum);
6562 
6563     HRESULT (STDMETHODCALLTYPE *GetStreamNumberForOutput)(
6564         IWMSyncReader *This,
6565         DWORD dwOutputNum,
6566         WORD *pwStreamNum);
6567 
6568     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
6569         IWMSyncReader *This,
6570         DWORD dwOutput,
6571         DWORD *pcbMax);
6572 
6573     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
6574         IWMSyncReader *This,
6575         WORD wStream,
6576         DWORD *pcbMax);
6577 
6578     HRESULT (STDMETHODCALLTYPE *OpenStream)(
6579         IWMSyncReader *This,
6580         IStream *pStream);
6581 
6582     END_INTERFACE
6583 } IWMSyncReaderVtbl;
6584 
6585 interface IWMSyncReader {
6586     CONST_VTBL IWMSyncReaderVtbl* lpVtbl;
6587 };
6588 
6589 #ifdef COBJMACROS
6590 #ifndef WIDL_C_INLINE_WRAPPERS
6591 /*** IUnknown methods ***/
6592 #define IWMSyncReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6593 #define IWMSyncReader_AddRef(This) (This)->lpVtbl->AddRef(This)
6594 #define IWMSyncReader_Release(This) (This)->lpVtbl->Release(This)
6595 /*** IWMSyncReader methods ***/
6596 #define IWMSyncReader_Open(This,pwszFilename) (This)->lpVtbl->Open(This,pwszFilename)
6597 #define IWMSyncReader_Close(This) (This)->lpVtbl->Close(This)
6598 #define IWMSyncReader_SetRange(This,cnsStartTime,cnsDuration) (This)->lpVtbl->SetRange(This,cnsStartTime,cnsDuration)
6599 #define IWMSyncReader_SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead) (This)->lpVtbl->SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead)
6600 #define IWMSyncReader_GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum) (This)->lpVtbl->GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum)
6601 #define IWMSyncReader_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
6602 #define IWMSyncReader_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
6603 #define IWMSyncReader_SetReadStreamSamples(This,wStreamNum,fCompressed) (This)->lpVtbl->SetReadStreamSamples(This,wStreamNum,fCompressed)
6604 #define IWMSyncReader_GetReadStreamSamples(This,wStreamNum,pfCompressed) (This)->lpVtbl->GetReadStreamSamples(This,wStreamNum,pfCompressed)
6605 #define IWMSyncReader_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
6606 #define IWMSyncReader_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
6607 #define IWMSyncReader_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
6608 #define IWMSyncReader_GetOutputProps(This,dwOutputNum,ppOutput) (This)->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput)
6609 #define IWMSyncReader_SetOutputProps(This,dwOutputNum,pOutput) (This)->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput)
6610 #define IWMSyncReader_GetOutputFormatCount(This,dwOutputNum,pcFormats) (This)->lpVtbl->GetOutputFormatCount(This,dwOutputNum,pcFormats)
6611 #define IWMSyncReader_GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps) (This)->lpVtbl->GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps)
6612 #define IWMSyncReader_GetOutputNumberForStream(This,wStreamNum,pdwOutputNum) (This)->lpVtbl->GetOutputNumberForStream(This,wStreamNum,pdwOutputNum)
6613 #define IWMSyncReader_GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum) (This)->lpVtbl->GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum)
6614 #define IWMSyncReader_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
6615 #define IWMSyncReader_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
6616 #define IWMSyncReader_OpenStream(This,pStream) (This)->lpVtbl->OpenStream(This,pStream)
6617 #else
6618 /*** IUnknown methods ***/
6619 static FORCEINLINE HRESULT IWMSyncReader_QueryInterface(IWMSyncReader* This,REFIID riid,void **ppvObject) {
6620     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6621 }
6622 static FORCEINLINE ULONG IWMSyncReader_AddRef(IWMSyncReader* This) {
6623     return This->lpVtbl->AddRef(This);
6624 }
6625 static FORCEINLINE ULONG IWMSyncReader_Release(IWMSyncReader* This) {
6626     return This->lpVtbl->Release(This);
6627 }
6628 /*** IWMSyncReader methods ***/
6629 static FORCEINLINE HRESULT IWMSyncReader_Open(IWMSyncReader* This,const WCHAR *pwszFilename) {
6630     return This->lpVtbl->Open(This,pwszFilename);
6631 }
6632 static FORCEINLINE HRESULT IWMSyncReader_Close(IWMSyncReader* This) {
6633     return This->lpVtbl->Close(This);
6634 }
6635 static FORCEINLINE HRESULT IWMSyncReader_SetRange(IWMSyncReader* This,QWORD cnsStartTime,LONGLONG cnsDuration) {
6636     return This->lpVtbl->SetRange(This,cnsStartTime,cnsDuration);
6637 }
6638 static FORCEINLINE HRESULT IWMSyncReader_SetRangeByFrame(IWMSyncReader* This,WORD wStreamNum,QWORD qwFrameNumber,LONGLONG cFramesToRead) {
6639     return This->lpVtbl->SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead);
6640 }
6641 static FORCEINLINE HRESULT IWMSyncReader_GetNextSample(IWMSyncReader* This,WORD wStreamNum,INSSBuffer **ppSample,QWORD *pcnsSampleTime,QWORD *pcnsDuration,DWORD *pdwFlags,DWORD *pdwOutputNum,WORD *pwStreamNum) {
6642     return This->lpVtbl->GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum);
6643 }
6644 static FORCEINLINE HRESULT IWMSyncReader_SetStreamsSelected(IWMSyncReader* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
6645     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
6646 }
6647 static FORCEINLINE HRESULT IWMSyncReader_GetStreamSelected(IWMSyncReader* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
6648     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
6649 }
6650 static FORCEINLINE HRESULT IWMSyncReader_SetReadStreamSamples(IWMSyncReader* This,WORD wStreamNum,WINBOOL fCompressed) {
6651     return This->lpVtbl->SetReadStreamSamples(This,wStreamNum,fCompressed);
6652 }
6653 static FORCEINLINE HRESULT IWMSyncReader_GetReadStreamSamples(IWMSyncReader* This,WORD wStreamNum,WINBOOL *pfCompressed) {
6654     return This->lpVtbl->GetReadStreamSamples(This,wStreamNum,pfCompressed);
6655 }
6656 static FORCEINLINE HRESULT IWMSyncReader_GetOutputSetting(IWMSyncReader* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
6657     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
6658 }
6659 static FORCEINLINE HRESULT IWMSyncReader_SetOutputSetting(IWMSyncReader* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
6660     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
6661 }
6662 static FORCEINLINE HRESULT IWMSyncReader_GetOutputCount(IWMSyncReader* This,DWORD *pcOutputs) {
6663     return This->lpVtbl->GetOutputCount(This,pcOutputs);
6664 }
6665 static FORCEINLINE HRESULT IWMSyncReader_GetOutputProps(IWMSyncReader* This,DWORD dwOutputNum,IWMOutputMediaProps **ppOutput) {
6666     return This->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput);
6667 }
6668 static FORCEINLINE HRESULT IWMSyncReader_SetOutputProps(IWMSyncReader* This,DWORD dwOutputNum,IWMOutputMediaProps *pOutput) {
6669     return This->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput);
6670 }
6671 static FORCEINLINE HRESULT IWMSyncReader_GetOutputFormatCount(IWMSyncReader* This,DWORD dwOutputNum,DWORD *pcFormats) {
6672     return This->lpVtbl->GetOutputFormatCount(This,dwOutputNum,pcFormats);
6673 }
6674 static FORCEINLINE HRESULT IWMSyncReader_GetOutputFormat(IWMSyncReader* This,DWORD dwOutputNum,DWORD dwFormatNum,IWMOutputMediaProps **ppProps) {
6675     return This->lpVtbl->GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps);
6676 }
6677 static FORCEINLINE HRESULT IWMSyncReader_GetOutputNumberForStream(IWMSyncReader* This,WORD wStreamNum,DWORD *pdwOutputNum) {
6678     return This->lpVtbl->GetOutputNumberForStream(This,wStreamNum,pdwOutputNum);
6679 }
6680 static FORCEINLINE HRESULT IWMSyncReader_GetStreamNumberForOutput(IWMSyncReader* This,DWORD dwOutputNum,WORD *pwStreamNum) {
6681     return This->lpVtbl->GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum);
6682 }
6683 static FORCEINLINE HRESULT IWMSyncReader_GetMaxOutputSampleSize(IWMSyncReader* This,DWORD dwOutput,DWORD *pcbMax) {
6684     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
6685 }
6686 static FORCEINLINE HRESULT IWMSyncReader_GetMaxStreamSampleSize(IWMSyncReader* This,WORD wStream,DWORD *pcbMax) {
6687     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
6688 }
6689 static FORCEINLINE HRESULT IWMSyncReader_OpenStream(IWMSyncReader* This,IStream *pStream) {
6690     return This->lpVtbl->OpenStream(This,pStream);
6691 }
6692 #endif
6693 #endif
6694 
6695 #endif
6696 
6697 
6698 #endif  /* __IWMSyncReader_INTERFACE_DEFINED__ */
6699 
6700 /*****************************************************************************
6701  * IWMInputMediaProps interface
6702  */
6703 #ifndef __IWMInputMediaProps_INTERFACE_DEFINED__
6704 #define __IWMInputMediaProps_INTERFACE_DEFINED__
6705 
6706 DEFINE_GUID(IID_IWMInputMediaProps, 0x96406bd5, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
6707 #if defined(__cplusplus) && !defined(CINTERFACE)
6708 MIDL_INTERFACE("96406bd5-2b2b-11d3-b36b-00c04f6108ff")
6709 IWMInputMediaProps : public IWMMediaProps
6710 {
6711     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
6712         WCHAR *pwszName,
6713         WORD *pcchName) = 0;
6714 
6715     virtual HRESULT STDMETHODCALLTYPE GetGroupName(
6716         WCHAR *pwszName,
6717         WORD *pcchName) = 0;
6718 
6719 };
6720 #ifdef __CRT_UUID_DECL
6721 __CRT_UUID_DECL(IWMInputMediaProps, 0x96406bd5, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
6722 #endif
6723 #else
6724 typedef struct IWMInputMediaPropsVtbl {
6725     BEGIN_INTERFACE
6726 
6727     /*** IUnknown methods ***/
6728     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6729         IWMInputMediaProps *This,
6730         REFIID riid,
6731         void **ppvObject);
6732 
6733     ULONG (STDMETHODCALLTYPE *AddRef)(
6734         IWMInputMediaProps *This);
6735 
6736     ULONG (STDMETHODCALLTYPE *Release)(
6737         IWMInputMediaProps *This);
6738 
6739     /*** IWMMediaProps methods ***/
6740     HRESULT (STDMETHODCALLTYPE *GetType)(
6741         IWMInputMediaProps *This,
6742         GUID *pguidType);
6743 
6744     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
6745         IWMInputMediaProps *This,
6746         WM_MEDIA_TYPE *pType,
6747         DWORD *pcbType);
6748 
6749     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
6750         IWMInputMediaProps *This,
6751         WM_MEDIA_TYPE *pType);
6752 
6753     /*** IWMInputMediaProps methods ***/
6754     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
6755         IWMInputMediaProps *This,
6756         WCHAR *pwszName,
6757         WORD *pcchName);
6758 
6759     HRESULT (STDMETHODCALLTYPE *GetGroupName)(
6760         IWMInputMediaProps *This,
6761         WCHAR *pwszName,
6762         WORD *pcchName);
6763 
6764     END_INTERFACE
6765 } IWMInputMediaPropsVtbl;
6766 
6767 interface IWMInputMediaProps {
6768     CONST_VTBL IWMInputMediaPropsVtbl* lpVtbl;
6769 };
6770 
6771 #ifdef COBJMACROS
6772 #ifndef WIDL_C_INLINE_WRAPPERS
6773 /*** IUnknown methods ***/
6774 #define IWMInputMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6775 #define IWMInputMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
6776 #define IWMInputMediaProps_Release(This) (This)->lpVtbl->Release(This)
6777 /*** IWMMediaProps methods ***/
6778 #define IWMInputMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
6779 #define IWMInputMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
6780 #define IWMInputMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
6781 /*** IWMInputMediaProps methods ***/
6782 #define IWMInputMediaProps_GetConnectionName(This,pwszName,pcchName) (This)->lpVtbl->GetConnectionName(This,pwszName,pcchName)
6783 #define IWMInputMediaProps_GetGroupName(This,pwszName,pcchName) (This)->lpVtbl->GetGroupName(This,pwszName,pcchName)
6784 #else
6785 /*** IUnknown methods ***/
6786 static FORCEINLINE HRESULT IWMInputMediaProps_QueryInterface(IWMInputMediaProps* This,REFIID riid,void **ppvObject) {
6787     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6788 }
6789 static FORCEINLINE ULONG IWMInputMediaProps_AddRef(IWMInputMediaProps* This) {
6790     return This->lpVtbl->AddRef(This);
6791 }
6792 static FORCEINLINE ULONG IWMInputMediaProps_Release(IWMInputMediaProps* This) {
6793     return This->lpVtbl->Release(This);
6794 }
6795 /*** IWMMediaProps methods ***/
6796 static FORCEINLINE HRESULT IWMInputMediaProps_GetType(IWMInputMediaProps* This,GUID *pguidType) {
6797     return This->lpVtbl->GetType(This,pguidType);
6798 }
6799 static FORCEINLINE HRESULT IWMInputMediaProps_GetMediaType(IWMInputMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
6800     return This->lpVtbl->GetMediaType(This,pType,pcbType);
6801 }
6802 static FORCEINLINE HRESULT IWMInputMediaProps_SetMediaType(IWMInputMediaProps* This,WM_MEDIA_TYPE *pType) {
6803     return This->lpVtbl->SetMediaType(This,pType);
6804 }
6805 /*** IWMInputMediaProps methods ***/
6806 static FORCEINLINE HRESULT IWMInputMediaProps_GetConnectionName(IWMInputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
6807     return This->lpVtbl->GetConnectionName(This,pwszName,pcchName);
6808 }
6809 static FORCEINLINE HRESULT IWMInputMediaProps_GetGroupName(IWMInputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
6810     return This->lpVtbl->GetGroupName(This,pwszName,pcchName);
6811 }
6812 #endif
6813 #endif
6814 
6815 #endif
6816 
6817 
6818 #endif  /* __IWMInputMediaProps_INTERFACE_DEFINED__ */
6819 
6820 /*****************************************************************************
6821  * IWMWriterSink interface
6822  */
6823 #ifndef __IWMWriterSink_INTERFACE_DEFINED__
6824 #define __IWMWriterSink_INTERFACE_DEFINED__
6825 
6826 DEFINE_GUID(IID_IWMWriterSink, 0x96406be4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
6827 #if defined(__cplusplus) && !defined(CINTERFACE)
6828 MIDL_INTERFACE("96406be4-2b2b-11d3-b36b-00c04f6108ff")
6829 IWMWriterSink : public IUnknown
6830 {
6831     virtual HRESULT STDMETHODCALLTYPE OnHeader(
6832         INSSBuffer *pHeader) = 0;
6833 
6834     virtual HRESULT STDMETHODCALLTYPE IsRealTime(
6835         WINBOOL *pfRealTime) = 0;
6836 
6837     virtual HRESULT STDMETHODCALLTYPE AllocateDataUnit(
6838         DWORD cbDataUnit,
6839         INSSBuffer **ppDataUnit) = 0;
6840 
6841     virtual HRESULT STDMETHODCALLTYPE OnDataUnit(
6842         INSSBuffer *pDataUnit) = 0;
6843 
6844     virtual HRESULT STDMETHODCALLTYPE OnEndWriting(
6845         ) = 0;
6846 
6847 };
6848 #ifdef __CRT_UUID_DECL
6849 __CRT_UUID_DECL(IWMWriterSink, 0x96406be4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
6850 #endif
6851 #else
6852 typedef struct IWMWriterSinkVtbl {
6853     BEGIN_INTERFACE
6854 
6855     /*** IUnknown methods ***/
6856     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
6857         IWMWriterSink *This,
6858         REFIID riid,
6859         void **ppvObject);
6860 
6861     ULONG (STDMETHODCALLTYPE *AddRef)(
6862         IWMWriterSink *This);
6863 
6864     ULONG (STDMETHODCALLTYPE *Release)(
6865         IWMWriterSink *This);
6866 
6867     /*** IWMWriterSink methods ***/
6868     HRESULT (STDMETHODCALLTYPE *OnHeader)(
6869         IWMWriterSink *This,
6870         INSSBuffer *pHeader);
6871 
6872     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
6873         IWMWriterSink *This,
6874         WINBOOL *pfRealTime);
6875 
6876     HRESULT (STDMETHODCALLTYPE *AllocateDataUnit)(
6877         IWMWriterSink *This,
6878         DWORD cbDataUnit,
6879         INSSBuffer **ppDataUnit);
6880 
6881     HRESULT (STDMETHODCALLTYPE *OnDataUnit)(
6882         IWMWriterSink *This,
6883         INSSBuffer *pDataUnit);
6884 
6885     HRESULT (STDMETHODCALLTYPE *OnEndWriting)(
6886         IWMWriterSink *This);
6887 
6888     END_INTERFACE
6889 } IWMWriterSinkVtbl;
6890 
6891 interface IWMWriterSink {
6892     CONST_VTBL IWMWriterSinkVtbl* lpVtbl;
6893 };
6894 
6895 #ifdef COBJMACROS
6896 #ifndef WIDL_C_INLINE_WRAPPERS
6897 /*** IUnknown methods ***/
6898 #define IWMWriterSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
6899 #define IWMWriterSink_AddRef(This) (This)->lpVtbl->AddRef(This)
6900 #define IWMWriterSink_Release(This) (This)->lpVtbl->Release(This)
6901 /*** IWMWriterSink methods ***/
6902 #define IWMWriterSink_OnHeader(This,pHeader) (This)->lpVtbl->OnHeader(This,pHeader)
6903 #define IWMWriterSink_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
6904 #define IWMWriterSink_AllocateDataUnit(This,cbDataUnit,ppDataUnit) (This)->lpVtbl->AllocateDataUnit(This,cbDataUnit,ppDataUnit)
6905 #define IWMWriterSink_OnDataUnit(This,pDataUnit) (This)->lpVtbl->OnDataUnit(This,pDataUnit)
6906 #define IWMWriterSink_OnEndWriting(This) (This)->lpVtbl->OnEndWriting(This)
6907 #else
6908 /*** IUnknown methods ***/
6909 static FORCEINLINE HRESULT IWMWriterSink_QueryInterface(IWMWriterSink* This,REFIID riid,void **ppvObject) {
6910     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
6911 }
6912 static FORCEINLINE ULONG IWMWriterSink_AddRef(IWMWriterSink* This) {
6913     return This->lpVtbl->AddRef(This);
6914 }
6915 static FORCEINLINE ULONG IWMWriterSink_Release(IWMWriterSink* This) {
6916     return This->lpVtbl->Release(This);
6917 }
6918 /*** IWMWriterSink methods ***/
6919 static FORCEINLINE HRESULT IWMWriterSink_OnHeader(IWMWriterSink* This,INSSBuffer *pHeader) {
6920     return This->lpVtbl->OnHeader(This,pHeader);
6921 }
6922 static FORCEINLINE HRESULT IWMWriterSink_IsRealTime(IWMWriterSink* This,WINBOOL *pfRealTime) {
6923     return This->lpVtbl->IsRealTime(This,pfRealTime);
6924 }
6925 static FORCEINLINE HRESULT IWMWriterSink_AllocateDataUnit(IWMWriterSink* This,DWORD cbDataUnit,INSSBuffer **ppDataUnit) {
6926     return This->lpVtbl->AllocateDataUnit(This,cbDataUnit,ppDataUnit);
6927 }
6928 static FORCEINLINE HRESULT IWMWriterSink_OnDataUnit(IWMWriterSink* This,INSSBuffer *pDataUnit) {
6929     return This->lpVtbl->OnDataUnit(This,pDataUnit);
6930 }
6931 static FORCEINLINE HRESULT IWMWriterSink_OnEndWriting(IWMWriterSink* This) {
6932     return This->lpVtbl->OnEndWriting(This);
6933 }
6934 #endif
6935 #endif
6936 
6937 #endif
6938 
6939 
6940 #endif  /* __IWMWriterSink_INTERFACE_DEFINED__ */
6941 
6942 /*****************************************************************************
6943  * IWMWriter interface
6944  */
6945 #ifndef __IWMWriter_INTERFACE_DEFINED__
6946 #define __IWMWriter_INTERFACE_DEFINED__
6947 
6948 DEFINE_GUID(IID_IWMWriter, 0x96406bd4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
6949 #if defined(__cplusplus) && !defined(CINTERFACE)
6950 MIDL_INTERFACE("96406bd4-2b2b-11d3-b36b-00c04f6108ff")
6951 IWMWriter : public IUnknown
6952 {
6953     virtual HRESULT STDMETHODCALLTYPE SetProfileByID(
6954         REFGUID guidProfile) = 0;
6955 
6956     virtual HRESULT STDMETHODCALLTYPE SetProfile(
6957         IWMProfile *pProfile) = 0;
6958 
6959     virtual HRESULT STDMETHODCALLTYPE SetOutputFilename(
6960         const WCHAR *pwszFilename) = 0;
6961 
6962     virtual HRESULT STDMETHODCALLTYPE GetInputCount(
6963         DWORD *pcInputs) = 0;
6964 
6965     virtual HRESULT STDMETHODCALLTYPE GetInputProps(
6966         DWORD dwInputNum,
6967         IWMInputMediaProps **ppInput) = 0;
6968 
6969     virtual HRESULT STDMETHODCALLTYPE SetInputProps(
6970         DWORD dwInputNum,
6971         IWMInputMediaProps *pInput) = 0;
6972 
6973     virtual HRESULT STDMETHODCALLTYPE GetInputFormatCount(
6974         DWORD dwInputNumber,
6975         DWORD *pcFormats) = 0;
6976 
6977     virtual HRESULT STDMETHODCALLTYPE GetInputFormat(
6978         DWORD dwInputNumber,
6979         DWORD dwFormatNumber,
6980         IWMInputMediaProps **pProps) = 0;
6981 
6982     virtual HRESULT STDMETHODCALLTYPE BeginWriting(
6983         ) = 0;
6984 
6985     virtual HRESULT STDMETHODCALLTYPE EndWriting(
6986         ) = 0;
6987 
6988     virtual HRESULT STDMETHODCALLTYPE AllocateSample(
6989         DWORD dwSampleSize,
6990         INSSBuffer **ppSample) = 0;
6991 
6992     virtual HRESULT STDMETHODCALLTYPE WriteSample(
6993         DWORD dwInputNum,
6994         QWORD cnsSampleTime,
6995         DWORD dwFlags,
6996         INSSBuffer *pSample) = 0;
6997 
6998     virtual HRESULT STDMETHODCALLTYPE Flush(
6999         ) = 0;
7000 
7001 };
7002 #ifdef __CRT_UUID_DECL
7003 __CRT_UUID_DECL(IWMWriter, 0x96406bd4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
7004 #endif
7005 #else
7006 typedef struct IWMWriterVtbl {
7007     BEGIN_INTERFACE
7008 
7009     /*** IUnknown methods ***/
7010     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7011         IWMWriter *This,
7012         REFIID riid,
7013         void **ppvObject);
7014 
7015     ULONG (STDMETHODCALLTYPE *AddRef)(
7016         IWMWriter *This);
7017 
7018     ULONG (STDMETHODCALLTYPE *Release)(
7019         IWMWriter *This);
7020 
7021     /*** IWMWriter methods ***/
7022     HRESULT (STDMETHODCALLTYPE *SetProfileByID)(
7023         IWMWriter *This,
7024         REFGUID guidProfile);
7025 
7026     HRESULT (STDMETHODCALLTYPE *SetProfile)(
7027         IWMWriter *This,
7028         IWMProfile *pProfile);
7029 
7030     HRESULT (STDMETHODCALLTYPE *SetOutputFilename)(
7031         IWMWriter *This,
7032         const WCHAR *pwszFilename);
7033 
7034     HRESULT (STDMETHODCALLTYPE *GetInputCount)(
7035         IWMWriter *This,
7036         DWORD *pcInputs);
7037 
7038     HRESULT (STDMETHODCALLTYPE *GetInputProps)(
7039         IWMWriter *This,
7040         DWORD dwInputNum,
7041         IWMInputMediaProps **ppInput);
7042 
7043     HRESULT (STDMETHODCALLTYPE *SetInputProps)(
7044         IWMWriter *This,
7045         DWORD dwInputNum,
7046         IWMInputMediaProps *pInput);
7047 
7048     HRESULT (STDMETHODCALLTYPE *GetInputFormatCount)(
7049         IWMWriter *This,
7050         DWORD dwInputNumber,
7051         DWORD *pcFormats);
7052 
7053     HRESULT (STDMETHODCALLTYPE *GetInputFormat)(
7054         IWMWriter *This,
7055         DWORD dwInputNumber,
7056         DWORD dwFormatNumber,
7057         IWMInputMediaProps **pProps);
7058 
7059     HRESULT (STDMETHODCALLTYPE *BeginWriting)(
7060         IWMWriter *This);
7061 
7062     HRESULT (STDMETHODCALLTYPE *EndWriting)(
7063         IWMWriter *This);
7064 
7065     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
7066         IWMWriter *This,
7067         DWORD dwSampleSize,
7068         INSSBuffer **ppSample);
7069 
7070     HRESULT (STDMETHODCALLTYPE *WriteSample)(
7071         IWMWriter *This,
7072         DWORD dwInputNum,
7073         QWORD cnsSampleTime,
7074         DWORD dwFlags,
7075         INSSBuffer *pSample);
7076 
7077     HRESULT (STDMETHODCALLTYPE *Flush)(
7078         IWMWriter *This);
7079 
7080     END_INTERFACE
7081 } IWMWriterVtbl;
7082 
7083 interface IWMWriter {
7084     CONST_VTBL IWMWriterVtbl* lpVtbl;
7085 };
7086 
7087 #ifdef COBJMACROS
7088 #ifndef WIDL_C_INLINE_WRAPPERS
7089 /*** IUnknown methods ***/
7090 #define IWMWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7091 #define IWMWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
7092 #define IWMWriter_Release(This) (This)->lpVtbl->Release(This)
7093 /*** IWMWriter methods ***/
7094 #define IWMWriter_SetProfileByID(This,guidProfile) (This)->lpVtbl->SetProfileByID(This,guidProfile)
7095 #define IWMWriter_SetProfile(This,pProfile) (This)->lpVtbl->SetProfile(This,pProfile)
7096 #define IWMWriter_SetOutputFilename(This,pwszFilename) (This)->lpVtbl->SetOutputFilename(This,pwszFilename)
7097 #define IWMWriter_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
7098 #define IWMWriter_GetInputProps(This,dwInputNum,ppInput) (This)->lpVtbl->GetInputProps(This,dwInputNum,ppInput)
7099 #define IWMWriter_SetInputProps(This,dwInputNum,pInput) (This)->lpVtbl->SetInputProps(This,dwInputNum,pInput)
7100 #define IWMWriter_GetInputFormatCount(This,dwInputNumber,pcFormats) (This)->lpVtbl->GetInputFormatCount(This,dwInputNumber,pcFormats)
7101 #define IWMWriter_GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps) (This)->lpVtbl->GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps)
7102 #define IWMWriter_BeginWriting(This) (This)->lpVtbl->BeginWriting(This)
7103 #define IWMWriter_EndWriting(This) (This)->lpVtbl->EndWriting(This)
7104 #define IWMWriter_AllocateSample(This,dwSampleSize,ppSample) (This)->lpVtbl->AllocateSample(This,dwSampleSize,ppSample)
7105 #define IWMWriter_WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample) (This)->lpVtbl->WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample)
7106 #define IWMWriter_Flush(This) (This)->lpVtbl->Flush(This)
7107 #else
7108 /*** IUnknown methods ***/
7109 static FORCEINLINE HRESULT IWMWriter_QueryInterface(IWMWriter* This,REFIID riid,void **ppvObject) {
7110     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7111 }
7112 static FORCEINLINE ULONG IWMWriter_AddRef(IWMWriter* This) {
7113     return This->lpVtbl->AddRef(This);
7114 }
7115 static FORCEINLINE ULONG IWMWriter_Release(IWMWriter* This) {
7116     return This->lpVtbl->Release(This);
7117 }
7118 /*** IWMWriter methods ***/
7119 static FORCEINLINE HRESULT IWMWriter_SetProfileByID(IWMWriter* This,REFGUID guidProfile) {
7120     return This->lpVtbl->SetProfileByID(This,guidProfile);
7121 }
7122 static FORCEINLINE HRESULT IWMWriter_SetProfile(IWMWriter* This,IWMProfile *pProfile) {
7123     return This->lpVtbl->SetProfile(This,pProfile);
7124 }
7125 static FORCEINLINE HRESULT IWMWriter_SetOutputFilename(IWMWriter* This,const WCHAR *pwszFilename) {
7126     return This->lpVtbl->SetOutputFilename(This,pwszFilename);
7127 }
7128 static FORCEINLINE HRESULT IWMWriter_GetInputCount(IWMWriter* This,DWORD *pcInputs) {
7129     return This->lpVtbl->GetInputCount(This,pcInputs);
7130 }
7131 static FORCEINLINE HRESULT IWMWriter_GetInputProps(IWMWriter* This,DWORD dwInputNum,IWMInputMediaProps **ppInput) {
7132     return This->lpVtbl->GetInputProps(This,dwInputNum,ppInput);
7133 }
7134 static FORCEINLINE HRESULT IWMWriter_SetInputProps(IWMWriter* This,DWORD dwInputNum,IWMInputMediaProps *pInput) {
7135     return This->lpVtbl->SetInputProps(This,dwInputNum,pInput);
7136 }
7137 static FORCEINLINE HRESULT IWMWriter_GetInputFormatCount(IWMWriter* This,DWORD dwInputNumber,DWORD *pcFormats) {
7138     return This->lpVtbl->GetInputFormatCount(This,dwInputNumber,pcFormats);
7139 }
7140 static FORCEINLINE HRESULT IWMWriter_GetInputFormat(IWMWriter* This,DWORD dwInputNumber,DWORD dwFormatNumber,IWMInputMediaProps **pProps) {
7141     return This->lpVtbl->GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps);
7142 }
7143 static FORCEINLINE HRESULT IWMWriter_BeginWriting(IWMWriter* This) {
7144     return This->lpVtbl->BeginWriting(This);
7145 }
7146 static FORCEINLINE HRESULT IWMWriter_EndWriting(IWMWriter* This) {
7147     return This->lpVtbl->EndWriting(This);
7148 }
7149 static FORCEINLINE HRESULT IWMWriter_AllocateSample(IWMWriter* This,DWORD dwSampleSize,INSSBuffer **ppSample) {
7150     return This->lpVtbl->AllocateSample(This,dwSampleSize,ppSample);
7151 }
7152 static FORCEINLINE HRESULT IWMWriter_WriteSample(IWMWriter* This,DWORD dwInputNum,QWORD cnsSampleTime,DWORD dwFlags,INSSBuffer *pSample) {
7153     return This->lpVtbl->WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample);
7154 }
7155 static FORCEINLINE HRESULT IWMWriter_Flush(IWMWriter* This) {
7156     return This->lpVtbl->Flush(This);
7157 }
7158 #endif
7159 #endif
7160 
7161 #endif
7162 
7163 
7164 #endif  /* __IWMWriter_INTERFACE_DEFINED__ */
7165 
7166 /*****************************************************************************
7167  * IWMWriterAdvanced interface
7168  */
7169 #ifndef __IWMWriterAdvanced_INTERFACE_DEFINED__
7170 #define __IWMWriterAdvanced_INTERFACE_DEFINED__
7171 
7172 DEFINE_GUID(IID_IWMWriterAdvanced, 0x96406be3, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
7173 #if defined(__cplusplus) && !defined(CINTERFACE)
7174 MIDL_INTERFACE("96406be3-2b2b-11d3-b36b-00c04f6108ff")
7175 IWMWriterAdvanced : public IUnknown
7176 {
7177     virtual HRESULT STDMETHODCALLTYPE GetSinkCount(
7178         DWORD *pcSinks) = 0;
7179 
7180     virtual HRESULT STDMETHODCALLTYPE GetSink(
7181         DWORD dwSinkNum,
7182         IWMWriterSink **ppSink) = 0;
7183 
7184     virtual HRESULT STDMETHODCALLTYPE AddSink(
7185         IWMWriterSink *pSink) = 0;
7186 
7187     virtual HRESULT STDMETHODCALLTYPE RemoveSink(
7188         IWMWriterSink *pSink) = 0;
7189 
7190     virtual HRESULT STDMETHODCALLTYPE WriteStreamSample(
7191         WORD wStreamNum,
7192         QWORD cnsSampleTime,
7193         DWORD msSampleSendTime,
7194         QWORD cnsSampleDuration,
7195         DWORD dwFlags,
7196         INSSBuffer *pSample) = 0;
7197 
7198     virtual HRESULT STDMETHODCALLTYPE SetLiveSource(
7199         WINBOOL fIsLiveSource) = 0;
7200 
7201     virtual HRESULT STDMETHODCALLTYPE IsRealTime(
7202         WINBOOL *pfRealTime) = 0;
7203 
7204     virtual HRESULT STDMETHODCALLTYPE GetWriterTime(
7205         QWORD *pCurrentTime) = 0;
7206 
7207     virtual HRESULT STDMETHODCALLTYPE GetStatistics(
7208         WORD wStreamNum,
7209         WM_WRITER_STATISTICS *pStats) = 0;
7210 
7211     virtual HRESULT STDMETHODCALLTYPE SetSyncTolerance(
7212         DWORD msWindow) = 0;
7213 
7214     virtual HRESULT STDMETHODCALLTYPE GetSyncTolerance(
7215         DWORD *pmsWindow) = 0;
7216 
7217 };
7218 #ifdef __CRT_UUID_DECL
7219 __CRT_UUID_DECL(IWMWriterAdvanced, 0x96406be3, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
7220 #endif
7221 #else
7222 typedef struct IWMWriterAdvancedVtbl {
7223     BEGIN_INTERFACE
7224 
7225     /*** IUnknown methods ***/
7226     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7227         IWMWriterAdvanced *This,
7228         REFIID riid,
7229         void **ppvObject);
7230 
7231     ULONG (STDMETHODCALLTYPE *AddRef)(
7232         IWMWriterAdvanced *This);
7233 
7234     ULONG (STDMETHODCALLTYPE *Release)(
7235         IWMWriterAdvanced *This);
7236 
7237     /*** IWMWriterAdvanced methods ***/
7238     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
7239         IWMWriterAdvanced *This,
7240         DWORD *pcSinks);
7241 
7242     HRESULT (STDMETHODCALLTYPE *GetSink)(
7243         IWMWriterAdvanced *This,
7244         DWORD dwSinkNum,
7245         IWMWriterSink **ppSink);
7246 
7247     HRESULT (STDMETHODCALLTYPE *AddSink)(
7248         IWMWriterAdvanced *This,
7249         IWMWriterSink *pSink);
7250 
7251     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
7252         IWMWriterAdvanced *This,
7253         IWMWriterSink *pSink);
7254 
7255     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
7256         IWMWriterAdvanced *This,
7257         WORD wStreamNum,
7258         QWORD cnsSampleTime,
7259         DWORD msSampleSendTime,
7260         QWORD cnsSampleDuration,
7261         DWORD dwFlags,
7262         INSSBuffer *pSample);
7263 
7264     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
7265         IWMWriterAdvanced *This,
7266         WINBOOL fIsLiveSource);
7267 
7268     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
7269         IWMWriterAdvanced *This,
7270         WINBOOL *pfRealTime);
7271 
7272     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
7273         IWMWriterAdvanced *This,
7274         QWORD *pCurrentTime);
7275 
7276     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
7277         IWMWriterAdvanced *This,
7278         WORD wStreamNum,
7279         WM_WRITER_STATISTICS *pStats);
7280 
7281     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
7282         IWMWriterAdvanced *This,
7283         DWORD msWindow);
7284 
7285     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
7286         IWMWriterAdvanced *This,
7287         DWORD *pmsWindow);
7288 
7289     END_INTERFACE
7290 } IWMWriterAdvancedVtbl;
7291 
7292 interface IWMWriterAdvanced {
7293     CONST_VTBL IWMWriterAdvancedVtbl* lpVtbl;
7294 };
7295 
7296 #ifdef COBJMACROS
7297 #ifndef WIDL_C_INLINE_WRAPPERS
7298 /*** IUnknown methods ***/
7299 #define IWMWriterAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7300 #define IWMWriterAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
7301 #define IWMWriterAdvanced_Release(This) (This)->lpVtbl->Release(This)
7302 /*** IWMWriterAdvanced methods ***/
7303 #define IWMWriterAdvanced_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
7304 #define IWMWriterAdvanced_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
7305 #define IWMWriterAdvanced_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
7306 #define IWMWriterAdvanced_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
7307 #define IWMWriterAdvanced_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
7308 #define IWMWriterAdvanced_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
7309 #define IWMWriterAdvanced_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
7310 #define IWMWriterAdvanced_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
7311 #define IWMWriterAdvanced_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
7312 #define IWMWriterAdvanced_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
7313 #define IWMWriterAdvanced_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
7314 #else
7315 /*** IUnknown methods ***/
7316 static FORCEINLINE HRESULT IWMWriterAdvanced_QueryInterface(IWMWriterAdvanced* This,REFIID riid,void **ppvObject) {
7317     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7318 }
7319 static FORCEINLINE ULONG IWMWriterAdvanced_AddRef(IWMWriterAdvanced* This) {
7320     return This->lpVtbl->AddRef(This);
7321 }
7322 static FORCEINLINE ULONG IWMWriterAdvanced_Release(IWMWriterAdvanced* This) {
7323     return This->lpVtbl->Release(This);
7324 }
7325 /*** IWMWriterAdvanced methods ***/
7326 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSinkCount(IWMWriterAdvanced* This,DWORD *pcSinks) {
7327     return This->lpVtbl->GetSinkCount(This,pcSinks);
7328 }
7329 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSink(IWMWriterAdvanced* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
7330     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
7331 }
7332 static FORCEINLINE HRESULT IWMWriterAdvanced_AddSink(IWMWriterAdvanced* This,IWMWriterSink *pSink) {
7333     return This->lpVtbl->AddSink(This,pSink);
7334 }
7335 static FORCEINLINE HRESULT IWMWriterAdvanced_RemoveSink(IWMWriterAdvanced* This,IWMWriterSink *pSink) {
7336     return This->lpVtbl->RemoveSink(This,pSink);
7337 }
7338 static FORCEINLINE HRESULT IWMWriterAdvanced_WriteStreamSample(IWMWriterAdvanced* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
7339     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
7340 }
7341 static FORCEINLINE HRESULT IWMWriterAdvanced_SetLiveSource(IWMWriterAdvanced* This,WINBOOL fIsLiveSource) {
7342     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
7343 }
7344 static FORCEINLINE HRESULT IWMWriterAdvanced_IsRealTime(IWMWriterAdvanced* This,WINBOOL *pfRealTime) {
7345     return This->lpVtbl->IsRealTime(This,pfRealTime);
7346 }
7347 static FORCEINLINE HRESULT IWMWriterAdvanced_GetWriterTime(IWMWriterAdvanced* This,QWORD *pCurrentTime) {
7348     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
7349 }
7350 static FORCEINLINE HRESULT IWMWriterAdvanced_GetStatistics(IWMWriterAdvanced* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
7351     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
7352 }
7353 static FORCEINLINE HRESULT IWMWriterAdvanced_SetSyncTolerance(IWMWriterAdvanced* This,DWORD msWindow) {
7354     return This->lpVtbl->SetSyncTolerance(This,msWindow);
7355 }
7356 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSyncTolerance(IWMWriterAdvanced* This,DWORD *pmsWindow) {
7357     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
7358 }
7359 #endif
7360 #endif
7361 
7362 #endif
7363 
7364 
7365 #endif  /* __IWMWriterAdvanced_INTERFACE_DEFINED__ */
7366 
7367 /*****************************************************************************
7368  * IWMWriterAdvanced2 interface
7369  */
7370 #ifndef __IWMWriterAdvanced2_INTERFACE_DEFINED__
7371 #define __IWMWriterAdvanced2_INTERFACE_DEFINED__
7372 
7373 DEFINE_GUID(IID_IWMWriterAdvanced2, 0x962dc1ec, 0xc046, 0x4db8, 0x9c,0xc7, 0x26,0xce,0xae,0x50,0x08,0x17);
7374 #if defined(__cplusplus) && !defined(CINTERFACE)
7375 MIDL_INTERFACE("962dc1ec-c046-4db8-9cc7-26ceae500817")
7376 IWMWriterAdvanced2 : public IWMWriterAdvanced
7377 {
7378     virtual HRESULT STDMETHODCALLTYPE GetInputSetting(
7379         DWORD dwInputNum,
7380         LPCWSTR pszName,
7381         WMT_ATTR_DATATYPE *pType,
7382         BYTE *pValue,
7383         WORD *pcbLength) = 0;
7384 
7385     virtual HRESULT STDMETHODCALLTYPE SetInputSetting(
7386         DWORD dwInputNum,
7387         LPCWSTR pszName,
7388         WMT_ATTR_DATATYPE Type,
7389         const BYTE *pValue,
7390         WORD cbLength) = 0;
7391 
7392 };
7393 #ifdef __CRT_UUID_DECL
7394 __CRT_UUID_DECL(IWMWriterAdvanced2, 0x962dc1ec, 0xc046, 0x4db8, 0x9c,0xc7, 0x26,0xce,0xae,0x50,0x08,0x17)
7395 #endif
7396 #else
7397 typedef struct IWMWriterAdvanced2Vtbl {
7398     BEGIN_INTERFACE
7399 
7400     /*** IUnknown methods ***/
7401     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7402         IWMWriterAdvanced2 *This,
7403         REFIID riid,
7404         void **ppvObject);
7405 
7406     ULONG (STDMETHODCALLTYPE *AddRef)(
7407         IWMWriterAdvanced2 *This);
7408 
7409     ULONG (STDMETHODCALLTYPE *Release)(
7410         IWMWriterAdvanced2 *This);
7411 
7412     /*** IWMWriterAdvanced methods ***/
7413     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
7414         IWMWriterAdvanced2 *This,
7415         DWORD *pcSinks);
7416 
7417     HRESULT (STDMETHODCALLTYPE *GetSink)(
7418         IWMWriterAdvanced2 *This,
7419         DWORD dwSinkNum,
7420         IWMWriterSink **ppSink);
7421 
7422     HRESULT (STDMETHODCALLTYPE *AddSink)(
7423         IWMWriterAdvanced2 *This,
7424         IWMWriterSink *pSink);
7425 
7426     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
7427         IWMWriterAdvanced2 *This,
7428         IWMWriterSink *pSink);
7429 
7430     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
7431         IWMWriterAdvanced2 *This,
7432         WORD wStreamNum,
7433         QWORD cnsSampleTime,
7434         DWORD msSampleSendTime,
7435         QWORD cnsSampleDuration,
7436         DWORD dwFlags,
7437         INSSBuffer *pSample);
7438 
7439     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
7440         IWMWriterAdvanced2 *This,
7441         WINBOOL fIsLiveSource);
7442 
7443     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
7444         IWMWriterAdvanced2 *This,
7445         WINBOOL *pfRealTime);
7446 
7447     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
7448         IWMWriterAdvanced2 *This,
7449         QWORD *pCurrentTime);
7450 
7451     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
7452         IWMWriterAdvanced2 *This,
7453         WORD wStreamNum,
7454         WM_WRITER_STATISTICS *pStats);
7455 
7456     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
7457         IWMWriterAdvanced2 *This,
7458         DWORD msWindow);
7459 
7460     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
7461         IWMWriterAdvanced2 *This,
7462         DWORD *pmsWindow);
7463 
7464     /*** IWMWriterAdvanced2 methods ***/
7465     HRESULT (STDMETHODCALLTYPE *GetInputSetting)(
7466         IWMWriterAdvanced2 *This,
7467         DWORD dwInputNum,
7468         LPCWSTR pszName,
7469         WMT_ATTR_DATATYPE *pType,
7470         BYTE *pValue,
7471         WORD *pcbLength);
7472 
7473     HRESULT (STDMETHODCALLTYPE *SetInputSetting)(
7474         IWMWriterAdvanced2 *This,
7475         DWORD dwInputNum,
7476         LPCWSTR pszName,
7477         WMT_ATTR_DATATYPE Type,
7478         const BYTE *pValue,
7479         WORD cbLength);
7480 
7481     END_INTERFACE
7482 } IWMWriterAdvanced2Vtbl;
7483 
7484 interface IWMWriterAdvanced2 {
7485     CONST_VTBL IWMWriterAdvanced2Vtbl* lpVtbl;
7486 };
7487 
7488 #ifdef COBJMACROS
7489 #ifndef WIDL_C_INLINE_WRAPPERS
7490 /*** IUnknown methods ***/
7491 #define IWMWriterAdvanced2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7492 #define IWMWriterAdvanced2_AddRef(This) (This)->lpVtbl->AddRef(This)
7493 #define IWMWriterAdvanced2_Release(This) (This)->lpVtbl->Release(This)
7494 /*** IWMWriterAdvanced methods ***/
7495 #define IWMWriterAdvanced2_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
7496 #define IWMWriterAdvanced2_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
7497 #define IWMWriterAdvanced2_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
7498 #define IWMWriterAdvanced2_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
7499 #define IWMWriterAdvanced2_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
7500 #define IWMWriterAdvanced2_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
7501 #define IWMWriterAdvanced2_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
7502 #define IWMWriterAdvanced2_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
7503 #define IWMWriterAdvanced2_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
7504 #define IWMWriterAdvanced2_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
7505 #define IWMWriterAdvanced2_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
7506 /*** IWMWriterAdvanced2 methods ***/
7507 #define IWMWriterAdvanced2_GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength)
7508 #define IWMWriterAdvanced2_SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength)
7509 #else
7510 /*** IUnknown methods ***/
7511 static FORCEINLINE HRESULT IWMWriterAdvanced2_QueryInterface(IWMWriterAdvanced2* This,REFIID riid,void **ppvObject) {
7512     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7513 }
7514 static FORCEINLINE ULONG IWMWriterAdvanced2_AddRef(IWMWriterAdvanced2* This) {
7515     return This->lpVtbl->AddRef(This);
7516 }
7517 static FORCEINLINE ULONG IWMWriterAdvanced2_Release(IWMWriterAdvanced2* This) {
7518     return This->lpVtbl->Release(This);
7519 }
7520 /*** IWMWriterAdvanced methods ***/
7521 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSinkCount(IWMWriterAdvanced2* This,DWORD *pcSinks) {
7522     return This->lpVtbl->GetSinkCount(This,pcSinks);
7523 }
7524 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSink(IWMWriterAdvanced2* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
7525     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
7526 }
7527 static FORCEINLINE HRESULT IWMWriterAdvanced2_AddSink(IWMWriterAdvanced2* This,IWMWriterSink *pSink) {
7528     return This->lpVtbl->AddSink(This,pSink);
7529 }
7530 static FORCEINLINE HRESULT IWMWriterAdvanced2_RemoveSink(IWMWriterAdvanced2* This,IWMWriterSink *pSink) {
7531     return This->lpVtbl->RemoveSink(This,pSink);
7532 }
7533 static FORCEINLINE HRESULT IWMWriterAdvanced2_WriteStreamSample(IWMWriterAdvanced2* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
7534     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
7535 }
7536 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetLiveSource(IWMWriterAdvanced2* This,WINBOOL fIsLiveSource) {
7537     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
7538 }
7539 static FORCEINLINE HRESULT IWMWriterAdvanced2_IsRealTime(IWMWriterAdvanced2* This,WINBOOL *pfRealTime) {
7540     return This->lpVtbl->IsRealTime(This,pfRealTime);
7541 }
7542 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetWriterTime(IWMWriterAdvanced2* This,QWORD *pCurrentTime) {
7543     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
7544 }
7545 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetStatistics(IWMWriterAdvanced2* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
7546     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
7547 }
7548 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetSyncTolerance(IWMWriterAdvanced2* This,DWORD msWindow) {
7549     return This->lpVtbl->SetSyncTolerance(This,msWindow);
7550 }
7551 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSyncTolerance(IWMWriterAdvanced2* This,DWORD *pmsWindow) {
7552     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
7553 }
7554 /*** IWMWriterAdvanced2 methods ***/
7555 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetInputSetting(IWMWriterAdvanced2* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
7556     return This->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength);
7557 }
7558 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetInputSetting(IWMWriterAdvanced2* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
7559     return This->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength);
7560 }
7561 #endif
7562 #endif
7563 
7564 #endif
7565 
7566 
7567 #endif  /* __IWMWriterAdvanced2_INTERFACE_DEFINED__ */
7568 
7569 /*****************************************************************************
7570  * IWMWriterAdvanced3 interface
7571  */
7572 #ifndef __IWMWriterAdvanced3_INTERFACE_DEFINED__
7573 #define __IWMWriterAdvanced3_INTERFACE_DEFINED__
7574 
7575 DEFINE_GUID(IID_IWMWriterAdvanced3, 0x2cd6492d, 0x7c37, 0x4e76, 0x9d,0x3b, 0x59,0x26,0x11,0x83,0xa2,0x2e);
7576 #if defined(__cplusplus) && !defined(CINTERFACE)
7577 MIDL_INTERFACE("2cd6492d-7c37-4e76-9d3b-59261183a22e")
7578 IWMWriterAdvanced3 : public IWMWriterAdvanced2
7579 {
7580     virtual HRESULT STDMETHODCALLTYPE GetStatisticsEx(
7581         WORD wStreamNum,
7582         WM_WRITER_STATISTICS_EX *pStats) = 0;
7583 
7584     virtual HRESULT STDMETHODCALLTYPE SetNonBlocking(
7585         ) = 0;
7586 
7587 };
7588 #ifdef __CRT_UUID_DECL
7589 __CRT_UUID_DECL(IWMWriterAdvanced3, 0x2cd6492d, 0x7c37, 0x4e76, 0x9d,0x3b, 0x59,0x26,0x11,0x83,0xa2,0x2e)
7590 #endif
7591 #else
7592 typedef struct IWMWriterAdvanced3Vtbl {
7593     BEGIN_INTERFACE
7594 
7595     /*** IUnknown methods ***/
7596     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7597         IWMWriterAdvanced3 *This,
7598         REFIID riid,
7599         void **ppvObject);
7600 
7601     ULONG (STDMETHODCALLTYPE *AddRef)(
7602         IWMWriterAdvanced3 *This);
7603 
7604     ULONG (STDMETHODCALLTYPE *Release)(
7605         IWMWriterAdvanced3 *This);
7606 
7607     /*** IWMWriterAdvanced methods ***/
7608     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
7609         IWMWriterAdvanced3 *This,
7610         DWORD *pcSinks);
7611 
7612     HRESULT (STDMETHODCALLTYPE *GetSink)(
7613         IWMWriterAdvanced3 *This,
7614         DWORD dwSinkNum,
7615         IWMWriterSink **ppSink);
7616 
7617     HRESULT (STDMETHODCALLTYPE *AddSink)(
7618         IWMWriterAdvanced3 *This,
7619         IWMWriterSink *pSink);
7620 
7621     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
7622         IWMWriterAdvanced3 *This,
7623         IWMWriterSink *pSink);
7624 
7625     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
7626         IWMWriterAdvanced3 *This,
7627         WORD wStreamNum,
7628         QWORD cnsSampleTime,
7629         DWORD msSampleSendTime,
7630         QWORD cnsSampleDuration,
7631         DWORD dwFlags,
7632         INSSBuffer *pSample);
7633 
7634     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
7635         IWMWriterAdvanced3 *This,
7636         WINBOOL fIsLiveSource);
7637 
7638     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
7639         IWMWriterAdvanced3 *This,
7640         WINBOOL *pfRealTime);
7641 
7642     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
7643         IWMWriterAdvanced3 *This,
7644         QWORD *pCurrentTime);
7645 
7646     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
7647         IWMWriterAdvanced3 *This,
7648         WORD wStreamNum,
7649         WM_WRITER_STATISTICS *pStats);
7650 
7651     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
7652         IWMWriterAdvanced3 *This,
7653         DWORD msWindow);
7654 
7655     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
7656         IWMWriterAdvanced3 *This,
7657         DWORD *pmsWindow);
7658 
7659     /*** IWMWriterAdvanced2 methods ***/
7660     HRESULT (STDMETHODCALLTYPE *GetInputSetting)(
7661         IWMWriterAdvanced3 *This,
7662         DWORD dwInputNum,
7663         LPCWSTR pszName,
7664         WMT_ATTR_DATATYPE *pType,
7665         BYTE *pValue,
7666         WORD *pcbLength);
7667 
7668     HRESULT (STDMETHODCALLTYPE *SetInputSetting)(
7669         IWMWriterAdvanced3 *This,
7670         DWORD dwInputNum,
7671         LPCWSTR pszName,
7672         WMT_ATTR_DATATYPE Type,
7673         const BYTE *pValue,
7674         WORD cbLength);
7675 
7676     /*** IWMWriterAdvanced3 methods ***/
7677     HRESULT (STDMETHODCALLTYPE *GetStatisticsEx)(
7678         IWMWriterAdvanced3 *This,
7679         WORD wStreamNum,
7680         WM_WRITER_STATISTICS_EX *pStats);
7681 
7682     HRESULT (STDMETHODCALLTYPE *SetNonBlocking)(
7683         IWMWriterAdvanced3 *This);
7684 
7685     END_INTERFACE
7686 } IWMWriterAdvanced3Vtbl;
7687 
7688 interface IWMWriterAdvanced3 {
7689     CONST_VTBL IWMWriterAdvanced3Vtbl* lpVtbl;
7690 };
7691 
7692 #ifdef COBJMACROS
7693 #ifndef WIDL_C_INLINE_WRAPPERS
7694 /*** IUnknown methods ***/
7695 #define IWMWriterAdvanced3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7696 #define IWMWriterAdvanced3_AddRef(This) (This)->lpVtbl->AddRef(This)
7697 #define IWMWriterAdvanced3_Release(This) (This)->lpVtbl->Release(This)
7698 /*** IWMWriterAdvanced methods ***/
7699 #define IWMWriterAdvanced3_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
7700 #define IWMWriterAdvanced3_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
7701 #define IWMWriterAdvanced3_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
7702 #define IWMWriterAdvanced3_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
7703 #define IWMWriterAdvanced3_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
7704 #define IWMWriterAdvanced3_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
7705 #define IWMWriterAdvanced3_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
7706 #define IWMWriterAdvanced3_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
7707 #define IWMWriterAdvanced3_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
7708 #define IWMWriterAdvanced3_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
7709 #define IWMWriterAdvanced3_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
7710 /*** IWMWriterAdvanced2 methods ***/
7711 #define IWMWriterAdvanced3_GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength)
7712 #define IWMWriterAdvanced3_SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength)
7713 /*** IWMWriterAdvanced3 methods ***/
7714 #define IWMWriterAdvanced3_GetStatisticsEx(This,wStreamNum,pStats) (This)->lpVtbl->GetStatisticsEx(This,wStreamNum,pStats)
7715 #define IWMWriterAdvanced3_SetNonBlocking(This) (This)->lpVtbl->SetNonBlocking(This)
7716 #else
7717 /*** IUnknown methods ***/
7718 static FORCEINLINE HRESULT IWMWriterAdvanced3_QueryInterface(IWMWriterAdvanced3* This,REFIID riid,void **ppvObject) {
7719     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7720 }
7721 static FORCEINLINE ULONG IWMWriterAdvanced3_AddRef(IWMWriterAdvanced3* This) {
7722     return This->lpVtbl->AddRef(This);
7723 }
7724 static FORCEINLINE ULONG IWMWriterAdvanced3_Release(IWMWriterAdvanced3* This) {
7725     return This->lpVtbl->Release(This);
7726 }
7727 /*** IWMWriterAdvanced methods ***/
7728 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSinkCount(IWMWriterAdvanced3* This,DWORD *pcSinks) {
7729     return This->lpVtbl->GetSinkCount(This,pcSinks);
7730 }
7731 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSink(IWMWriterAdvanced3* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
7732     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
7733 }
7734 static FORCEINLINE HRESULT IWMWriterAdvanced3_AddSink(IWMWriterAdvanced3* This,IWMWriterSink *pSink) {
7735     return This->lpVtbl->AddSink(This,pSink);
7736 }
7737 static FORCEINLINE HRESULT IWMWriterAdvanced3_RemoveSink(IWMWriterAdvanced3* This,IWMWriterSink *pSink) {
7738     return This->lpVtbl->RemoveSink(This,pSink);
7739 }
7740 static FORCEINLINE HRESULT IWMWriterAdvanced3_WriteStreamSample(IWMWriterAdvanced3* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
7741     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
7742 }
7743 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetLiveSource(IWMWriterAdvanced3* This,WINBOOL fIsLiveSource) {
7744     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
7745 }
7746 static FORCEINLINE HRESULT IWMWriterAdvanced3_IsRealTime(IWMWriterAdvanced3* This,WINBOOL *pfRealTime) {
7747     return This->lpVtbl->IsRealTime(This,pfRealTime);
7748 }
7749 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetWriterTime(IWMWriterAdvanced3* This,QWORD *pCurrentTime) {
7750     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
7751 }
7752 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetStatistics(IWMWriterAdvanced3* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
7753     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
7754 }
7755 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetSyncTolerance(IWMWriterAdvanced3* This,DWORD msWindow) {
7756     return This->lpVtbl->SetSyncTolerance(This,msWindow);
7757 }
7758 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSyncTolerance(IWMWriterAdvanced3* This,DWORD *pmsWindow) {
7759     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
7760 }
7761 /*** IWMWriterAdvanced2 methods ***/
7762 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetInputSetting(IWMWriterAdvanced3* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
7763     return This->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength);
7764 }
7765 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetInputSetting(IWMWriterAdvanced3* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
7766     return This->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength);
7767 }
7768 /*** IWMWriterAdvanced3 methods ***/
7769 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetStatisticsEx(IWMWriterAdvanced3* This,WORD wStreamNum,WM_WRITER_STATISTICS_EX *pStats) {
7770     return This->lpVtbl->GetStatisticsEx(This,wStreamNum,pStats);
7771 }
7772 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetNonBlocking(IWMWriterAdvanced3* This) {
7773     return This->lpVtbl->SetNonBlocking(This);
7774 }
7775 #endif
7776 #endif
7777 
7778 #endif
7779 
7780 
7781 #endif  /* __IWMWriterAdvanced3_INTERFACE_DEFINED__ */
7782 
7783 /*****************************************************************************
7784  * IWMHeaderInfo interface
7785  */
7786 #ifndef __IWMHeaderInfo_INTERFACE_DEFINED__
7787 #define __IWMHeaderInfo_INTERFACE_DEFINED__
7788 
7789 DEFINE_GUID(IID_IWMHeaderInfo, 0x96406bda, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
7790 #if defined(__cplusplus) && !defined(CINTERFACE)
7791 MIDL_INTERFACE("96406bda-2b2b-11d3-b36b-00c04f6108ff")
7792 IWMHeaderInfo : public IUnknown
7793 {
7794     virtual HRESULT STDMETHODCALLTYPE GetAttributeCount(
7795         WORD stream_num,
7796         WORD *attributes) = 0;
7797 
7798     virtual HRESULT STDMETHODCALLTYPE GetAttributeByIndex(
7799         WORD index,
7800         WORD *stream_num,
7801         WCHAR *name,
7802         WORD *name_len,
7803         WMT_ATTR_DATATYPE *type,
7804         BYTE *value,
7805         WORD *length) = 0;
7806 
7807     virtual HRESULT STDMETHODCALLTYPE GetAttributeByName(
7808         WORD *stream_num,
7809         LPCWSTR name,
7810         WMT_ATTR_DATATYPE *type,
7811         BYTE *value,
7812         WORD *length) = 0;
7813 
7814     virtual HRESULT STDMETHODCALLTYPE SetAttribute(
7815         WORD stream_num,
7816         LPCWSTR name,
7817         WMT_ATTR_DATATYPE type,
7818         const BYTE *value,
7819         WORD length) = 0;
7820 
7821     virtual HRESULT STDMETHODCALLTYPE GetMarkerCount(
7822         WORD *markers) = 0;
7823 
7824     virtual HRESULT STDMETHODCALLTYPE GetMarker(
7825         WORD index,
7826         WCHAR *marker_name,
7827         WORD *marker_len,
7828         QWORD *marker_time) = 0;
7829 
7830     virtual HRESULT STDMETHODCALLTYPE AddMarker(
7831         LPCWSTR_WMSDK_TYPE_SAFE marker_name,
7832         QWORD marker_time) = 0;
7833 
7834     virtual HRESULT STDMETHODCALLTYPE RemoveMarker(
7835         WORD index) = 0;
7836 
7837     virtual HRESULT STDMETHODCALLTYPE GetScriptCount(
7838         WORD *scripts) = 0;
7839 
7840     virtual HRESULT STDMETHODCALLTYPE GetScript(
7841         WORD index,
7842         WCHAR *type,
7843         WORD *type_len,
7844         WCHAR *command,
7845         WORD *command_len,
7846         QWORD *script_time) = 0;
7847 
7848     virtual HRESULT STDMETHODCALLTYPE AddScript(
7849         LPCWSTR_WMSDK_TYPE_SAFE type,
7850         LPCWSTR_WMSDK_TYPE_SAFE command,
7851         QWORD script_time) = 0;
7852 
7853     virtual HRESULT STDMETHODCALLTYPE RemoveScript(
7854         WORD index) = 0;
7855 
7856 };
7857 #ifdef __CRT_UUID_DECL
7858 __CRT_UUID_DECL(IWMHeaderInfo, 0x96406bda, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
7859 #endif
7860 #else
7861 typedef struct IWMHeaderInfoVtbl {
7862     BEGIN_INTERFACE
7863 
7864     /*** IUnknown methods ***/
7865     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
7866         IWMHeaderInfo *This,
7867         REFIID riid,
7868         void **ppvObject);
7869 
7870     ULONG (STDMETHODCALLTYPE *AddRef)(
7871         IWMHeaderInfo *This);
7872 
7873     ULONG (STDMETHODCALLTYPE *Release)(
7874         IWMHeaderInfo *This);
7875 
7876     /*** IWMHeaderInfo methods ***/
7877     HRESULT (STDMETHODCALLTYPE *GetAttributeCount)(
7878         IWMHeaderInfo *This,
7879         WORD stream_num,
7880         WORD *attributes);
7881 
7882     HRESULT (STDMETHODCALLTYPE *GetAttributeByIndex)(
7883         IWMHeaderInfo *This,
7884         WORD index,
7885         WORD *stream_num,
7886         WCHAR *name,
7887         WORD *name_len,
7888         WMT_ATTR_DATATYPE *type,
7889         BYTE *value,
7890         WORD *length);
7891 
7892     HRESULT (STDMETHODCALLTYPE *GetAttributeByName)(
7893         IWMHeaderInfo *This,
7894         WORD *stream_num,
7895         LPCWSTR name,
7896         WMT_ATTR_DATATYPE *type,
7897         BYTE *value,
7898         WORD *length);
7899 
7900     HRESULT (STDMETHODCALLTYPE *SetAttribute)(
7901         IWMHeaderInfo *This,
7902         WORD stream_num,
7903         LPCWSTR name,
7904         WMT_ATTR_DATATYPE type,
7905         const BYTE *value,
7906         WORD length);
7907 
7908     HRESULT (STDMETHODCALLTYPE *GetMarkerCount)(
7909         IWMHeaderInfo *This,
7910         WORD *markers);
7911 
7912     HRESULT (STDMETHODCALLTYPE *GetMarker)(
7913         IWMHeaderInfo *This,
7914         WORD index,
7915         WCHAR *marker_name,
7916         WORD *marker_len,
7917         QWORD *marker_time);
7918 
7919     HRESULT (STDMETHODCALLTYPE *AddMarker)(
7920         IWMHeaderInfo *This,
7921         LPCWSTR_WMSDK_TYPE_SAFE marker_name,
7922         QWORD marker_time);
7923 
7924     HRESULT (STDMETHODCALLTYPE *RemoveMarker)(
7925         IWMHeaderInfo *This,
7926         WORD index);
7927 
7928     HRESULT (STDMETHODCALLTYPE *GetScriptCount)(
7929         IWMHeaderInfo *This,
7930         WORD *scripts);
7931 
7932     HRESULT (STDMETHODCALLTYPE *GetScript)(
7933         IWMHeaderInfo *This,
7934         WORD index,
7935         WCHAR *type,
7936         WORD *type_len,
7937         WCHAR *command,
7938         WORD *command_len,
7939         QWORD *script_time);
7940 
7941     HRESULT (STDMETHODCALLTYPE *AddScript)(
7942         IWMHeaderInfo *This,
7943         LPCWSTR_WMSDK_TYPE_SAFE type,
7944         LPCWSTR_WMSDK_TYPE_SAFE command,
7945         QWORD script_time);
7946 
7947     HRESULT (STDMETHODCALLTYPE *RemoveScript)(
7948         IWMHeaderInfo *This,
7949         WORD index);
7950 
7951     END_INTERFACE
7952 } IWMHeaderInfoVtbl;
7953 
7954 interface IWMHeaderInfo {
7955     CONST_VTBL IWMHeaderInfoVtbl* lpVtbl;
7956 };
7957 
7958 #ifdef COBJMACROS
7959 #ifndef WIDL_C_INLINE_WRAPPERS
7960 /*** IUnknown methods ***/
7961 #define IWMHeaderInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
7962 #define IWMHeaderInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
7963 #define IWMHeaderInfo_Release(This) (This)->lpVtbl->Release(This)
7964 /*** IWMHeaderInfo methods ***/
7965 #define IWMHeaderInfo_GetAttributeCount(This,stream_num,attributes) (This)->lpVtbl->GetAttributeCount(This,stream_num,attributes)
7966 #define IWMHeaderInfo_GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length) (This)->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length)
7967 #define IWMHeaderInfo_GetAttributeByName(This,stream_num,name,type,value,length) (This)->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length)
7968 #define IWMHeaderInfo_SetAttribute(This,stream_num,name,type,value,length) (This)->lpVtbl->SetAttribute(This,stream_num,name,type,value,length)
7969 #define IWMHeaderInfo_GetMarkerCount(This,markers) (This)->lpVtbl->GetMarkerCount(This,markers)
7970 #define IWMHeaderInfo_GetMarker(This,index,marker_name,marker_len,marker_time) (This)->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time)
7971 #define IWMHeaderInfo_AddMarker(This,marker_name,marker_time) (This)->lpVtbl->AddMarker(This,marker_name,marker_time)
7972 #define IWMHeaderInfo_RemoveMarker(This,index) (This)->lpVtbl->RemoveMarker(This,index)
7973 #define IWMHeaderInfo_GetScriptCount(This,scripts) (This)->lpVtbl->GetScriptCount(This,scripts)
7974 #define IWMHeaderInfo_GetScript(This,index,type,type_len,command,command_len,script_time) (This)->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time)
7975 #define IWMHeaderInfo_AddScript(This,type,command,script_time) (This)->lpVtbl->AddScript(This,type,command,script_time)
7976 #define IWMHeaderInfo_RemoveScript(This,index) (This)->lpVtbl->RemoveScript(This,index)
7977 #else
7978 /*** IUnknown methods ***/
7979 static FORCEINLINE HRESULT IWMHeaderInfo_QueryInterface(IWMHeaderInfo* This,REFIID riid,void **ppvObject) {
7980     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
7981 }
7982 static FORCEINLINE ULONG IWMHeaderInfo_AddRef(IWMHeaderInfo* This) {
7983     return This->lpVtbl->AddRef(This);
7984 }
7985 static FORCEINLINE ULONG IWMHeaderInfo_Release(IWMHeaderInfo* This) {
7986     return This->lpVtbl->Release(This);
7987 }
7988 /*** IWMHeaderInfo methods ***/
7989 static FORCEINLINE HRESULT IWMHeaderInfo_GetAttributeCount(IWMHeaderInfo* This,WORD stream_num,WORD *attributes) {
7990     return This->lpVtbl->GetAttributeCount(This,stream_num,attributes);
7991 }
7992 static FORCEINLINE HRESULT IWMHeaderInfo_GetAttributeByIndex(IWMHeaderInfo* This,WORD index,WORD *stream_num,WCHAR *name,WORD *name_len,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
7993     return This->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length);
7994 }
7995 static FORCEINLINE HRESULT IWMHeaderInfo_GetAttributeByName(IWMHeaderInfo* This,WORD *stream_num,LPCWSTR name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
7996     return This->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length);
7997 }
7998 static FORCEINLINE HRESULT IWMHeaderInfo_SetAttribute(IWMHeaderInfo* This,WORD stream_num,LPCWSTR name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
7999     return This->lpVtbl->SetAttribute(This,stream_num,name,type,value,length);
8000 }
8001 static FORCEINLINE HRESULT IWMHeaderInfo_GetMarkerCount(IWMHeaderInfo* This,WORD *markers) {
8002     return This->lpVtbl->GetMarkerCount(This,markers);
8003 }
8004 static FORCEINLINE HRESULT IWMHeaderInfo_GetMarker(IWMHeaderInfo* This,WORD index,WCHAR *marker_name,WORD *marker_len,QWORD *marker_time) {
8005     return This->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time);
8006 }
8007 static FORCEINLINE HRESULT IWMHeaderInfo_AddMarker(IWMHeaderInfo* This,LPCWSTR_WMSDK_TYPE_SAFE marker_name,QWORD marker_time) {
8008     return This->lpVtbl->AddMarker(This,marker_name,marker_time);
8009 }
8010 static FORCEINLINE HRESULT IWMHeaderInfo_RemoveMarker(IWMHeaderInfo* This,WORD index) {
8011     return This->lpVtbl->RemoveMarker(This,index);
8012 }
8013 static FORCEINLINE HRESULT IWMHeaderInfo_GetScriptCount(IWMHeaderInfo* This,WORD *scripts) {
8014     return This->lpVtbl->GetScriptCount(This,scripts);
8015 }
8016 static FORCEINLINE HRESULT IWMHeaderInfo_GetScript(IWMHeaderInfo* This,WORD index,WCHAR *type,WORD *type_len,WCHAR *command,WORD *command_len,QWORD *script_time) {
8017     return This->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time);
8018 }
8019 static FORCEINLINE HRESULT IWMHeaderInfo_AddScript(IWMHeaderInfo* This,LPCWSTR_WMSDK_TYPE_SAFE type,LPCWSTR_WMSDK_TYPE_SAFE command,QWORD script_time) {
8020     return This->lpVtbl->AddScript(This,type,command,script_time);
8021 }
8022 static FORCEINLINE HRESULT IWMHeaderInfo_RemoveScript(IWMHeaderInfo* This,WORD index) {
8023     return This->lpVtbl->RemoveScript(This,index);
8024 }
8025 #endif
8026 #endif
8027 
8028 #endif
8029 
8030 
8031 #endif  /* __IWMHeaderInfo_INTERFACE_DEFINED__ */
8032 
8033 /*****************************************************************************
8034  * IWMHeaderInfo2 interface
8035  */
8036 #ifndef __IWMHeaderInfo2_INTERFACE_DEFINED__
8037 #define __IWMHeaderInfo2_INTERFACE_DEFINED__
8038 
8039 DEFINE_GUID(IID_IWMHeaderInfo2, 0x15cf9781, 0x454e, 0x482e, 0xb3,0x93, 0x85,0xfa,0xe4,0x87,0xa8,0x10);
8040 #if defined(__cplusplus) && !defined(CINTERFACE)
8041 MIDL_INTERFACE("15cf9781-454e-482e-b393-85fae487a810")
8042 IWMHeaderInfo2 : public IWMHeaderInfo
8043 {
8044     virtual HRESULT STDMETHODCALLTYPE GetCodecInfoCount(
8045         DWORD *codec_infos) = 0;
8046 
8047     virtual HRESULT STDMETHODCALLTYPE GetCodecInfo(
8048         DWORD index,
8049         WORD *name_len,
8050         WCHAR *name,
8051         WORD *description_len,
8052         WCHAR *description,
8053         WMT_CODEC_INFO_TYPE *codec_type,
8054         WORD *codec_info_cnt,
8055         BYTE *codec_info) = 0;
8056 
8057 };
8058 #ifdef __CRT_UUID_DECL
8059 __CRT_UUID_DECL(IWMHeaderInfo2, 0x15cf9781, 0x454e, 0x482e, 0xb3,0x93, 0x85,0xfa,0xe4,0x87,0xa8,0x10)
8060 #endif
8061 #else
8062 typedef struct IWMHeaderInfo2Vtbl {
8063     BEGIN_INTERFACE
8064 
8065     /*** IUnknown methods ***/
8066     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8067         IWMHeaderInfo2 *This,
8068         REFIID riid,
8069         void **ppvObject);
8070 
8071     ULONG (STDMETHODCALLTYPE *AddRef)(
8072         IWMHeaderInfo2 *This);
8073 
8074     ULONG (STDMETHODCALLTYPE *Release)(
8075         IWMHeaderInfo2 *This);
8076 
8077     /*** IWMHeaderInfo methods ***/
8078     HRESULT (STDMETHODCALLTYPE *GetAttributeCount)(
8079         IWMHeaderInfo2 *This,
8080         WORD stream_num,
8081         WORD *attributes);
8082 
8083     HRESULT (STDMETHODCALLTYPE *GetAttributeByIndex)(
8084         IWMHeaderInfo2 *This,
8085         WORD index,
8086         WORD *stream_num,
8087         WCHAR *name,
8088         WORD *name_len,
8089         WMT_ATTR_DATATYPE *type,
8090         BYTE *value,
8091         WORD *length);
8092 
8093     HRESULT (STDMETHODCALLTYPE *GetAttributeByName)(
8094         IWMHeaderInfo2 *This,
8095         WORD *stream_num,
8096         LPCWSTR name,
8097         WMT_ATTR_DATATYPE *type,
8098         BYTE *value,
8099         WORD *length);
8100 
8101     HRESULT (STDMETHODCALLTYPE *SetAttribute)(
8102         IWMHeaderInfo2 *This,
8103         WORD stream_num,
8104         LPCWSTR name,
8105         WMT_ATTR_DATATYPE type,
8106         const BYTE *value,
8107         WORD length);
8108 
8109     HRESULT (STDMETHODCALLTYPE *GetMarkerCount)(
8110         IWMHeaderInfo2 *This,
8111         WORD *markers);
8112 
8113     HRESULT (STDMETHODCALLTYPE *GetMarker)(
8114         IWMHeaderInfo2 *This,
8115         WORD index,
8116         WCHAR *marker_name,
8117         WORD *marker_len,
8118         QWORD *marker_time);
8119 
8120     HRESULT (STDMETHODCALLTYPE *AddMarker)(
8121         IWMHeaderInfo2 *This,
8122         LPCWSTR_WMSDK_TYPE_SAFE marker_name,
8123         QWORD marker_time);
8124 
8125     HRESULT (STDMETHODCALLTYPE *RemoveMarker)(
8126         IWMHeaderInfo2 *This,
8127         WORD index);
8128 
8129     HRESULT (STDMETHODCALLTYPE *GetScriptCount)(
8130         IWMHeaderInfo2 *This,
8131         WORD *scripts);
8132 
8133     HRESULT (STDMETHODCALLTYPE *GetScript)(
8134         IWMHeaderInfo2 *This,
8135         WORD index,
8136         WCHAR *type,
8137         WORD *type_len,
8138         WCHAR *command,
8139         WORD *command_len,
8140         QWORD *script_time);
8141 
8142     HRESULT (STDMETHODCALLTYPE *AddScript)(
8143         IWMHeaderInfo2 *This,
8144         LPCWSTR_WMSDK_TYPE_SAFE type,
8145         LPCWSTR_WMSDK_TYPE_SAFE command,
8146         QWORD script_time);
8147 
8148     HRESULT (STDMETHODCALLTYPE *RemoveScript)(
8149         IWMHeaderInfo2 *This,
8150         WORD index);
8151 
8152     /*** IWMHeaderInfo2 methods ***/
8153     HRESULT (STDMETHODCALLTYPE *GetCodecInfoCount)(
8154         IWMHeaderInfo2 *This,
8155         DWORD *codec_infos);
8156 
8157     HRESULT (STDMETHODCALLTYPE *GetCodecInfo)(
8158         IWMHeaderInfo2 *This,
8159         DWORD index,
8160         WORD *name_len,
8161         WCHAR *name,
8162         WORD *description_len,
8163         WCHAR *description,
8164         WMT_CODEC_INFO_TYPE *codec_type,
8165         WORD *codec_info_cnt,
8166         BYTE *codec_info);
8167 
8168     END_INTERFACE
8169 } IWMHeaderInfo2Vtbl;
8170 
8171 interface IWMHeaderInfo2 {
8172     CONST_VTBL IWMHeaderInfo2Vtbl* lpVtbl;
8173 };
8174 
8175 #ifdef COBJMACROS
8176 #ifndef WIDL_C_INLINE_WRAPPERS
8177 /*** IUnknown methods ***/
8178 #define IWMHeaderInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8179 #define IWMHeaderInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
8180 #define IWMHeaderInfo2_Release(This) (This)->lpVtbl->Release(This)
8181 /*** IWMHeaderInfo methods ***/
8182 #define IWMHeaderInfo2_GetAttributeCount(This,stream_num,attributes) (This)->lpVtbl->GetAttributeCount(This,stream_num,attributes)
8183 #define IWMHeaderInfo2_GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length) (This)->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length)
8184 #define IWMHeaderInfo2_GetAttributeByName(This,stream_num,name,type,value,length) (This)->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length)
8185 #define IWMHeaderInfo2_SetAttribute(This,stream_num,name,type,value,length) (This)->lpVtbl->SetAttribute(This,stream_num,name,type,value,length)
8186 #define IWMHeaderInfo2_GetMarkerCount(This,markers) (This)->lpVtbl->GetMarkerCount(This,markers)
8187 #define IWMHeaderInfo2_GetMarker(This,index,marker_name,marker_len,marker_time) (This)->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time)
8188 #define IWMHeaderInfo2_AddMarker(This,marker_name,marker_time) (This)->lpVtbl->AddMarker(This,marker_name,marker_time)
8189 #define IWMHeaderInfo2_RemoveMarker(This,index) (This)->lpVtbl->RemoveMarker(This,index)
8190 #define IWMHeaderInfo2_GetScriptCount(This,scripts) (This)->lpVtbl->GetScriptCount(This,scripts)
8191 #define IWMHeaderInfo2_GetScript(This,index,type,type_len,command,command_len,script_time) (This)->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time)
8192 #define IWMHeaderInfo2_AddScript(This,type,command,script_time) (This)->lpVtbl->AddScript(This,type,command,script_time)
8193 #define IWMHeaderInfo2_RemoveScript(This,index) (This)->lpVtbl->RemoveScript(This,index)
8194 /*** IWMHeaderInfo2 methods ***/
8195 #define IWMHeaderInfo2_GetCodecInfoCount(This,codec_infos) (This)->lpVtbl->GetCodecInfoCount(This,codec_infos)
8196 #define IWMHeaderInfo2_GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info) (This)->lpVtbl->GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info)
8197 #else
8198 /*** IUnknown methods ***/
8199 static FORCEINLINE HRESULT IWMHeaderInfo2_QueryInterface(IWMHeaderInfo2* This,REFIID riid,void **ppvObject) {
8200     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8201 }
8202 static FORCEINLINE ULONG IWMHeaderInfo2_AddRef(IWMHeaderInfo2* This) {
8203     return This->lpVtbl->AddRef(This);
8204 }
8205 static FORCEINLINE ULONG IWMHeaderInfo2_Release(IWMHeaderInfo2* This) {
8206     return This->lpVtbl->Release(This);
8207 }
8208 /*** IWMHeaderInfo methods ***/
8209 static FORCEINLINE HRESULT IWMHeaderInfo2_GetAttributeCount(IWMHeaderInfo2* This,WORD stream_num,WORD *attributes) {
8210     return This->lpVtbl->GetAttributeCount(This,stream_num,attributes);
8211 }
8212 static FORCEINLINE HRESULT IWMHeaderInfo2_GetAttributeByIndex(IWMHeaderInfo2* This,WORD index,WORD *stream_num,WCHAR *name,WORD *name_len,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
8213     return This->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length);
8214 }
8215 static FORCEINLINE HRESULT IWMHeaderInfo2_GetAttributeByName(IWMHeaderInfo2* This,WORD *stream_num,LPCWSTR name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
8216     return This->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length);
8217 }
8218 static FORCEINLINE HRESULT IWMHeaderInfo2_SetAttribute(IWMHeaderInfo2* This,WORD stream_num,LPCWSTR name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
8219     return This->lpVtbl->SetAttribute(This,stream_num,name,type,value,length);
8220 }
8221 static FORCEINLINE HRESULT IWMHeaderInfo2_GetMarkerCount(IWMHeaderInfo2* This,WORD *markers) {
8222     return This->lpVtbl->GetMarkerCount(This,markers);
8223 }
8224 static FORCEINLINE HRESULT IWMHeaderInfo2_GetMarker(IWMHeaderInfo2* This,WORD index,WCHAR *marker_name,WORD *marker_len,QWORD *marker_time) {
8225     return This->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time);
8226 }
8227 static FORCEINLINE HRESULT IWMHeaderInfo2_AddMarker(IWMHeaderInfo2* This,LPCWSTR_WMSDK_TYPE_SAFE marker_name,QWORD marker_time) {
8228     return This->lpVtbl->AddMarker(This,marker_name,marker_time);
8229 }
8230 static FORCEINLINE HRESULT IWMHeaderInfo2_RemoveMarker(IWMHeaderInfo2* This,WORD index) {
8231     return This->lpVtbl->RemoveMarker(This,index);
8232 }
8233 static FORCEINLINE HRESULT IWMHeaderInfo2_GetScriptCount(IWMHeaderInfo2* This,WORD *scripts) {
8234     return This->lpVtbl->GetScriptCount(This,scripts);
8235 }
8236 static FORCEINLINE HRESULT IWMHeaderInfo2_GetScript(IWMHeaderInfo2* This,WORD index,WCHAR *type,WORD *type_len,WCHAR *command,WORD *command_len,QWORD *script_time) {
8237     return This->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time);
8238 }
8239 static FORCEINLINE HRESULT IWMHeaderInfo2_AddScript(IWMHeaderInfo2* This,LPCWSTR_WMSDK_TYPE_SAFE type,LPCWSTR_WMSDK_TYPE_SAFE command,QWORD script_time) {
8240     return This->lpVtbl->AddScript(This,type,command,script_time);
8241 }
8242 static FORCEINLINE HRESULT IWMHeaderInfo2_RemoveScript(IWMHeaderInfo2* This,WORD index) {
8243     return This->lpVtbl->RemoveScript(This,index);
8244 }
8245 /*** IWMHeaderInfo2 methods ***/
8246 static FORCEINLINE HRESULT IWMHeaderInfo2_GetCodecInfoCount(IWMHeaderInfo2* This,DWORD *codec_infos) {
8247     return This->lpVtbl->GetCodecInfoCount(This,codec_infos);
8248 }
8249 static FORCEINLINE HRESULT IWMHeaderInfo2_GetCodecInfo(IWMHeaderInfo2* This,DWORD index,WORD *name_len,WCHAR *name,WORD *description_len,WCHAR *description,WMT_CODEC_INFO_TYPE *codec_type,WORD *codec_info_cnt,BYTE *codec_info) {
8250     return This->lpVtbl->GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info);
8251 }
8252 #endif
8253 #endif
8254 
8255 #endif
8256 
8257 
8258 #endif  /* __IWMHeaderInfo2_INTERFACE_DEFINED__ */
8259 
8260 /*****************************************************************************
8261  * IWMHeaderInfo3 interface
8262  */
8263 #ifndef __IWMHeaderInfo3_INTERFACE_DEFINED__
8264 #define __IWMHeaderInfo3_INTERFACE_DEFINED__
8265 
8266 DEFINE_GUID(IID_IWMHeaderInfo3, 0x15cc68e3, 0x27cc, 0x4ecd, 0xb2,0x22, 0x3f,0x5d,0x02,0xd8,0x0b,0xd5);
8267 #if defined(__cplusplus) && !defined(CINTERFACE)
8268 MIDL_INTERFACE("15cc68e3-27cc-4ecd-b222-3f5d02d80bd5")
8269 IWMHeaderInfo3 : public IWMHeaderInfo2
8270 {
8271     virtual HRESULT STDMETHODCALLTYPE GetAttributeCountEx(
8272         WORD stream_num,
8273         WORD *attributes) = 0;
8274 
8275     virtual HRESULT STDMETHODCALLTYPE GetAttributeIndices(
8276         WORD stream_num,
8277         LPCWSTR name,
8278         WORD *lang_index,
8279         WORD *indices,
8280         WORD *count) = 0;
8281 
8282     virtual HRESULT STDMETHODCALLTYPE GetAttributeByIndexEx(
8283         WORD stream_num,
8284         WORD index,
8285         LPWSTR name,
8286         WORD *name_len,
8287         WMT_ATTR_DATATYPE *type,
8288         WORD *lang_index,
8289         BYTE *value,
8290         DWORD *data_len) = 0;
8291 
8292     virtual HRESULT STDMETHODCALLTYPE ModifyAttribute(
8293         WORD stream_num,
8294         WORD index,
8295         WMT_ATTR_DATATYPE type,
8296         WORD lang_index,
8297         const BYTE *value,
8298         DWORD length) = 0;
8299 
8300     virtual HRESULT STDMETHODCALLTYPE AddAttribute(
8301         WORD stream_num,
8302         LPCWSTR name,
8303         WORD *index,
8304         WMT_ATTR_DATATYPE type,
8305         WORD lang_index,
8306         const BYTE *value,
8307         DWORD length) = 0;
8308 
8309     virtual HRESULT STDMETHODCALLTYPE DeleteAttribute(
8310         WORD stream_num,
8311         WORD index) = 0;
8312 
8313     virtual HRESULT STDMETHODCALLTYPE AddCodecInfo(
8314         LPCWSTR_WMSDK_TYPE_SAFE name,
8315         LPCWSTR_WMSDK_TYPE_SAFE description,
8316         WMT_CODEC_INFO_TYPE codec_type,
8317         WORD codec_info_cnt,
8318         BYTE *codec_info) = 0;
8319 
8320 };
8321 #ifdef __CRT_UUID_DECL
8322 __CRT_UUID_DECL(IWMHeaderInfo3, 0x15cc68e3, 0x27cc, 0x4ecd, 0xb2,0x22, 0x3f,0x5d,0x02,0xd8,0x0b,0xd5)
8323 #endif
8324 #else
8325 typedef struct IWMHeaderInfo3Vtbl {
8326     BEGIN_INTERFACE
8327 
8328     /*** IUnknown methods ***/
8329     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8330         IWMHeaderInfo3 *This,
8331         REFIID riid,
8332         void **ppvObject);
8333 
8334     ULONG (STDMETHODCALLTYPE *AddRef)(
8335         IWMHeaderInfo3 *This);
8336 
8337     ULONG (STDMETHODCALLTYPE *Release)(
8338         IWMHeaderInfo3 *This);
8339 
8340     /*** IWMHeaderInfo methods ***/
8341     HRESULT (STDMETHODCALLTYPE *GetAttributeCount)(
8342         IWMHeaderInfo3 *This,
8343         WORD stream_num,
8344         WORD *attributes);
8345 
8346     HRESULT (STDMETHODCALLTYPE *GetAttributeByIndex)(
8347         IWMHeaderInfo3 *This,
8348         WORD index,
8349         WORD *stream_num,
8350         WCHAR *name,
8351         WORD *name_len,
8352         WMT_ATTR_DATATYPE *type,
8353         BYTE *value,
8354         WORD *length);
8355 
8356     HRESULT (STDMETHODCALLTYPE *GetAttributeByName)(
8357         IWMHeaderInfo3 *This,
8358         WORD *stream_num,
8359         LPCWSTR name,
8360         WMT_ATTR_DATATYPE *type,
8361         BYTE *value,
8362         WORD *length);
8363 
8364     HRESULT (STDMETHODCALLTYPE *SetAttribute)(
8365         IWMHeaderInfo3 *This,
8366         WORD stream_num,
8367         LPCWSTR name,
8368         WMT_ATTR_DATATYPE type,
8369         const BYTE *value,
8370         WORD length);
8371 
8372     HRESULT (STDMETHODCALLTYPE *GetMarkerCount)(
8373         IWMHeaderInfo3 *This,
8374         WORD *markers);
8375 
8376     HRESULT (STDMETHODCALLTYPE *GetMarker)(
8377         IWMHeaderInfo3 *This,
8378         WORD index,
8379         WCHAR *marker_name,
8380         WORD *marker_len,
8381         QWORD *marker_time);
8382 
8383     HRESULT (STDMETHODCALLTYPE *AddMarker)(
8384         IWMHeaderInfo3 *This,
8385         LPCWSTR_WMSDK_TYPE_SAFE marker_name,
8386         QWORD marker_time);
8387 
8388     HRESULT (STDMETHODCALLTYPE *RemoveMarker)(
8389         IWMHeaderInfo3 *This,
8390         WORD index);
8391 
8392     HRESULT (STDMETHODCALLTYPE *GetScriptCount)(
8393         IWMHeaderInfo3 *This,
8394         WORD *scripts);
8395 
8396     HRESULT (STDMETHODCALLTYPE *GetScript)(
8397         IWMHeaderInfo3 *This,
8398         WORD index,
8399         WCHAR *type,
8400         WORD *type_len,
8401         WCHAR *command,
8402         WORD *command_len,
8403         QWORD *script_time);
8404 
8405     HRESULT (STDMETHODCALLTYPE *AddScript)(
8406         IWMHeaderInfo3 *This,
8407         LPCWSTR_WMSDK_TYPE_SAFE type,
8408         LPCWSTR_WMSDK_TYPE_SAFE command,
8409         QWORD script_time);
8410 
8411     HRESULT (STDMETHODCALLTYPE *RemoveScript)(
8412         IWMHeaderInfo3 *This,
8413         WORD index);
8414 
8415     /*** IWMHeaderInfo2 methods ***/
8416     HRESULT (STDMETHODCALLTYPE *GetCodecInfoCount)(
8417         IWMHeaderInfo3 *This,
8418         DWORD *codec_infos);
8419 
8420     HRESULT (STDMETHODCALLTYPE *GetCodecInfo)(
8421         IWMHeaderInfo3 *This,
8422         DWORD index,
8423         WORD *name_len,
8424         WCHAR *name,
8425         WORD *description_len,
8426         WCHAR *description,
8427         WMT_CODEC_INFO_TYPE *codec_type,
8428         WORD *codec_info_cnt,
8429         BYTE *codec_info);
8430 
8431     /*** IWMHeaderInfo3 methods ***/
8432     HRESULT (STDMETHODCALLTYPE *GetAttributeCountEx)(
8433         IWMHeaderInfo3 *This,
8434         WORD stream_num,
8435         WORD *attributes);
8436 
8437     HRESULT (STDMETHODCALLTYPE *GetAttributeIndices)(
8438         IWMHeaderInfo3 *This,
8439         WORD stream_num,
8440         LPCWSTR name,
8441         WORD *lang_index,
8442         WORD *indices,
8443         WORD *count);
8444 
8445     HRESULT (STDMETHODCALLTYPE *GetAttributeByIndexEx)(
8446         IWMHeaderInfo3 *This,
8447         WORD stream_num,
8448         WORD index,
8449         LPWSTR name,
8450         WORD *name_len,
8451         WMT_ATTR_DATATYPE *type,
8452         WORD *lang_index,
8453         BYTE *value,
8454         DWORD *data_len);
8455 
8456     HRESULT (STDMETHODCALLTYPE *ModifyAttribute)(
8457         IWMHeaderInfo3 *This,
8458         WORD stream_num,
8459         WORD index,
8460         WMT_ATTR_DATATYPE type,
8461         WORD lang_index,
8462         const BYTE *value,
8463         DWORD length);
8464 
8465     HRESULT (STDMETHODCALLTYPE *AddAttribute)(
8466         IWMHeaderInfo3 *This,
8467         WORD stream_num,
8468         LPCWSTR name,
8469         WORD *index,
8470         WMT_ATTR_DATATYPE type,
8471         WORD lang_index,
8472         const BYTE *value,
8473         DWORD length);
8474 
8475     HRESULT (STDMETHODCALLTYPE *DeleteAttribute)(
8476         IWMHeaderInfo3 *This,
8477         WORD stream_num,
8478         WORD index);
8479 
8480     HRESULT (STDMETHODCALLTYPE *AddCodecInfo)(
8481         IWMHeaderInfo3 *This,
8482         LPCWSTR_WMSDK_TYPE_SAFE name,
8483         LPCWSTR_WMSDK_TYPE_SAFE description,
8484         WMT_CODEC_INFO_TYPE codec_type,
8485         WORD codec_info_cnt,
8486         BYTE *codec_info);
8487 
8488     END_INTERFACE
8489 } IWMHeaderInfo3Vtbl;
8490 
8491 interface IWMHeaderInfo3 {
8492     CONST_VTBL IWMHeaderInfo3Vtbl* lpVtbl;
8493 };
8494 
8495 #ifdef COBJMACROS
8496 #ifndef WIDL_C_INLINE_WRAPPERS
8497 /*** IUnknown methods ***/
8498 #define IWMHeaderInfo3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8499 #define IWMHeaderInfo3_AddRef(This) (This)->lpVtbl->AddRef(This)
8500 #define IWMHeaderInfo3_Release(This) (This)->lpVtbl->Release(This)
8501 /*** IWMHeaderInfo methods ***/
8502 #define IWMHeaderInfo3_GetAttributeCount(This,stream_num,attributes) (This)->lpVtbl->GetAttributeCount(This,stream_num,attributes)
8503 #define IWMHeaderInfo3_GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length) (This)->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length)
8504 #define IWMHeaderInfo3_GetAttributeByName(This,stream_num,name,type,value,length) (This)->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length)
8505 #define IWMHeaderInfo3_SetAttribute(This,stream_num,name,type,value,length) (This)->lpVtbl->SetAttribute(This,stream_num,name,type,value,length)
8506 #define IWMHeaderInfo3_GetMarkerCount(This,markers) (This)->lpVtbl->GetMarkerCount(This,markers)
8507 #define IWMHeaderInfo3_GetMarker(This,index,marker_name,marker_len,marker_time) (This)->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time)
8508 #define IWMHeaderInfo3_AddMarker(This,marker_name,marker_time) (This)->lpVtbl->AddMarker(This,marker_name,marker_time)
8509 #define IWMHeaderInfo3_RemoveMarker(This,index) (This)->lpVtbl->RemoveMarker(This,index)
8510 #define IWMHeaderInfo3_GetScriptCount(This,scripts) (This)->lpVtbl->GetScriptCount(This,scripts)
8511 #define IWMHeaderInfo3_GetScript(This,index,type,type_len,command,command_len,script_time) (This)->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time)
8512 #define IWMHeaderInfo3_AddScript(This,type,command,script_time) (This)->lpVtbl->AddScript(This,type,command,script_time)
8513 #define IWMHeaderInfo3_RemoveScript(This,index) (This)->lpVtbl->RemoveScript(This,index)
8514 /*** IWMHeaderInfo2 methods ***/
8515 #define IWMHeaderInfo3_GetCodecInfoCount(This,codec_infos) (This)->lpVtbl->GetCodecInfoCount(This,codec_infos)
8516 #define IWMHeaderInfo3_GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info) (This)->lpVtbl->GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info)
8517 /*** IWMHeaderInfo3 methods ***/
8518 #define IWMHeaderInfo3_GetAttributeCountEx(This,stream_num,attributes) (This)->lpVtbl->GetAttributeCountEx(This,stream_num,attributes)
8519 #define IWMHeaderInfo3_GetAttributeIndices(This,stream_num,name,lang_index,indices,count) (This)->lpVtbl->GetAttributeIndices(This,stream_num,name,lang_index,indices,count)
8520 #define IWMHeaderInfo3_GetAttributeByIndexEx(This,stream_num,index,name,name_len,type,lang_index,value,data_len) (This)->lpVtbl->GetAttributeByIndexEx(This,stream_num,index,name,name_len,type,lang_index,value,data_len)
8521 #define IWMHeaderInfo3_ModifyAttribute(This,stream_num,index,type,lang_index,value,length) (This)->lpVtbl->ModifyAttribute(This,stream_num,index,type,lang_index,value,length)
8522 #define IWMHeaderInfo3_AddAttribute(This,stream_num,name,index,type,lang_index,value,length) (This)->lpVtbl->AddAttribute(This,stream_num,name,index,type,lang_index,value,length)
8523 #define IWMHeaderInfo3_DeleteAttribute(This,stream_num,index) (This)->lpVtbl->DeleteAttribute(This,stream_num,index)
8524 #define IWMHeaderInfo3_AddCodecInfo(This,name,description,codec_type,codec_info_cnt,codec_info) (This)->lpVtbl->AddCodecInfo(This,name,description,codec_type,codec_info_cnt,codec_info)
8525 #else
8526 /*** IUnknown methods ***/
8527 static FORCEINLINE HRESULT IWMHeaderInfo3_QueryInterface(IWMHeaderInfo3* This,REFIID riid,void **ppvObject) {
8528     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8529 }
8530 static FORCEINLINE ULONG IWMHeaderInfo3_AddRef(IWMHeaderInfo3* This) {
8531     return This->lpVtbl->AddRef(This);
8532 }
8533 static FORCEINLINE ULONG IWMHeaderInfo3_Release(IWMHeaderInfo3* This) {
8534     return This->lpVtbl->Release(This);
8535 }
8536 /*** IWMHeaderInfo methods ***/
8537 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeCount(IWMHeaderInfo3* This,WORD stream_num,WORD *attributes) {
8538     return This->lpVtbl->GetAttributeCount(This,stream_num,attributes);
8539 }
8540 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeByIndex(IWMHeaderInfo3* This,WORD index,WORD *stream_num,WCHAR *name,WORD *name_len,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
8541     return This->lpVtbl->GetAttributeByIndex(This,index,stream_num,name,name_len,type,value,length);
8542 }
8543 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeByName(IWMHeaderInfo3* This,WORD *stream_num,LPCWSTR name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
8544     return This->lpVtbl->GetAttributeByName(This,stream_num,name,type,value,length);
8545 }
8546 static FORCEINLINE HRESULT IWMHeaderInfo3_SetAttribute(IWMHeaderInfo3* This,WORD stream_num,LPCWSTR name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
8547     return This->lpVtbl->SetAttribute(This,stream_num,name,type,value,length);
8548 }
8549 static FORCEINLINE HRESULT IWMHeaderInfo3_GetMarkerCount(IWMHeaderInfo3* This,WORD *markers) {
8550     return This->lpVtbl->GetMarkerCount(This,markers);
8551 }
8552 static FORCEINLINE HRESULT IWMHeaderInfo3_GetMarker(IWMHeaderInfo3* This,WORD index,WCHAR *marker_name,WORD *marker_len,QWORD *marker_time) {
8553     return This->lpVtbl->GetMarker(This,index,marker_name,marker_len,marker_time);
8554 }
8555 static FORCEINLINE HRESULT IWMHeaderInfo3_AddMarker(IWMHeaderInfo3* This,LPCWSTR_WMSDK_TYPE_SAFE marker_name,QWORD marker_time) {
8556     return This->lpVtbl->AddMarker(This,marker_name,marker_time);
8557 }
8558 static FORCEINLINE HRESULT IWMHeaderInfo3_RemoveMarker(IWMHeaderInfo3* This,WORD index) {
8559     return This->lpVtbl->RemoveMarker(This,index);
8560 }
8561 static FORCEINLINE HRESULT IWMHeaderInfo3_GetScriptCount(IWMHeaderInfo3* This,WORD *scripts) {
8562     return This->lpVtbl->GetScriptCount(This,scripts);
8563 }
8564 static FORCEINLINE HRESULT IWMHeaderInfo3_GetScript(IWMHeaderInfo3* This,WORD index,WCHAR *type,WORD *type_len,WCHAR *command,WORD *command_len,QWORD *script_time) {
8565     return This->lpVtbl->GetScript(This,index,type,type_len,command,command_len,script_time);
8566 }
8567 static FORCEINLINE HRESULT IWMHeaderInfo3_AddScript(IWMHeaderInfo3* This,LPCWSTR_WMSDK_TYPE_SAFE type,LPCWSTR_WMSDK_TYPE_SAFE command,QWORD script_time) {
8568     return This->lpVtbl->AddScript(This,type,command,script_time);
8569 }
8570 static FORCEINLINE HRESULT IWMHeaderInfo3_RemoveScript(IWMHeaderInfo3* This,WORD index) {
8571     return This->lpVtbl->RemoveScript(This,index);
8572 }
8573 /*** IWMHeaderInfo2 methods ***/
8574 static FORCEINLINE HRESULT IWMHeaderInfo3_GetCodecInfoCount(IWMHeaderInfo3* This,DWORD *codec_infos) {
8575     return This->lpVtbl->GetCodecInfoCount(This,codec_infos);
8576 }
8577 static FORCEINLINE HRESULT IWMHeaderInfo3_GetCodecInfo(IWMHeaderInfo3* This,DWORD index,WORD *name_len,WCHAR *name,WORD *description_len,WCHAR *description,WMT_CODEC_INFO_TYPE *codec_type,WORD *codec_info_cnt,BYTE *codec_info) {
8578     return This->lpVtbl->GetCodecInfo(This,index,name_len,name,description_len,description,codec_type,codec_info_cnt,codec_info);
8579 }
8580 /*** IWMHeaderInfo3 methods ***/
8581 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeCountEx(IWMHeaderInfo3* This,WORD stream_num,WORD *attributes) {
8582     return This->lpVtbl->GetAttributeCountEx(This,stream_num,attributes);
8583 }
8584 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeIndices(IWMHeaderInfo3* This,WORD stream_num,LPCWSTR name,WORD *lang_index,WORD *indices,WORD *count) {
8585     return This->lpVtbl->GetAttributeIndices(This,stream_num,name,lang_index,indices,count);
8586 }
8587 static FORCEINLINE HRESULT IWMHeaderInfo3_GetAttributeByIndexEx(IWMHeaderInfo3* This,WORD stream_num,WORD index,LPWSTR name,WORD *name_len,WMT_ATTR_DATATYPE *type,WORD *lang_index,BYTE *value,DWORD *data_len) {
8588     return This->lpVtbl->GetAttributeByIndexEx(This,stream_num,index,name,name_len,type,lang_index,value,data_len);
8589 }
8590 static FORCEINLINE HRESULT IWMHeaderInfo3_ModifyAttribute(IWMHeaderInfo3* This,WORD stream_num,WORD index,WMT_ATTR_DATATYPE type,WORD lang_index,const BYTE *value,DWORD length) {
8591     return This->lpVtbl->ModifyAttribute(This,stream_num,index,type,lang_index,value,length);
8592 }
8593 static FORCEINLINE HRESULT IWMHeaderInfo3_AddAttribute(IWMHeaderInfo3* This,WORD stream_num,LPCWSTR name,WORD *index,WMT_ATTR_DATATYPE type,WORD lang_index,const BYTE *value,DWORD length) {
8594     return This->lpVtbl->AddAttribute(This,stream_num,name,index,type,lang_index,value,length);
8595 }
8596 static FORCEINLINE HRESULT IWMHeaderInfo3_DeleteAttribute(IWMHeaderInfo3* This,WORD stream_num,WORD index) {
8597     return This->lpVtbl->DeleteAttribute(This,stream_num,index);
8598 }
8599 static FORCEINLINE HRESULT IWMHeaderInfo3_AddCodecInfo(IWMHeaderInfo3* This,LPCWSTR_WMSDK_TYPE_SAFE name,LPCWSTR_WMSDK_TYPE_SAFE description,WMT_CODEC_INFO_TYPE codec_type,WORD codec_info_cnt,BYTE *codec_info) {
8600     return This->lpVtbl->AddCodecInfo(This,name,description,codec_type,codec_info_cnt,codec_info);
8601 }
8602 #endif
8603 #endif
8604 
8605 #endif
8606 
8607 
8608 #endif  /* __IWMHeaderInfo3_INTERFACE_DEFINED__ */
8609 
8610 /*****************************************************************************
8611  * IWMReaderNetworkConfig interface
8612  */
8613 #ifndef __IWMReaderNetworkConfig_INTERFACE_DEFINED__
8614 #define __IWMReaderNetworkConfig_INTERFACE_DEFINED__
8615 
8616 DEFINE_GUID(IID_IWMReaderNetworkConfig, 0x96406bec, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
8617 #if defined(__cplusplus) && !defined(CINTERFACE)
8618 MIDL_INTERFACE("96406bec-2b2b-11d3-b36b-00c04f6108ff")
8619 IWMReaderNetworkConfig : public IUnknown
8620 {
8621     virtual HRESULT STDMETHODCALLTYPE GetBufferingTime(
8622         QWORD *buffering_time) = 0;
8623 
8624     virtual HRESULT STDMETHODCALLTYPE SetBufferingTime(
8625         QWORD buffering_time) = 0;
8626 
8627     virtual HRESULT STDMETHODCALLTYPE GetUDPPortRanges(
8628         WM_PORT_NUMBER_RANGE *array,
8629         DWORD *ranges) = 0;
8630 
8631     virtual HRESULT STDMETHODCALLTYPE SetUDPPortRanges(
8632         WM_PORT_NUMBER_RANGE *array,
8633         DWORD ranges) = 0;
8634 
8635     virtual HRESULT STDMETHODCALLTYPE GetProxySettings(
8636         const WCHAR *protocol,
8637         WMT_PROXY_SETTINGS *proxy) = 0;
8638 
8639     virtual HRESULT STDMETHODCALLTYPE SetProxySettings(
8640         LPCWSTR protocol,
8641         WMT_PROXY_SETTINGS proxy) = 0;
8642 
8643     virtual HRESULT STDMETHODCALLTYPE GetProxyHostName(
8644         const WCHAR *protocol,
8645         WCHAR *hostname,
8646         DWORD *size) = 0;
8647 
8648     virtual HRESULT STDMETHODCALLTYPE SetProxyHostName(
8649         const WCHAR *protocol,
8650         const WCHAR *hostname) = 0;
8651 
8652     virtual HRESULT STDMETHODCALLTYPE GetProxyPort(
8653         const WCHAR *protocol,
8654         DWORD *port) = 0;
8655 
8656     virtual HRESULT STDMETHODCALLTYPE SetProxyPort(
8657         const WCHAR *protocol,
8658         DWORD port) = 0;
8659 
8660     virtual HRESULT STDMETHODCALLTYPE GetProxyExceptionList(
8661         const WCHAR *protocol,
8662         WCHAR *exceptions,
8663         DWORD *count) = 0;
8664 
8665     virtual HRESULT STDMETHODCALLTYPE SetProxyExceptionList(
8666         const WCHAR *protocol,
8667         const WCHAR *exceptions) = 0;
8668 
8669     virtual HRESULT STDMETHODCALLTYPE GetProxyBypassForLocal(
8670         const WCHAR *protocol,
8671         WINBOOL *bypass) = 0;
8672 
8673     virtual HRESULT STDMETHODCALLTYPE SetProxyBypassForLocal(
8674         const WCHAR *protocol,
8675         WINBOOL bypass) = 0;
8676 
8677     virtual HRESULT STDMETHODCALLTYPE GetForceRerunAutoProxyDetection(
8678         WINBOOL *detection) = 0;
8679 
8680     virtual HRESULT STDMETHODCALLTYPE SetForceRerunAutoProxyDetection(
8681         WINBOOL detection) = 0;
8682 
8683     virtual HRESULT STDMETHODCALLTYPE GetEnableMulticast(
8684         WINBOOL *multicast) = 0;
8685 
8686     virtual HRESULT STDMETHODCALLTYPE SetEnableMulticast(
8687         WINBOOL multicast) = 0;
8688 
8689     virtual HRESULT STDMETHODCALLTYPE GetEnableHTTP(
8690         WINBOOL *enable) = 0;
8691 
8692     virtual HRESULT STDMETHODCALLTYPE SetEnableHTTP(
8693         WINBOOL enable) = 0;
8694 
8695     virtual HRESULT STDMETHODCALLTYPE GetEnableUDP(
8696         WINBOOL *enable) = 0;
8697 
8698     virtual HRESULT STDMETHODCALLTYPE SetEnableUDP(
8699         WINBOOL enable) = 0;
8700 
8701     virtual HRESULT STDMETHODCALLTYPE GetEnableTCP(
8702         WINBOOL *enable) = 0;
8703 
8704     virtual HRESULT STDMETHODCALLTYPE SetEnableTCP(
8705         WINBOOL enable) = 0;
8706 
8707     virtual HRESULT STDMETHODCALLTYPE ResetProtocolRollover(
8708         ) = 0;
8709 
8710     virtual HRESULT STDMETHODCALLTYPE GetConnectionBandwidth(
8711         DWORD *bandwidth) = 0;
8712 
8713     virtual HRESULT STDMETHODCALLTYPE SetConnectionBandwidth(
8714         DWORD bandwidth) = 0;
8715 
8716     virtual HRESULT STDMETHODCALLTYPE GetNumProtocolsSupported(
8717         DWORD *protocols) = 0;
8718 
8719     virtual HRESULT STDMETHODCALLTYPE GetSupportedProtocolName(
8720         DWORD protocol_num,
8721         WCHAR *protocol,
8722         DWORD *size) = 0;
8723 
8724     virtual HRESULT STDMETHODCALLTYPE AddLoggingUrl(
8725         const WCHAR *url) = 0;
8726 
8727     virtual HRESULT STDMETHODCALLTYPE GetLoggingUrl(
8728         DWORD index,
8729         WCHAR *url,
8730         DWORD *size) = 0;
8731 
8732     virtual HRESULT STDMETHODCALLTYPE GetLoggingUrlCount(
8733         DWORD *count) = 0;
8734 
8735     virtual HRESULT STDMETHODCALLTYPE ResetLoggingUrlList(
8736         ) = 0;
8737 
8738 };
8739 #ifdef __CRT_UUID_DECL
8740 __CRT_UUID_DECL(IWMReaderNetworkConfig, 0x96406bec, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
8741 #endif
8742 #else
8743 typedef struct IWMReaderNetworkConfigVtbl {
8744     BEGIN_INTERFACE
8745 
8746     /*** IUnknown methods ***/
8747     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
8748         IWMReaderNetworkConfig *This,
8749         REFIID riid,
8750         void **ppvObject);
8751 
8752     ULONG (STDMETHODCALLTYPE *AddRef)(
8753         IWMReaderNetworkConfig *This);
8754 
8755     ULONG (STDMETHODCALLTYPE *Release)(
8756         IWMReaderNetworkConfig *This);
8757 
8758     /*** IWMReaderNetworkConfig methods ***/
8759     HRESULT (STDMETHODCALLTYPE *GetBufferingTime)(
8760         IWMReaderNetworkConfig *This,
8761         QWORD *buffering_time);
8762 
8763     HRESULT (STDMETHODCALLTYPE *SetBufferingTime)(
8764         IWMReaderNetworkConfig *This,
8765         QWORD buffering_time);
8766 
8767     HRESULT (STDMETHODCALLTYPE *GetUDPPortRanges)(
8768         IWMReaderNetworkConfig *This,
8769         WM_PORT_NUMBER_RANGE *array,
8770         DWORD *ranges);
8771 
8772     HRESULT (STDMETHODCALLTYPE *SetUDPPortRanges)(
8773         IWMReaderNetworkConfig *This,
8774         WM_PORT_NUMBER_RANGE *array,
8775         DWORD ranges);
8776 
8777     HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
8778         IWMReaderNetworkConfig *This,
8779         const WCHAR *protocol,
8780         WMT_PROXY_SETTINGS *proxy);
8781 
8782     HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
8783         IWMReaderNetworkConfig *This,
8784         LPCWSTR protocol,
8785         WMT_PROXY_SETTINGS proxy);
8786 
8787     HRESULT (STDMETHODCALLTYPE *GetProxyHostName)(
8788         IWMReaderNetworkConfig *This,
8789         const WCHAR *protocol,
8790         WCHAR *hostname,
8791         DWORD *size);
8792 
8793     HRESULT (STDMETHODCALLTYPE *SetProxyHostName)(
8794         IWMReaderNetworkConfig *This,
8795         const WCHAR *protocol,
8796         const WCHAR *hostname);
8797 
8798     HRESULT (STDMETHODCALLTYPE *GetProxyPort)(
8799         IWMReaderNetworkConfig *This,
8800         const WCHAR *protocol,
8801         DWORD *port);
8802 
8803     HRESULT (STDMETHODCALLTYPE *SetProxyPort)(
8804         IWMReaderNetworkConfig *This,
8805         const WCHAR *protocol,
8806         DWORD port);
8807 
8808     HRESULT (STDMETHODCALLTYPE *GetProxyExceptionList)(
8809         IWMReaderNetworkConfig *This,
8810         const WCHAR *protocol,
8811         WCHAR *exceptions,
8812         DWORD *count);
8813 
8814     HRESULT (STDMETHODCALLTYPE *SetProxyExceptionList)(
8815         IWMReaderNetworkConfig *This,
8816         const WCHAR *protocol,
8817         const WCHAR *exceptions);
8818 
8819     HRESULT (STDMETHODCALLTYPE *GetProxyBypassForLocal)(
8820         IWMReaderNetworkConfig *This,
8821         const WCHAR *protocol,
8822         WINBOOL *bypass);
8823 
8824     HRESULT (STDMETHODCALLTYPE *SetProxyBypassForLocal)(
8825         IWMReaderNetworkConfig *This,
8826         const WCHAR *protocol,
8827         WINBOOL bypass);
8828 
8829     HRESULT (STDMETHODCALLTYPE *GetForceRerunAutoProxyDetection)(
8830         IWMReaderNetworkConfig *This,
8831         WINBOOL *detection);
8832 
8833     HRESULT (STDMETHODCALLTYPE *SetForceRerunAutoProxyDetection)(
8834         IWMReaderNetworkConfig *This,
8835         WINBOOL detection);
8836 
8837     HRESULT (STDMETHODCALLTYPE *GetEnableMulticast)(
8838         IWMReaderNetworkConfig *This,
8839         WINBOOL *multicast);
8840 
8841     HRESULT (STDMETHODCALLTYPE *SetEnableMulticast)(
8842         IWMReaderNetworkConfig *This,
8843         WINBOOL multicast);
8844 
8845     HRESULT (STDMETHODCALLTYPE *GetEnableHTTP)(
8846         IWMReaderNetworkConfig *This,
8847         WINBOOL *enable);
8848 
8849     HRESULT (STDMETHODCALLTYPE *SetEnableHTTP)(
8850         IWMReaderNetworkConfig *This,
8851         WINBOOL enable);
8852 
8853     HRESULT (STDMETHODCALLTYPE *GetEnableUDP)(
8854         IWMReaderNetworkConfig *This,
8855         WINBOOL *enable);
8856 
8857     HRESULT (STDMETHODCALLTYPE *SetEnableUDP)(
8858         IWMReaderNetworkConfig *This,
8859         WINBOOL enable);
8860 
8861     HRESULT (STDMETHODCALLTYPE *GetEnableTCP)(
8862         IWMReaderNetworkConfig *This,
8863         WINBOOL *enable);
8864 
8865     HRESULT (STDMETHODCALLTYPE *SetEnableTCP)(
8866         IWMReaderNetworkConfig *This,
8867         WINBOOL enable);
8868 
8869     HRESULT (STDMETHODCALLTYPE *ResetProtocolRollover)(
8870         IWMReaderNetworkConfig *This);
8871 
8872     HRESULT (STDMETHODCALLTYPE *GetConnectionBandwidth)(
8873         IWMReaderNetworkConfig *This,
8874         DWORD *bandwidth);
8875 
8876     HRESULT (STDMETHODCALLTYPE *SetConnectionBandwidth)(
8877         IWMReaderNetworkConfig *This,
8878         DWORD bandwidth);
8879 
8880     HRESULT (STDMETHODCALLTYPE *GetNumProtocolsSupported)(
8881         IWMReaderNetworkConfig *This,
8882         DWORD *protocols);
8883 
8884     HRESULT (STDMETHODCALLTYPE *GetSupportedProtocolName)(
8885         IWMReaderNetworkConfig *This,
8886         DWORD protocol_num,
8887         WCHAR *protocol,
8888         DWORD *size);
8889 
8890     HRESULT (STDMETHODCALLTYPE *AddLoggingUrl)(
8891         IWMReaderNetworkConfig *This,
8892         const WCHAR *url);
8893 
8894     HRESULT (STDMETHODCALLTYPE *GetLoggingUrl)(
8895         IWMReaderNetworkConfig *This,
8896         DWORD index,
8897         WCHAR *url,
8898         DWORD *size);
8899 
8900     HRESULT (STDMETHODCALLTYPE *GetLoggingUrlCount)(
8901         IWMReaderNetworkConfig *This,
8902         DWORD *count);
8903 
8904     HRESULT (STDMETHODCALLTYPE *ResetLoggingUrlList)(
8905         IWMReaderNetworkConfig *This);
8906 
8907     END_INTERFACE
8908 } IWMReaderNetworkConfigVtbl;
8909 
8910 interface IWMReaderNetworkConfig {
8911     CONST_VTBL IWMReaderNetworkConfigVtbl* lpVtbl;
8912 };
8913 
8914 #ifdef COBJMACROS
8915 #ifndef WIDL_C_INLINE_WRAPPERS
8916 /*** IUnknown methods ***/
8917 #define IWMReaderNetworkConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
8918 #define IWMReaderNetworkConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
8919 #define IWMReaderNetworkConfig_Release(This) (This)->lpVtbl->Release(This)
8920 /*** IWMReaderNetworkConfig methods ***/
8921 #define IWMReaderNetworkConfig_GetBufferingTime(This,buffering_time) (This)->lpVtbl->GetBufferingTime(This,buffering_time)
8922 #define IWMReaderNetworkConfig_SetBufferingTime(This,buffering_time) (This)->lpVtbl->SetBufferingTime(This,buffering_time)
8923 #define IWMReaderNetworkConfig_GetUDPPortRanges(This,array,ranges) (This)->lpVtbl->GetUDPPortRanges(This,array,ranges)
8924 #define IWMReaderNetworkConfig_SetUDPPortRanges(This,array,ranges) (This)->lpVtbl->SetUDPPortRanges(This,array,ranges)
8925 #define IWMReaderNetworkConfig_GetProxySettings(This,protocol,proxy) (This)->lpVtbl->GetProxySettings(This,protocol,proxy)
8926 #define IWMReaderNetworkConfig_SetProxySettings(This,protocol,proxy) (This)->lpVtbl->SetProxySettings(This,protocol,proxy)
8927 #define IWMReaderNetworkConfig_GetProxyHostName(This,protocol,hostname,size) (This)->lpVtbl->GetProxyHostName(This,protocol,hostname,size)
8928 #define IWMReaderNetworkConfig_SetProxyHostName(This,protocol,hostname) (This)->lpVtbl->SetProxyHostName(This,protocol,hostname)
8929 #define IWMReaderNetworkConfig_GetProxyPort(This,protocol,port) (This)->lpVtbl->GetProxyPort(This,protocol,port)
8930 #define IWMReaderNetworkConfig_SetProxyPort(This,protocol,port) (This)->lpVtbl->SetProxyPort(This,protocol,port)
8931 #define IWMReaderNetworkConfig_GetProxyExceptionList(This,protocol,exceptions,count) (This)->lpVtbl->GetProxyExceptionList(This,protocol,exceptions,count)
8932 #define IWMReaderNetworkConfig_SetProxyExceptionList(This,protocol,exceptions) (This)->lpVtbl->SetProxyExceptionList(This,protocol,exceptions)
8933 #define IWMReaderNetworkConfig_GetProxyBypassForLocal(This,protocol,bypass) (This)->lpVtbl->GetProxyBypassForLocal(This,protocol,bypass)
8934 #define IWMReaderNetworkConfig_SetProxyBypassForLocal(This,protocol,bypass) (This)->lpVtbl->SetProxyBypassForLocal(This,protocol,bypass)
8935 #define IWMReaderNetworkConfig_GetForceRerunAutoProxyDetection(This,detection) (This)->lpVtbl->GetForceRerunAutoProxyDetection(This,detection)
8936 #define IWMReaderNetworkConfig_SetForceRerunAutoProxyDetection(This,detection) (This)->lpVtbl->SetForceRerunAutoProxyDetection(This,detection)
8937 #define IWMReaderNetworkConfig_GetEnableMulticast(This,multicast) (This)->lpVtbl->GetEnableMulticast(This,multicast)
8938 #define IWMReaderNetworkConfig_SetEnableMulticast(This,multicast) (This)->lpVtbl->SetEnableMulticast(This,multicast)
8939 #define IWMReaderNetworkConfig_GetEnableHTTP(This,enable) (This)->lpVtbl->GetEnableHTTP(This,enable)
8940 #define IWMReaderNetworkConfig_SetEnableHTTP(This,enable) (This)->lpVtbl->SetEnableHTTP(This,enable)
8941 #define IWMReaderNetworkConfig_GetEnableUDP(This,enable) (This)->lpVtbl->GetEnableUDP(This,enable)
8942 #define IWMReaderNetworkConfig_SetEnableUDP(This,enable) (This)->lpVtbl->SetEnableUDP(This,enable)
8943 #define IWMReaderNetworkConfig_GetEnableTCP(This,enable) (This)->lpVtbl->GetEnableTCP(This,enable)
8944 #define IWMReaderNetworkConfig_SetEnableTCP(This,enable) (This)->lpVtbl->SetEnableTCP(This,enable)
8945 #define IWMReaderNetworkConfig_ResetProtocolRollover(This) (This)->lpVtbl->ResetProtocolRollover(This)
8946 #define IWMReaderNetworkConfig_GetConnectionBandwidth(This,bandwidth) (This)->lpVtbl->GetConnectionBandwidth(This,bandwidth)
8947 #define IWMReaderNetworkConfig_SetConnectionBandwidth(This,bandwidth) (This)->lpVtbl->SetConnectionBandwidth(This,bandwidth)
8948 #define IWMReaderNetworkConfig_GetNumProtocolsSupported(This,protocols) (This)->lpVtbl->GetNumProtocolsSupported(This,protocols)
8949 #define IWMReaderNetworkConfig_GetSupportedProtocolName(This,protocol_num,protocol,size) (This)->lpVtbl->GetSupportedProtocolName(This,protocol_num,protocol,size)
8950 #define IWMReaderNetworkConfig_AddLoggingUrl(This,url) (This)->lpVtbl->AddLoggingUrl(This,url)
8951 #define IWMReaderNetworkConfig_GetLoggingUrl(This,index,url,size) (This)->lpVtbl->GetLoggingUrl(This,index,url,size)
8952 #define IWMReaderNetworkConfig_GetLoggingUrlCount(This,count) (This)->lpVtbl->GetLoggingUrlCount(This,count)
8953 #define IWMReaderNetworkConfig_ResetLoggingUrlList(This) (This)->lpVtbl->ResetLoggingUrlList(This)
8954 #else
8955 /*** IUnknown methods ***/
8956 static FORCEINLINE HRESULT IWMReaderNetworkConfig_QueryInterface(IWMReaderNetworkConfig* This,REFIID riid,void **ppvObject) {
8957     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
8958 }
8959 static FORCEINLINE ULONG IWMReaderNetworkConfig_AddRef(IWMReaderNetworkConfig* This) {
8960     return This->lpVtbl->AddRef(This);
8961 }
8962 static FORCEINLINE ULONG IWMReaderNetworkConfig_Release(IWMReaderNetworkConfig* This) {
8963     return This->lpVtbl->Release(This);
8964 }
8965 /*** IWMReaderNetworkConfig methods ***/
8966 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetBufferingTime(IWMReaderNetworkConfig* This,QWORD *buffering_time) {
8967     return This->lpVtbl->GetBufferingTime(This,buffering_time);
8968 }
8969 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetBufferingTime(IWMReaderNetworkConfig* This,QWORD buffering_time) {
8970     return This->lpVtbl->SetBufferingTime(This,buffering_time);
8971 }
8972 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetUDPPortRanges(IWMReaderNetworkConfig* This,WM_PORT_NUMBER_RANGE *array,DWORD *ranges) {
8973     return This->lpVtbl->GetUDPPortRanges(This,array,ranges);
8974 }
8975 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetUDPPortRanges(IWMReaderNetworkConfig* This,WM_PORT_NUMBER_RANGE *array,DWORD ranges) {
8976     return This->lpVtbl->SetUDPPortRanges(This,array,ranges);
8977 }
8978 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetProxySettings(IWMReaderNetworkConfig* This,const WCHAR *protocol,WMT_PROXY_SETTINGS *proxy) {
8979     return This->lpVtbl->GetProxySettings(This,protocol,proxy);
8980 }
8981 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetProxySettings(IWMReaderNetworkConfig* This,LPCWSTR protocol,WMT_PROXY_SETTINGS proxy) {
8982     return This->lpVtbl->SetProxySettings(This,protocol,proxy);
8983 }
8984 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetProxyHostName(IWMReaderNetworkConfig* This,const WCHAR *protocol,WCHAR *hostname,DWORD *size) {
8985     return This->lpVtbl->GetProxyHostName(This,protocol,hostname,size);
8986 }
8987 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetProxyHostName(IWMReaderNetworkConfig* This,const WCHAR *protocol,const WCHAR *hostname) {
8988     return This->lpVtbl->SetProxyHostName(This,protocol,hostname);
8989 }
8990 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetProxyPort(IWMReaderNetworkConfig* This,const WCHAR *protocol,DWORD *port) {
8991     return This->lpVtbl->GetProxyPort(This,protocol,port);
8992 }
8993 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetProxyPort(IWMReaderNetworkConfig* This,const WCHAR *protocol,DWORD port) {
8994     return This->lpVtbl->SetProxyPort(This,protocol,port);
8995 }
8996 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetProxyExceptionList(IWMReaderNetworkConfig* This,const WCHAR *protocol,WCHAR *exceptions,DWORD *count) {
8997     return This->lpVtbl->GetProxyExceptionList(This,protocol,exceptions,count);
8998 }
8999 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetProxyExceptionList(IWMReaderNetworkConfig* This,const WCHAR *protocol,const WCHAR *exceptions) {
9000     return This->lpVtbl->SetProxyExceptionList(This,protocol,exceptions);
9001 }
9002 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetProxyBypassForLocal(IWMReaderNetworkConfig* This,const WCHAR *protocol,WINBOOL *bypass) {
9003     return This->lpVtbl->GetProxyBypassForLocal(This,protocol,bypass);
9004 }
9005 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetProxyBypassForLocal(IWMReaderNetworkConfig* This,const WCHAR *protocol,WINBOOL bypass) {
9006     return This->lpVtbl->SetProxyBypassForLocal(This,protocol,bypass);
9007 }
9008 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetForceRerunAutoProxyDetection(IWMReaderNetworkConfig* This,WINBOOL *detection) {
9009     return This->lpVtbl->GetForceRerunAutoProxyDetection(This,detection);
9010 }
9011 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetForceRerunAutoProxyDetection(IWMReaderNetworkConfig* This,WINBOOL detection) {
9012     return This->lpVtbl->SetForceRerunAutoProxyDetection(This,detection);
9013 }
9014 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetEnableMulticast(IWMReaderNetworkConfig* This,WINBOOL *multicast) {
9015     return This->lpVtbl->GetEnableMulticast(This,multicast);
9016 }
9017 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetEnableMulticast(IWMReaderNetworkConfig* This,WINBOOL multicast) {
9018     return This->lpVtbl->SetEnableMulticast(This,multicast);
9019 }
9020 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetEnableHTTP(IWMReaderNetworkConfig* This,WINBOOL *enable) {
9021     return This->lpVtbl->GetEnableHTTP(This,enable);
9022 }
9023 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetEnableHTTP(IWMReaderNetworkConfig* This,WINBOOL enable) {
9024     return This->lpVtbl->SetEnableHTTP(This,enable);
9025 }
9026 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetEnableUDP(IWMReaderNetworkConfig* This,WINBOOL *enable) {
9027     return This->lpVtbl->GetEnableUDP(This,enable);
9028 }
9029 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetEnableUDP(IWMReaderNetworkConfig* This,WINBOOL enable) {
9030     return This->lpVtbl->SetEnableUDP(This,enable);
9031 }
9032 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetEnableTCP(IWMReaderNetworkConfig* This,WINBOOL *enable) {
9033     return This->lpVtbl->GetEnableTCP(This,enable);
9034 }
9035 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetEnableTCP(IWMReaderNetworkConfig* This,WINBOOL enable) {
9036     return This->lpVtbl->SetEnableTCP(This,enable);
9037 }
9038 static FORCEINLINE HRESULT IWMReaderNetworkConfig_ResetProtocolRollover(IWMReaderNetworkConfig* This) {
9039     return This->lpVtbl->ResetProtocolRollover(This);
9040 }
9041 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetConnectionBandwidth(IWMReaderNetworkConfig* This,DWORD *bandwidth) {
9042     return This->lpVtbl->GetConnectionBandwidth(This,bandwidth);
9043 }
9044 static FORCEINLINE HRESULT IWMReaderNetworkConfig_SetConnectionBandwidth(IWMReaderNetworkConfig* This,DWORD bandwidth) {
9045     return This->lpVtbl->SetConnectionBandwidth(This,bandwidth);
9046 }
9047 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetNumProtocolsSupported(IWMReaderNetworkConfig* This,DWORD *protocols) {
9048     return This->lpVtbl->GetNumProtocolsSupported(This,protocols);
9049 }
9050 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetSupportedProtocolName(IWMReaderNetworkConfig* This,DWORD protocol_num,WCHAR *protocol,DWORD *size) {
9051     return This->lpVtbl->GetSupportedProtocolName(This,protocol_num,protocol,size);
9052 }
9053 static FORCEINLINE HRESULT IWMReaderNetworkConfig_AddLoggingUrl(IWMReaderNetworkConfig* This,const WCHAR *url) {
9054     return This->lpVtbl->AddLoggingUrl(This,url);
9055 }
9056 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetLoggingUrl(IWMReaderNetworkConfig* This,DWORD index,WCHAR *url,DWORD *size) {
9057     return This->lpVtbl->GetLoggingUrl(This,index,url,size);
9058 }
9059 static FORCEINLINE HRESULT IWMReaderNetworkConfig_GetLoggingUrlCount(IWMReaderNetworkConfig* This,DWORD *count) {
9060     return This->lpVtbl->GetLoggingUrlCount(This,count);
9061 }
9062 static FORCEINLINE HRESULT IWMReaderNetworkConfig_ResetLoggingUrlList(IWMReaderNetworkConfig* This) {
9063     return This->lpVtbl->ResetLoggingUrlList(This);
9064 }
9065 #endif
9066 #endif
9067 
9068 #endif
9069 
9070 
9071 #endif  /* __IWMReaderNetworkConfig_INTERFACE_DEFINED__ */
9072 
9073 /*****************************************************************************
9074  * IWMReaderNetworkConfig2 interface
9075  */
9076 #ifndef __IWMReaderNetworkConfig2_INTERFACE_DEFINED__
9077 #define __IWMReaderNetworkConfig2_INTERFACE_DEFINED__
9078 
9079 DEFINE_GUID(IID_IWMReaderNetworkConfig2, 0xd979a853, 0x042b, 0x4050, 0x83,0x87, 0xc9,0x39,0xdb,0x22,0x01,0x3f);
9080 #if defined(__cplusplus) && !defined(CINTERFACE)
9081 MIDL_INTERFACE("d979a853-042b-4050-8387-c939db22013f")
9082 IWMReaderNetworkConfig2 : public IWMReaderNetworkConfig
9083 {
9084     virtual HRESULT STDMETHODCALLTYPE GetEnableContentCaching(
9085         WINBOOL *enable) = 0;
9086 
9087     virtual HRESULT STDMETHODCALLTYPE SetEnableContentCaching(
9088         WINBOOL enable) = 0;
9089 
9090     virtual HRESULT STDMETHODCALLTYPE GetEnableFastCache(
9091         WINBOOL *enable) = 0;
9092 
9093     virtual HRESULT STDMETHODCALLTYPE SetEnableFastCache(
9094         WINBOOL enable) = 0;
9095 
9096     virtual HRESULT STDMETHODCALLTYPE GetAcceleratedStreamingDuration(
9097         QWORD *duration) = 0;
9098 
9099     virtual HRESULT STDMETHODCALLTYPE SetAcceleratedStreamingDuration(
9100         QWORD duration) = 0;
9101 
9102     virtual HRESULT STDMETHODCALLTYPE GetAutoReconnectLimit(
9103         DWORD *limit) = 0;
9104 
9105     virtual HRESULT STDMETHODCALLTYPE SetAutoReconnectLimit(
9106         DWORD limit) = 0;
9107 
9108     virtual HRESULT STDMETHODCALLTYPE GetEnableResends(
9109         WINBOOL *enable) = 0;
9110 
9111     virtual HRESULT STDMETHODCALLTYPE SetEnableResends(
9112         WINBOOL enable) = 0;
9113 
9114     virtual HRESULT STDMETHODCALLTYPE GetEnableThinning(
9115         WINBOOL *enable) = 0;
9116 
9117     virtual HRESULT STDMETHODCALLTYPE SetEnableThinning(
9118         WINBOOL enable) = 0;
9119 
9120     virtual HRESULT STDMETHODCALLTYPE GetMaxNetPacketSize(
9121         DWORD *packet_size) = 0;
9122 
9123 };
9124 #ifdef __CRT_UUID_DECL
9125 __CRT_UUID_DECL(IWMReaderNetworkConfig2, 0xd979a853, 0x042b, 0x4050, 0x83,0x87, 0xc9,0x39,0xdb,0x22,0x01,0x3f)
9126 #endif
9127 #else
9128 typedef struct IWMReaderNetworkConfig2Vtbl {
9129     BEGIN_INTERFACE
9130 
9131     /*** IUnknown methods ***/
9132     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9133         IWMReaderNetworkConfig2 *This,
9134         REFIID riid,
9135         void **ppvObject);
9136 
9137     ULONG (STDMETHODCALLTYPE *AddRef)(
9138         IWMReaderNetworkConfig2 *This);
9139 
9140     ULONG (STDMETHODCALLTYPE *Release)(
9141         IWMReaderNetworkConfig2 *This);
9142 
9143     /*** IWMReaderNetworkConfig methods ***/
9144     HRESULT (STDMETHODCALLTYPE *GetBufferingTime)(
9145         IWMReaderNetworkConfig2 *This,
9146         QWORD *buffering_time);
9147 
9148     HRESULT (STDMETHODCALLTYPE *SetBufferingTime)(
9149         IWMReaderNetworkConfig2 *This,
9150         QWORD buffering_time);
9151 
9152     HRESULT (STDMETHODCALLTYPE *GetUDPPortRanges)(
9153         IWMReaderNetworkConfig2 *This,
9154         WM_PORT_NUMBER_RANGE *array,
9155         DWORD *ranges);
9156 
9157     HRESULT (STDMETHODCALLTYPE *SetUDPPortRanges)(
9158         IWMReaderNetworkConfig2 *This,
9159         WM_PORT_NUMBER_RANGE *array,
9160         DWORD ranges);
9161 
9162     HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
9163         IWMReaderNetworkConfig2 *This,
9164         const WCHAR *protocol,
9165         WMT_PROXY_SETTINGS *proxy);
9166 
9167     HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
9168         IWMReaderNetworkConfig2 *This,
9169         LPCWSTR protocol,
9170         WMT_PROXY_SETTINGS proxy);
9171 
9172     HRESULT (STDMETHODCALLTYPE *GetProxyHostName)(
9173         IWMReaderNetworkConfig2 *This,
9174         const WCHAR *protocol,
9175         WCHAR *hostname,
9176         DWORD *size);
9177 
9178     HRESULT (STDMETHODCALLTYPE *SetProxyHostName)(
9179         IWMReaderNetworkConfig2 *This,
9180         const WCHAR *protocol,
9181         const WCHAR *hostname);
9182 
9183     HRESULT (STDMETHODCALLTYPE *GetProxyPort)(
9184         IWMReaderNetworkConfig2 *This,
9185         const WCHAR *protocol,
9186         DWORD *port);
9187 
9188     HRESULT (STDMETHODCALLTYPE *SetProxyPort)(
9189         IWMReaderNetworkConfig2 *This,
9190         const WCHAR *protocol,
9191         DWORD port);
9192 
9193     HRESULT (STDMETHODCALLTYPE *GetProxyExceptionList)(
9194         IWMReaderNetworkConfig2 *This,
9195         const WCHAR *protocol,
9196         WCHAR *exceptions,
9197         DWORD *count);
9198 
9199     HRESULT (STDMETHODCALLTYPE *SetProxyExceptionList)(
9200         IWMReaderNetworkConfig2 *This,
9201         const WCHAR *protocol,
9202         const WCHAR *exceptions);
9203 
9204     HRESULT (STDMETHODCALLTYPE *GetProxyBypassForLocal)(
9205         IWMReaderNetworkConfig2 *This,
9206         const WCHAR *protocol,
9207         WINBOOL *bypass);
9208 
9209     HRESULT (STDMETHODCALLTYPE *SetProxyBypassForLocal)(
9210         IWMReaderNetworkConfig2 *This,
9211         const WCHAR *protocol,
9212         WINBOOL bypass);
9213 
9214     HRESULT (STDMETHODCALLTYPE *GetForceRerunAutoProxyDetection)(
9215         IWMReaderNetworkConfig2 *This,
9216         WINBOOL *detection);
9217 
9218     HRESULT (STDMETHODCALLTYPE *SetForceRerunAutoProxyDetection)(
9219         IWMReaderNetworkConfig2 *This,
9220         WINBOOL detection);
9221 
9222     HRESULT (STDMETHODCALLTYPE *GetEnableMulticast)(
9223         IWMReaderNetworkConfig2 *This,
9224         WINBOOL *multicast);
9225 
9226     HRESULT (STDMETHODCALLTYPE *SetEnableMulticast)(
9227         IWMReaderNetworkConfig2 *This,
9228         WINBOOL multicast);
9229 
9230     HRESULT (STDMETHODCALLTYPE *GetEnableHTTP)(
9231         IWMReaderNetworkConfig2 *This,
9232         WINBOOL *enable);
9233 
9234     HRESULT (STDMETHODCALLTYPE *SetEnableHTTP)(
9235         IWMReaderNetworkConfig2 *This,
9236         WINBOOL enable);
9237 
9238     HRESULT (STDMETHODCALLTYPE *GetEnableUDP)(
9239         IWMReaderNetworkConfig2 *This,
9240         WINBOOL *enable);
9241 
9242     HRESULT (STDMETHODCALLTYPE *SetEnableUDP)(
9243         IWMReaderNetworkConfig2 *This,
9244         WINBOOL enable);
9245 
9246     HRESULT (STDMETHODCALLTYPE *GetEnableTCP)(
9247         IWMReaderNetworkConfig2 *This,
9248         WINBOOL *enable);
9249 
9250     HRESULT (STDMETHODCALLTYPE *SetEnableTCP)(
9251         IWMReaderNetworkConfig2 *This,
9252         WINBOOL enable);
9253 
9254     HRESULT (STDMETHODCALLTYPE *ResetProtocolRollover)(
9255         IWMReaderNetworkConfig2 *This);
9256 
9257     HRESULT (STDMETHODCALLTYPE *GetConnectionBandwidth)(
9258         IWMReaderNetworkConfig2 *This,
9259         DWORD *bandwidth);
9260 
9261     HRESULT (STDMETHODCALLTYPE *SetConnectionBandwidth)(
9262         IWMReaderNetworkConfig2 *This,
9263         DWORD bandwidth);
9264 
9265     HRESULT (STDMETHODCALLTYPE *GetNumProtocolsSupported)(
9266         IWMReaderNetworkConfig2 *This,
9267         DWORD *protocols);
9268 
9269     HRESULT (STDMETHODCALLTYPE *GetSupportedProtocolName)(
9270         IWMReaderNetworkConfig2 *This,
9271         DWORD protocol_num,
9272         WCHAR *protocol,
9273         DWORD *size);
9274 
9275     HRESULT (STDMETHODCALLTYPE *AddLoggingUrl)(
9276         IWMReaderNetworkConfig2 *This,
9277         const WCHAR *url);
9278 
9279     HRESULT (STDMETHODCALLTYPE *GetLoggingUrl)(
9280         IWMReaderNetworkConfig2 *This,
9281         DWORD index,
9282         WCHAR *url,
9283         DWORD *size);
9284 
9285     HRESULT (STDMETHODCALLTYPE *GetLoggingUrlCount)(
9286         IWMReaderNetworkConfig2 *This,
9287         DWORD *count);
9288 
9289     HRESULT (STDMETHODCALLTYPE *ResetLoggingUrlList)(
9290         IWMReaderNetworkConfig2 *This);
9291 
9292     /*** IWMReaderNetworkConfig2 methods ***/
9293     HRESULT (STDMETHODCALLTYPE *GetEnableContentCaching)(
9294         IWMReaderNetworkConfig2 *This,
9295         WINBOOL *enable);
9296 
9297     HRESULT (STDMETHODCALLTYPE *SetEnableContentCaching)(
9298         IWMReaderNetworkConfig2 *This,
9299         WINBOOL enable);
9300 
9301     HRESULT (STDMETHODCALLTYPE *GetEnableFastCache)(
9302         IWMReaderNetworkConfig2 *This,
9303         WINBOOL *enable);
9304 
9305     HRESULT (STDMETHODCALLTYPE *SetEnableFastCache)(
9306         IWMReaderNetworkConfig2 *This,
9307         WINBOOL enable);
9308 
9309     HRESULT (STDMETHODCALLTYPE *GetAcceleratedStreamingDuration)(
9310         IWMReaderNetworkConfig2 *This,
9311         QWORD *duration);
9312 
9313     HRESULT (STDMETHODCALLTYPE *SetAcceleratedStreamingDuration)(
9314         IWMReaderNetworkConfig2 *This,
9315         QWORD duration);
9316 
9317     HRESULT (STDMETHODCALLTYPE *GetAutoReconnectLimit)(
9318         IWMReaderNetworkConfig2 *This,
9319         DWORD *limit);
9320 
9321     HRESULT (STDMETHODCALLTYPE *SetAutoReconnectLimit)(
9322         IWMReaderNetworkConfig2 *This,
9323         DWORD limit);
9324 
9325     HRESULT (STDMETHODCALLTYPE *GetEnableResends)(
9326         IWMReaderNetworkConfig2 *This,
9327         WINBOOL *enable);
9328 
9329     HRESULT (STDMETHODCALLTYPE *SetEnableResends)(
9330         IWMReaderNetworkConfig2 *This,
9331         WINBOOL enable);
9332 
9333     HRESULT (STDMETHODCALLTYPE *GetEnableThinning)(
9334         IWMReaderNetworkConfig2 *This,
9335         WINBOOL *enable);
9336 
9337     HRESULT (STDMETHODCALLTYPE *SetEnableThinning)(
9338         IWMReaderNetworkConfig2 *This,
9339         WINBOOL enable);
9340 
9341     HRESULT (STDMETHODCALLTYPE *GetMaxNetPacketSize)(
9342         IWMReaderNetworkConfig2 *This,
9343         DWORD *packet_size);
9344 
9345     END_INTERFACE
9346 } IWMReaderNetworkConfig2Vtbl;
9347 
9348 interface IWMReaderNetworkConfig2 {
9349     CONST_VTBL IWMReaderNetworkConfig2Vtbl* lpVtbl;
9350 };
9351 
9352 #ifdef COBJMACROS
9353 #ifndef WIDL_C_INLINE_WRAPPERS
9354 /*** IUnknown methods ***/
9355 #define IWMReaderNetworkConfig2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9356 #define IWMReaderNetworkConfig2_AddRef(This) (This)->lpVtbl->AddRef(This)
9357 #define IWMReaderNetworkConfig2_Release(This) (This)->lpVtbl->Release(This)
9358 /*** IWMReaderNetworkConfig methods ***/
9359 #define IWMReaderNetworkConfig2_GetBufferingTime(This,buffering_time) (This)->lpVtbl->GetBufferingTime(This,buffering_time)
9360 #define IWMReaderNetworkConfig2_SetBufferingTime(This,buffering_time) (This)->lpVtbl->SetBufferingTime(This,buffering_time)
9361 #define IWMReaderNetworkConfig2_GetUDPPortRanges(This,array,ranges) (This)->lpVtbl->GetUDPPortRanges(This,array,ranges)
9362 #define IWMReaderNetworkConfig2_SetUDPPortRanges(This,array,ranges) (This)->lpVtbl->SetUDPPortRanges(This,array,ranges)
9363 #define IWMReaderNetworkConfig2_GetProxySettings(This,protocol,proxy) (This)->lpVtbl->GetProxySettings(This,protocol,proxy)
9364 #define IWMReaderNetworkConfig2_SetProxySettings(This,protocol,proxy) (This)->lpVtbl->SetProxySettings(This,protocol,proxy)
9365 #define IWMReaderNetworkConfig2_GetProxyHostName(This,protocol,hostname,size) (This)->lpVtbl->GetProxyHostName(This,protocol,hostname,size)
9366 #define IWMReaderNetworkConfig2_SetProxyHostName(This,protocol,hostname) (This)->lpVtbl->SetProxyHostName(This,protocol,hostname)
9367 #define IWMReaderNetworkConfig2_GetProxyPort(This,protocol,port) (This)->lpVtbl->GetProxyPort(This,protocol,port)
9368 #define IWMReaderNetworkConfig2_SetProxyPort(This,protocol,port) (This)->lpVtbl->SetProxyPort(This,protocol,port)
9369 #define IWMReaderNetworkConfig2_GetProxyExceptionList(This,protocol,exceptions,count) (This)->lpVtbl->GetProxyExceptionList(This,protocol,exceptions,count)
9370 #define IWMReaderNetworkConfig2_SetProxyExceptionList(This,protocol,exceptions) (This)->lpVtbl->SetProxyExceptionList(This,protocol,exceptions)
9371 #define IWMReaderNetworkConfig2_GetProxyBypassForLocal(This,protocol,bypass) (This)->lpVtbl->GetProxyBypassForLocal(This,protocol,bypass)
9372 #define IWMReaderNetworkConfig2_SetProxyBypassForLocal(This,protocol,bypass) (This)->lpVtbl->SetProxyBypassForLocal(This,protocol,bypass)
9373 #define IWMReaderNetworkConfig2_GetForceRerunAutoProxyDetection(This,detection) (This)->lpVtbl->GetForceRerunAutoProxyDetection(This,detection)
9374 #define IWMReaderNetworkConfig2_SetForceRerunAutoProxyDetection(This,detection) (This)->lpVtbl->SetForceRerunAutoProxyDetection(This,detection)
9375 #define IWMReaderNetworkConfig2_GetEnableMulticast(This,multicast) (This)->lpVtbl->GetEnableMulticast(This,multicast)
9376 #define IWMReaderNetworkConfig2_SetEnableMulticast(This,multicast) (This)->lpVtbl->SetEnableMulticast(This,multicast)
9377 #define IWMReaderNetworkConfig2_GetEnableHTTP(This,enable) (This)->lpVtbl->GetEnableHTTP(This,enable)
9378 #define IWMReaderNetworkConfig2_SetEnableHTTP(This,enable) (This)->lpVtbl->SetEnableHTTP(This,enable)
9379 #define IWMReaderNetworkConfig2_GetEnableUDP(This,enable) (This)->lpVtbl->GetEnableUDP(This,enable)
9380 #define IWMReaderNetworkConfig2_SetEnableUDP(This,enable) (This)->lpVtbl->SetEnableUDP(This,enable)
9381 #define IWMReaderNetworkConfig2_GetEnableTCP(This,enable) (This)->lpVtbl->GetEnableTCP(This,enable)
9382 #define IWMReaderNetworkConfig2_SetEnableTCP(This,enable) (This)->lpVtbl->SetEnableTCP(This,enable)
9383 #define IWMReaderNetworkConfig2_ResetProtocolRollover(This) (This)->lpVtbl->ResetProtocolRollover(This)
9384 #define IWMReaderNetworkConfig2_GetConnectionBandwidth(This,bandwidth) (This)->lpVtbl->GetConnectionBandwidth(This,bandwidth)
9385 #define IWMReaderNetworkConfig2_SetConnectionBandwidth(This,bandwidth) (This)->lpVtbl->SetConnectionBandwidth(This,bandwidth)
9386 #define IWMReaderNetworkConfig2_GetNumProtocolsSupported(This,protocols) (This)->lpVtbl->GetNumProtocolsSupported(This,protocols)
9387 #define IWMReaderNetworkConfig2_GetSupportedProtocolName(This,protocol_num,protocol,size) (This)->lpVtbl->GetSupportedProtocolName(This,protocol_num,protocol,size)
9388 #define IWMReaderNetworkConfig2_AddLoggingUrl(This,url) (This)->lpVtbl->AddLoggingUrl(This,url)
9389 #define IWMReaderNetworkConfig2_GetLoggingUrl(This,index,url,size) (This)->lpVtbl->GetLoggingUrl(This,index,url,size)
9390 #define IWMReaderNetworkConfig2_GetLoggingUrlCount(This,count) (This)->lpVtbl->GetLoggingUrlCount(This,count)
9391 #define IWMReaderNetworkConfig2_ResetLoggingUrlList(This) (This)->lpVtbl->ResetLoggingUrlList(This)
9392 /*** IWMReaderNetworkConfig2 methods ***/
9393 #define IWMReaderNetworkConfig2_GetEnableContentCaching(This,enable) (This)->lpVtbl->GetEnableContentCaching(This,enable)
9394 #define IWMReaderNetworkConfig2_SetEnableContentCaching(This,enable) (This)->lpVtbl->SetEnableContentCaching(This,enable)
9395 #define IWMReaderNetworkConfig2_GetEnableFastCache(This,enable) (This)->lpVtbl->GetEnableFastCache(This,enable)
9396 #define IWMReaderNetworkConfig2_SetEnableFastCache(This,enable) (This)->lpVtbl->SetEnableFastCache(This,enable)
9397 #define IWMReaderNetworkConfig2_GetAcceleratedStreamingDuration(This,duration) (This)->lpVtbl->GetAcceleratedStreamingDuration(This,duration)
9398 #define IWMReaderNetworkConfig2_SetAcceleratedStreamingDuration(This,duration) (This)->lpVtbl->SetAcceleratedStreamingDuration(This,duration)
9399 #define IWMReaderNetworkConfig2_GetAutoReconnectLimit(This,limit) (This)->lpVtbl->GetAutoReconnectLimit(This,limit)
9400 #define IWMReaderNetworkConfig2_SetAutoReconnectLimit(This,limit) (This)->lpVtbl->SetAutoReconnectLimit(This,limit)
9401 #define IWMReaderNetworkConfig2_GetEnableResends(This,enable) (This)->lpVtbl->GetEnableResends(This,enable)
9402 #define IWMReaderNetworkConfig2_SetEnableResends(This,enable) (This)->lpVtbl->SetEnableResends(This,enable)
9403 #define IWMReaderNetworkConfig2_GetEnableThinning(This,enable) (This)->lpVtbl->GetEnableThinning(This,enable)
9404 #define IWMReaderNetworkConfig2_SetEnableThinning(This,enable) (This)->lpVtbl->SetEnableThinning(This,enable)
9405 #define IWMReaderNetworkConfig2_GetMaxNetPacketSize(This,packet_size) (This)->lpVtbl->GetMaxNetPacketSize(This,packet_size)
9406 #else
9407 /*** IUnknown methods ***/
9408 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_QueryInterface(IWMReaderNetworkConfig2* This,REFIID riid,void **ppvObject) {
9409     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9410 }
9411 static FORCEINLINE ULONG IWMReaderNetworkConfig2_AddRef(IWMReaderNetworkConfig2* This) {
9412     return This->lpVtbl->AddRef(This);
9413 }
9414 static FORCEINLINE ULONG IWMReaderNetworkConfig2_Release(IWMReaderNetworkConfig2* This) {
9415     return This->lpVtbl->Release(This);
9416 }
9417 /*** IWMReaderNetworkConfig methods ***/
9418 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetBufferingTime(IWMReaderNetworkConfig2* This,QWORD *buffering_time) {
9419     return This->lpVtbl->GetBufferingTime(This,buffering_time);
9420 }
9421 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetBufferingTime(IWMReaderNetworkConfig2* This,QWORD buffering_time) {
9422     return This->lpVtbl->SetBufferingTime(This,buffering_time);
9423 }
9424 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetUDPPortRanges(IWMReaderNetworkConfig2* This,WM_PORT_NUMBER_RANGE *array,DWORD *ranges) {
9425     return This->lpVtbl->GetUDPPortRanges(This,array,ranges);
9426 }
9427 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetUDPPortRanges(IWMReaderNetworkConfig2* This,WM_PORT_NUMBER_RANGE *array,DWORD ranges) {
9428     return This->lpVtbl->SetUDPPortRanges(This,array,ranges);
9429 }
9430 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetProxySettings(IWMReaderNetworkConfig2* This,const WCHAR *protocol,WMT_PROXY_SETTINGS *proxy) {
9431     return This->lpVtbl->GetProxySettings(This,protocol,proxy);
9432 }
9433 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetProxySettings(IWMReaderNetworkConfig2* This,LPCWSTR protocol,WMT_PROXY_SETTINGS proxy) {
9434     return This->lpVtbl->SetProxySettings(This,protocol,proxy);
9435 }
9436 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetProxyHostName(IWMReaderNetworkConfig2* This,const WCHAR *protocol,WCHAR *hostname,DWORD *size) {
9437     return This->lpVtbl->GetProxyHostName(This,protocol,hostname,size);
9438 }
9439 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetProxyHostName(IWMReaderNetworkConfig2* This,const WCHAR *protocol,const WCHAR *hostname) {
9440     return This->lpVtbl->SetProxyHostName(This,protocol,hostname);
9441 }
9442 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetProxyPort(IWMReaderNetworkConfig2* This,const WCHAR *protocol,DWORD *port) {
9443     return This->lpVtbl->GetProxyPort(This,protocol,port);
9444 }
9445 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetProxyPort(IWMReaderNetworkConfig2* This,const WCHAR *protocol,DWORD port) {
9446     return This->lpVtbl->SetProxyPort(This,protocol,port);
9447 }
9448 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetProxyExceptionList(IWMReaderNetworkConfig2* This,const WCHAR *protocol,WCHAR *exceptions,DWORD *count) {
9449     return This->lpVtbl->GetProxyExceptionList(This,protocol,exceptions,count);
9450 }
9451 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetProxyExceptionList(IWMReaderNetworkConfig2* This,const WCHAR *protocol,const WCHAR *exceptions) {
9452     return This->lpVtbl->SetProxyExceptionList(This,protocol,exceptions);
9453 }
9454 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetProxyBypassForLocal(IWMReaderNetworkConfig2* This,const WCHAR *protocol,WINBOOL *bypass) {
9455     return This->lpVtbl->GetProxyBypassForLocal(This,protocol,bypass);
9456 }
9457 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetProxyBypassForLocal(IWMReaderNetworkConfig2* This,const WCHAR *protocol,WINBOOL bypass) {
9458     return This->lpVtbl->SetProxyBypassForLocal(This,protocol,bypass);
9459 }
9460 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetForceRerunAutoProxyDetection(IWMReaderNetworkConfig2* This,WINBOOL *detection) {
9461     return This->lpVtbl->GetForceRerunAutoProxyDetection(This,detection);
9462 }
9463 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetForceRerunAutoProxyDetection(IWMReaderNetworkConfig2* This,WINBOOL detection) {
9464     return This->lpVtbl->SetForceRerunAutoProxyDetection(This,detection);
9465 }
9466 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableMulticast(IWMReaderNetworkConfig2* This,WINBOOL *multicast) {
9467     return This->lpVtbl->GetEnableMulticast(This,multicast);
9468 }
9469 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableMulticast(IWMReaderNetworkConfig2* This,WINBOOL multicast) {
9470     return This->lpVtbl->SetEnableMulticast(This,multicast);
9471 }
9472 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableHTTP(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9473     return This->lpVtbl->GetEnableHTTP(This,enable);
9474 }
9475 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableHTTP(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9476     return This->lpVtbl->SetEnableHTTP(This,enable);
9477 }
9478 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableUDP(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9479     return This->lpVtbl->GetEnableUDP(This,enable);
9480 }
9481 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableUDP(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9482     return This->lpVtbl->SetEnableUDP(This,enable);
9483 }
9484 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableTCP(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9485     return This->lpVtbl->GetEnableTCP(This,enable);
9486 }
9487 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableTCP(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9488     return This->lpVtbl->SetEnableTCP(This,enable);
9489 }
9490 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_ResetProtocolRollover(IWMReaderNetworkConfig2* This) {
9491     return This->lpVtbl->ResetProtocolRollover(This);
9492 }
9493 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetConnectionBandwidth(IWMReaderNetworkConfig2* This,DWORD *bandwidth) {
9494     return This->lpVtbl->GetConnectionBandwidth(This,bandwidth);
9495 }
9496 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetConnectionBandwidth(IWMReaderNetworkConfig2* This,DWORD bandwidth) {
9497     return This->lpVtbl->SetConnectionBandwidth(This,bandwidth);
9498 }
9499 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetNumProtocolsSupported(IWMReaderNetworkConfig2* This,DWORD *protocols) {
9500     return This->lpVtbl->GetNumProtocolsSupported(This,protocols);
9501 }
9502 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetSupportedProtocolName(IWMReaderNetworkConfig2* This,DWORD protocol_num,WCHAR *protocol,DWORD *size) {
9503     return This->lpVtbl->GetSupportedProtocolName(This,protocol_num,protocol,size);
9504 }
9505 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_AddLoggingUrl(IWMReaderNetworkConfig2* This,const WCHAR *url) {
9506     return This->lpVtbl->AddLoggingUrl(This,url);
9507 }
9508 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetLoggingUrl(IWMReaderNetworkConfig2* This,DWORD index,WCHAR *url,DWORD *size) {
9509     return This->lpVtbl->GetLoggingUrl(This,index,url,size);
9510 }
9511 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetLoggingUrlCount(IWMReaderNetworkConfig2* This,DWORD *count) {
9512     return This->lpVtbl->GetLoggingUrlCount(This,count);
9513 }
9514 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_ResetLoggingUrlList(IWMReaderNetworkConfig2* This) {
9515     return This->lpVtbl->ResetLoggingUrlList(This);
9516 }
9517 /*** IWMReaderNetworkConfig2 methods ***/
9518 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableContentCaching(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9519     return This->lpVtbl->GetEnableContentCaching(This,enable);
9520 }
9521 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableContentCaching(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9522     return This->lpVtbl->SetEnableContentCaching(This,enable);
9523 }
9524 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableFastCache(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9525     return This->lpVtbl->GetEnableFastCache(This,enable);
9526 }
9527 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableFastCache(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9528     return This->lpVtbl->SetEnableFastCache(This,enable);
9529 }
9530 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetAcceleratedStreamingDuration(IWMReaderNetworkConfig2* This,QWORD *duration) {
9531     return This->lpVtbl->GetAcceleratedStreamingDuration(This,duration);
9532 }
9533 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetAcceleratedStreamingDuration(IWMReaderNetworkConfig2* This,QWORD duration) {
9534     return This->lpVtbl->SetAcceleratedStreamingDuration(This,duration);
9535 }
9536 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetAutoReconnectLimit(IWMReaderNetworkConfig2* This,DWORD *limit) {
9537     return This->lpVtbl->GetAutoReconnectLimit(This,limit);
9538 }
9539 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetAutoReconnectLimit(IWMReaderNetworkConfig2* This,DWORD limit) {
9540     return This->lpVtbl->SetAutoReconnectLimit(This,limit);
9541 }
9542 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableResends(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9543     return This->lpVtbl->GetEnableResends(This,enable);
9544 }
9545 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableResends(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9546     return This->lpVtbl->SetEnableResends(This,enable);
9547 }
9548 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetEnableThinning(IWMReaderNetworkConfig2* This,WINBOOL *enable) {
9549     return This->lpVtbl->GetEnableThinning(This,enable);
9550 }
9551 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_SetEnableThinning(IWMReaderNetworkConfig2* This,WINBOOL enable) {
9552     return This->lpVtbl->SetEnableThinning(This,enable);
9553 }
9554 static FORCEINLINE HRESULT IWMReaderNetworkConfig2_GetMaxNetPacketSize(IWMReaderNetworkConfig2* This,DWORD *packet_size) {
9555     return This->lpVtbl->GetMaxNetPacketSize(This,packet_size);
9556 }
9557 #endif
9558 #endif
9559 
9560 #endif
9561 
9562 
9563 #endif  /* __IWMReaderNetworkConfig2_INTERFACE_DEFINED__ */
9564 
9565 /*****************************************************************************
9566  * IWMReaderStreamClock interface
9567  */
9568 #ifndef __IWMReaderStreamClock_INTERFACE_DEFINED__
9569 #define __IWMReaderStreamClock_INTERFACE_DEFINED__
9570 
9571 DEFINE_GUID(IID_IWMReaderStreamClock, 0x96406bed, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
9572 #if defined(__cplusplus) && !defined(CINTERFACE)
9573 MIDL_INTERFACE("96406bed-2b2b-11d3-b36b-00c04f6108ff")
9574 IWMReaderStreamClock : public IUnknown
9575 {
9576     virtual HRESULT STDMETHODCALLTYPE GetTime(
9577         QWORD *now) = 0;
9578 
9579     virtual HRESULT STDMETHODCALLTYPE SetTimer(
9580         QWORD when,
9581         void *param,
9582         DWORD *id) = 0;
9583 
9584     virtual HRESULT STDMETHODCALLTYPE KillTimer(
9585         DWORD id) = 0;
9586 
9587 };
9588 #ifdef __CRT_UUID_DECL
9589 __CRT_UUID_DECL(IWMReaderStreamClock, 0x96406bed, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
9590 #endif
9591 #else
9592 typedef struct IWMReaderStreamClockVtbl {
9593     BEGIN_INTERFACE
9594 
9595     /*** IUnknown methods ***/
9596     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9597         IWMReaderStreamClock *This,
9598         REFIID riid,
9599         void **ppvObject);
9600 
9601     ULONG (STDMETHODCALLTYPE *AddRef)(
9602         IWMReaderStreamClock *This);
9603 
9604     ULONG (STDMETHODCALLTYPE *Release)(
9605         IWMReaderStreamClock *This);
9606 
9607     /*** IWMReaderStreamClock methods ***/
9608     HRESULT (STDMETHODCALLTYPE *GetTime)(
9609         IWMReaderStreamClock *This,
9610         QWORD *now);
9611 
9612     HRESULT (STDMETHODCALLTYPE *SetTimer)(
9613         IWMReaderStreamClock *This,
9614         QWORD when,
9615         void *param,
9616         DWORD *id);
9617 
9618     HRESULT (STDMETHODCALLTYPE *KillTimer)(
9619         IWMReaderStreamClock *This,
9620         DWORD id);
9621 
9622     END_INTERFACE
9623 } IWMReaderStreamClockVtbl;
9624 
9625 interface IWMReaderStreamClock {
9626     CONST_VTBL IWMReaderStreamClockVtbl* lpVtbl;
9627 };
9628 
9629 #ifdef COBJMACROS
9630 #ifndef WIDL_C_INLINE_WRAPPERS
9631 /*** IUnknown methods ***/
9632 #define IWMReaderStreamClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9633 #define IWMReaderStreamClock_AddRef(This) (This)->lpVtbl->AddRef(This)
9634 #define IWMReaderStreamClock_Release(This) (This)->lpVtbl->Release(This)
9635 /*** IWMReaderStreamClock methods ***/
9636 #define IWMReaderStreamClock_GetTime(This,now) (This)->lpVtbl->GetTime(This,now)
9637 #define IWMReaderStreamClock_SetTimer(This,when,param,id) (This)->lpVtbl->SetTimer(This,when,param,id)
9638 #define IWMReaderStreamClock_KillTimer(This,id) (This)->lpVtbl->KillTimer(This,id)
9639 #else
9640 /*** IUnknown methods ***/
9641 static FORCEINLINE HRESULT IWMReaderStreamClock_QueryInterface(IWMReaderStreamClock* This,REFIID riid,void **ppvObject) {
9642     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9643 }
9644 static FORCEINLINE ULONG IWMReaderStreamClock_AddRef(IWMReaderStreamClock* This) {
9645     return This->lpVtbl->AddRef(This);
9646 }
9647 static FORCEINLINE ULONG IWMReaderStreamClock_Release(IWMReaderStreamClock* This) {
9648     return This->lpVtbl->Release(This);
9649 }
9650 /*** IWMReaderStreamClock methods ***/
9651 static FORCEINLINE HRESULT IWMReaderStreamClock_GetTime(IWMReaderStreamClock* This,QWORD *now) {
9652     return This->lpVtbl->GetTime(This,now);
9653 }
9654 static FORCEINLINE HRESULT IWMReaderStreamClock_SetTimer(IWMReaderStreamClock* This,QWORD when,void *param,DWORD *id) {
9655     return This->lpVtbl->SetTimer(This,when,param,id);
9656 }
9657 static FORCEINLINE HRESULT IWMReaderStreamClock_KillTimer(IWMReaderStreamClock* This,DWORD id) {
9658     return This->lpVtbl->KillTimer(This,id);
9659 }
9660 #endif
9661 #endif
9662 
9663 #endif
9664 
9665 
9666 #endif  /* __IWMReaderStreamClock_INTERFACE_DEFINED__ */
9667 
9668 /*****************************************************************************
9669  * IWMPacketSize interface
9670  */
9671 #ifndef __IWMPacketSize_INTERFACE_DEFINED__
9672 #define __IWMPacketSize_INTERFACE_DEFINED__
9673 
9674 DEFINE_GUID(IID_IWMPacketSize, 0xcdfb97ab, 0x188f, 0x40b3, 0xb6,0x43, 0x5b,0x79,0x03,0x97,0x5c,0x59);
9675 #if defined(__cplusplus) && !defined(CINTERFACE)
9676 MIDL_INTERFACE("cdfb97ab-188f-40b3-b643-5b7903975c59")
9677 IWMPacketSize : public IUnknown
9678 {
9679     virtual HRESULT STDMETHODCALLTYPE GetMaxPacketSize(
9680         DWORD *size) = 0;
9681 
9682     virtual HRESULT STDMETHODCALLTYPE SetMaxPacketSize(
9683         DWORD size) = 0;
9684 
9685 };
9686 #ifdef __CRT_UUID_DECL
9687 __CRT_UUID_DECL(IWMPacketSize, 0xcdfb97ab, 0x188f, 0x40b3, 0xb6,0x43, 0x5b,0x79,0x03,0x97,0x5c,0x59)
9688 #endif
9689 #else
9690 typedef struct IWMPacketSizeVtbl {
9691     BEGIN_INTERFACE
9692 
9693     /*** IUnknown methods ***/
9694     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9695         IWMPacketSize *This,
9696         REFIID riid,
9697         void **ppvObject);
9698 
9699     ULONG (STDMETHODCALLTYPE *AddRef)(
9700         IWMPacketSize *This);
9701 
9702     ULONG (STDMETHODCALLTYPE *Release)(
9703         IWMPacketSize *This);
9704 
9705     /*** IWMPacketSize methods ***/
9706     HRESULT (STDMETHODCALLTYPE *GetMaxPacketSize)(
9707         IWMPacketSize *This,
9708         DWORD *size);
9709 
9710     HRESULT (STDMETHODCALLTYPE *SetMaxPacketSize)(
9711         IWMPacketSize *This,
9712         DWORD size);
9713 
9714     END_INTERFACE
9715 } IWMPacketSizeVtbl;
9716 
9717 interface IWMPacketSize {
9718     CONST_VTBL IWMPacketSizeVtbl* lpVtbl;
9719 };
9720 
9721 #ifdef COBJMACROS
9722 #ifndef WIDL_C_INLINE_WRAPPERS
9723 /*** IUnknown methods ***/
9724 #define IWMPacketSize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9725 #define IWMPacketSize_AddRef(This) (This)->lpVtbl->AddRef(This)
9726 #define IWMPacketSize_Release(This) (This)->lpVtbl->Release(This)
9727 /*** IWMPacketSize methods ***/
9728 #define IWMPacketSize_GetMaxPacketSize(This,size) (This)->lpVtbl->GetMaxPacketSize(This,size)
9729 #define IWMPacketSize_SetMaxPacketSize(This,size) (This)->lpVtbl->SetMaxPacketSize(This,size)
9730 #else
9731 /*** IUnknown methods ***/
9732 static FORCEINLINE HRESULT IWMPacketSize_QueryInterface(IWMPacketSize* This,REFIID riid,void **ppvObject) {
9733     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9734 }
9735 static FORCEINLINE ULONG IWMPacketSize_AddRef(IWMPacketSize* This) {
9736     return This->lpVtbl->AddRef(This);
9737 }
9738 static FORCEINLINE ULONG IWMPacketSize_Release(IWMPacketSize* This) {
9739     return This->lpVtbl->Release(This);
9740 }
9741 /*** IWMPacketSize methods ***/
9742 static FORCEINLINE HRESULT IWMPacketSize_GetMaxPacketSize(IWMPacketSize* This,DWORD *size) {
9743     return This->lpVtbl->GetMaxPacketSize(This,size);
9744 }
9745 static FORCEINLINE HRESULT IWMPacketSize_SetMaxPacketSize(IWMPacketSize* This,DWORD size) {
9746     return This->lpVtbl->SetMaxPacketSize(This,size);
9747 }
9748 #endif
9749 #endif
9750 
9751 #endif
9752 
9753 
9754 #endif  /* __IWMPacketSize_INTERFACE_DEFINED__ */
9755 
9756 /*****************************************************************************
9757  * IWMPacketSize2 interface
9758  */
9759 #ifndef __IWMPacketSize2_INTERFACE_DEFINED__
9760 #define __IWMPacketSize2_INTERFACE_DEFINED__
9761 
9762 DEFINE_GUID(IID_IWMPacketSize2, 0x8bfc2b9e, 0xb646, 0x4233, 0xa8,0x77, 0x1c,0x6a,0x07,0x96,0x69,0xdc);
9763 #if defined(__cplusplus) && !defined(CINTERFACE)
9764 MIDL_INTERFACE("8bfc2b9e-b646-4233-a877-1c6a079669dc")
9765 IWMPacketSize2 : public IWMPacketSize
9766 {
9767     virtual HRESULT STDMETHODCALLTYPE GetMinPacketSize(
9768         DWORD *size) = 0;
9769 
9770     virtual HRESULT STDMETHODCALLTYPE SetMinPacketSize(
9771         DWORD size) = 0;
9772 
9773 };
9774 #ifdef __CRT_UUID_DECL
9775 __CRT_UUID_DECL(IWMPacketSize2, 0x8bfc2b9e, 0xb646, 0x4233, 0xa8,0x77, 0x1c,0x6a,0x07,0x96,0x69,0xdc)
9776 #endif
9777 #else
9778 typedef struct IWMPacketSize2Vtbl {
9779     BEGIN_INTERFACE
9780 
9781     /*** IUnknown methods ***/
9782     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9783         IWMPacketSize2 *This,
9784         REFIID riid,
9785         void **ppvObject);
9786 
9787     ULONG (STDMETHODCALLTYPE *AddRef)(
9788         IWMPacketSize2 *This);
9789 
9790     ULONG (STDMETHODCALLTYPE *Release)(
9791         IWMPacketSize2 *This);
9792 
9793     /*** IWMPacketSize methods ***/
9794     HRESULT (STDMETHODCALLTYPE *GetMaxPacketSize)(
9795         IWMPacketSize2 *This,
9796         DWORD *size);
9797 
9798     HRESULT (STDMETHODCALLTYPE *SetMaxPacketSize)(
9799         IWMPacketSize2 *This,
9800         DWORD size);
9801 
9802     /*** IWMPacketSize2 methods ***/
9803     HRESULT (STDMETHODCALLTYPE *GetMinPacketSize)(
9804         IWMPacketSize2 *This,
9805         DWORD *size);
9806 
9807     HRESULT (STDMETHODCALLTYPE *SetMinPacketSize)(
9808         IWMPacketSize2 *This,
9809         DWORD size);
9810 
9811     END_INTERFACE
9812 } IWMPacketSize2Vtbl;
9813 
9814 interface IWMPacketSize2 {
9815     CONST_VTBL IWMPacketSize2Vtbl* lpVtbl;
9816 };
9817 
9818 #ifdef COBJMACROS
9819 #ifndef WIDL_C_INLINE_WRAPPERS
9820 /*** IUnknown methods ***/
9821 #define IWMPacketSize2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9822 #define IWMPacketSize2_AddRef(This) (This)->lpVtbl->AddRef(This)
9823 #define IWMPacketSize2_Release(This) (This)->lpVtbl->Release(This)
9824 /*** IWMPacketSize methods ***/
9825 #define IWMPacketSize2_GetMaxPacketSize(This,size) (This)->lpVtbl->GetMaxPacketSize(This,size)
9826 #define IWMPacketSize2_SetMaxPacketSize(This,size) (This)->lpVtbl->SetMaxPacketSize(This,size)
9827 /*** IWMPacketSize2 methods ***/
9828 #define IWMPacketSize2_GetMinPacketSize(This,size) (This)->lpVtbl->GetMinPacketSize(This,size)
9829 #define IWMPacketSize2_SetMinPacketSize(This,size) (This)->lpVtbl->SetMinPacketSize(This,size)
9830 #else
9831 /*** IUnknown methods ***/
9832 static FORCEINLINE HRESULT IWMPacketSize2_QueryInterface(IWMPacketSize2* This,REFIID riid,void **ppvObject) {
9833     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9834 }
9835 static FORCEINLINE ULONG IWMPacketSize2_AddRef(IWMPacketSize2* This) {
9836     return This->lpVtbl->AddRef(This);
9837 }
9838 static FORCEINLINE ULONG IWMPacketSize2_Release(IWMPacketSize2* This) {
9839     return This->lpVtbl->Release(This);
9840 }
9841 /*** IWMPacketSize methods ***/
9842 static FORCEINLINE HRESULT IWMPacketSize2_GetMaxPacketSize(IWMPacketSize2* This,DWORD *size) {
9843     return This->lpVtbl->GetMaxPacketSize(This,size);
9844 }
9845 static FORCEINLINE HRESULT IWMPacketSize2_SetMaxPacketSize(IWMPacketSize2* This,DWORD size) {
9846     return This->lpVtbl->SetMaxPacketSize(This,size);
9847 }
9848 /*** IWMPacketSize2 methods ***/
9849 static FORCEINLINE HRESULT IWMPacketSize2_GetMinPacketSize(IWMPacketSize2* This,DWORD *size) {
9850     return This->lpVtbl->GetMinPacketSize(This,size);
9851 }
9852 static FORCEINLINE HRESULT IWMPacketSize2_SetMinPacketSize(IWMPacketSize2* This,DWORD size) {
9853     return This->lpVtbl->SetMinPacketSize(This,size);
9854 }
9855 #endif
9856 #endif
9857 
9858 #endif
9859 
9860 
9861 #endif  /* __IWMPacketSize2_INTERFACE_DEFINED__ */
9862 
9863 /*****************************************************************************
9864  * IWMDRMReader interface
9865  */
9866 #ifndef __IWMDRMReader_INTERFACE_DEFINED__
9867 #define __IWMDRMReader_INTERFACE_DEFINED__
9868 
9869 DEFINE_GUID(IID_IWMDRMReader, 0xd2827540, 0x3ee7, 0x432c, 0xb1,0x4c, 0xdc,0x17,0xf0,0x85,0xd3,0xb3);
9870 #if defined(__cplusplus) && !defined(CINTERFACE)
9871 MIDL_INTERFACE("d2827540-3ee7-432c-b14c-dc17f085d3b3")
9872 IWMDRMReader : public IUnknown
9873 {
9874     virtual HRESULT STDMETHODCALLTYPE AcquireLicense(
9875         DWORD flags) = 0;
9876 
9877     virtual HRESULT STDMETHODCALLTYPE CancelLicenseAcquisition(
9878         ) = 0;
9879 
9880     virtual HRESULT STDMETHODCALLTYPE Individualize(
9881         DWORD flags) = 0;
9882 
9883     virtual HRESULT STDMETHODCALLTYPE CancelIndividualization(
9884         ) = 0;
9885 
9886     virtual HRESULT STDMETHODCALLTYPE MonitorLicenseAcquisition(
9887         ) = 0;
9888 
9889     virtual HRESULT STDMETHODCALLTYPE CancelMonitorLicenseAcquisition(
9890         ) = 0;
9891 
9892     virtual HRESULT STDMETHODCALLTYPE SetDRMProperty(
9893         const WCHAR *name,
9894         WMT_ATTR_DATATYPE type,
9895         const BYTE *value,
9896         WORD length) = 0;
9897 
9898     virtual HRESULT STDMETHODCALLTYPE GetDRMProperty(
9899         const WCHAR *name,
9900         WMT_ATTR_DATATYPE *type,
9901         BYTE *value,
9902         WORD *length) = 0;
9903 
9904 };
9905 #ifdef __CRT_UUID_DECL
9906 __CRT_UUID_DECL(IWMDRMReader, 0xd2827540, 0x3ee7, 0x432c, 0xb1,0x4c, 0xdc,0x17,0xf0,0x85,0xd3,0xb3)
9907 #endif
9908 #else
9909 typedef struct IWMDRMReaderVtbl {
9910     BEGIN_INTERFACE
9911 
9912     /*** IUnknown methods ***/
9913     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
9914         IWMDRMReader *This,
9915         REFIID riid,
9916         void **ppvObject);
9917 
9918     ULONG (STDMETHODCALLTYPE *AddRef)(
9919         IWMDRMReader *This);
9920 
9921     ULONG (STDMETHODCALLTYPE *Release)(
9922         IWMDRMReader *This);
9923 
9924     /*** IWMDRMReader methods ***/
9925     HRESULT (STDMETHODCALLTYPE *AcquireLicense)(
9926         IWMDRMReader *This,
9927         DWORD flags);
9928 
9929     HRESULT (STDMETHODCALLTYPE *CancelLicenseAcquisition)(
9930         IWMDRMReader *This);
9931 
9932     HRESULT (STDMETHODCALLTYPE *Individualize)(
9933         IWMDRMReader *This,
9934         DWORD flags);
9935 
9936     HRESULT (STDMETHODCALLTYPE *CancelIndividualization)(
9937         IWMDRMReader *This);
9938 
9939     HRESULT (STDMETHODCALLTYPE *MonitorLicenseAcquisition)(
9940         IWMDRMReader *This);
9941 
9942     HRESULT (STDMETHODCALLTYPE *CancelMonitorLicenseAcquisition)(
9943         IWMDRMReader *This);
9944 
9945     HRESULT (STDMETHODCALLTYPE *SetDRMProperty)(
9946         IWMDRMReader *This,
9947         const WCHAR *name,
9948         WMT_ATTR_DATATYPE type,
9949         const BYTE *value,
9950         WORD length);
9951 
9952     HRESULT (STDMETHODCALLTYPE *GetDRMProperty)(
9953         IWMDRMReader *This,
9954         const WCHAR *name,
9955         WMT_ATTR_DATATYPE *type,
9956         BYTE *value,
9957         WORD *length);
9958 
9959     END_INTERFACE
9960 } IWMDRMReaderVtbl;
9961 
9962 interface IWMDRMReader {
9963     CONST_VTBL IWMDRMReaderVtbl* lpVtbl;
9964 };
9965 
9966 #ifdef COBJMACROS
9967 #ifndef WIDL_C_INLINE_WRAPPERS
9968 /*** IUnknown methods ***/
9969 #define IWMDRMReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
9970 #define IWMDRMReader_AddRef(This) (This)->lpVtbl->AddRef(This)
9971 #define IWMDRMReader_Release(This) (This)->lpVtbl->Release(This)
9972 /*** IWMDRMReader methods ***/
9973 #define IWMDRMReader_AcquireLicense(This,flags) (This)->lpVtbl->AcquireLicense(This,flags)
9974 #define IWMDRMReader_CancelLicenseAcquisition(This) (This)->lpVtbl->CancelLicenseAcquisition(This)
9975 #define IWMDRMReader_Individualize(This,flags) (This)->lpVtbl->Individualize(This,flags)
9976 #define IWMDRMReader_CancelIndividualization(This) (This)->lpVtbl->CancelIndividualization(This)
9977 #define IWMDRMReader_MonitorLicenseAcquisition(This) (This)->lpVtbl->MonitorLicenseAcquisition(This)
9978 #define IWMDRMReader_CancelMonitorLicenseAcquisition(This) (This)->lpVtbl->CancelMonitorLicenseAcquisition(This)
9979 #define IWMDRMReader_SetDRMProperty(This,name,type,value,length) (This)->lpVtbl->SetDRMProperty(This,name,type,value,length)
9980 #define IWMDRMReader_GetDRMProperty(This,name,type,value,length) (This)->lpVtbl->GetDRMProperty(This,name,type,value,length)
9981 #else
9982 /*** IUnknown methods ***/
9983 static FORCEINLINE HRESULT IWMDRMReader_QueryInterface(IWMDRMReader* This,REFIID riid,void **ppvObject) {
9984     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
9985 }
9986 static FORCEINLINE ULONG IWMDRMReader_AddRef(IWMDRMReader* This) {
9987     return This->lpVtbl->AddRef(This);
9988 }
9989 static FORCEINLINE ULONG IWMDRMReader_Release(IWMDRMReader* This) {
9990     return This->lpVtbl->Release(This);
9991 }
9992 /*** IWMDRMReader methods ***/
9993 static FORCEINLINE HRESULT IWMDRMReader_AcquireLicense(IWMDRMReader* This,DWORD flags) {
9994     return This->lpVtbl->AcquireLicense(This,flags);
9995 }
9996 static FORCEINLINE HRESULT IWMDRMReader_CancelLicenseAcquisition(IWMDRMReader* This) {
9997     return This->lpVtbl->CancelLicenseAcquisition(This);
9998 }
9999 static FORCEINLINE HRESULT IWMDRMReader_Individualize(IWMDRMReader* This,DWORD flags) {
10000     return This->lpVtbl->Individualize(This,flags);
10001 }
10002 static FORCEINLINE HRESULT IWMDRMReader_CancelIndividualization(IWMDRMReader* This) {
10003     return This->lpVtbl->CancelIndividualization(This);
10004 }
10005 static FORCEINLINE HRESULT IWMDRMReader_MonitorLicenseAcquisition(IWMDRMReader* This) {
10006     return This->lpVtbl->MonitorLicenseAcquisition(This);
10007 }
10008 static FORCEINLINE HRESULT IWMDRMReader_CancelMonitorLicenseAcquisition(IWMDRMReader* This) {
10009     return This->lpVtbl->CancelMonitorLicenseAcquisition(This);
10010 }
10011 static FORCEINLINE HRESULT IWMDRMReader_SetDRMProperty(IWMDRMReader* This,const WCHAR *name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
10012     return This->lpVtbl->SetDRMProperty(This,name,type,value,length);
10013 }
10014 static FORCEINLINE HRESULT IWMDRMReader_GetDRMProperty(IWMDRMReader* This,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
10015     return This->lpVtbl->GetDRMProperty(This,name,type,value,length);
10016 }
10017 #endif
10018 #endif
10019 
10020 #endif
10021 
10022 
10023 #endif  /* __IWMDRMReader_INTERFACE_DEFINED__ */
10024 
10025 /*****************************************************************************
10026  * IWMDRMReader2 interface
10027  */
10028 #ifndef __IWMDRMReader2_INTERFACE_DEFINED__
10029 #define __IWMDRMReader2_INTERFACE_DEFINED__
10030 
10031 DEFINE_GUID(IID_IWMDRMReader2, 0xbefe7a75, 0x9f1d, 0x4075, 0xb9,0xd9, 0xa3,0xc3,0x7b,0xda,0x49,0xa0);
10032 #if defined(__cplusplus) && !defined(CINTERFACE)
10033 MIDL_INTERFACE("befe7a75-9f1d-4075-b9d9-a3c37bda49a0")
10034 IWMDRMReader2 : public IWMDRMReader
10035 {
10036     virtual HRESULT STDMETHODCALLTYPE SetEvaluateOutputLevelLicenses(
10037         WINBOOL evaluate) = 0;
10038 
10039     virtual HRESULT STDMETHODCALLTYPE GetPlayOutputLevels(
10040         DRM_PLAY_OPL *play,
10041         DWORD *length,
10042         DWORD *level) = 0;
10043 
10044     virtual HRESULT STDMETHODCALLTYPE GetCopyOutputLevels(
10045         DRM_COPY_OPL *copy,
10046         DWORD *length,
10047         DWORD *level) = 0;
10048 
10049     virtual HRESULT STDMETHODCALLTYPE TryNextLicense(
10050         ) = 0;
10051 
10052 };
10053 #ifdef __CRT_UUID_DECL
10054 __CRT_UUID_DECL(IWMDRMReader2, 0xbefe7a75, 0x9f1d, 0x4075, 0xb9,0xd9, 0xa3,0xc3,0x7b,0xda,0x49,0xa0)
10055 #endif
10056 #else
10057 typedef struct IWMDRMReader2Vtbl {
10058     BEGIN_INTERFACE
10059 
10060     /*** IUnknown methods ***/
10061     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10062         IWMDRMReader2 *This,
10063         REFIID riid,
10064         void **ppvObject);
10065 
10066     ULONG (STDMETHODCALLTYPE *AddRef)(
10067         IWMDRMReader2 *This);
10068 
10069     ULONG (STDMETHODCALLTYPE *Release)(
10070         IWMDRMReader2 *This);
10071 
10072     /*** IWMDRMReader methods ***/
10073     HRESULT (STDMETHODCALLTYPE *AcquireLicense)(
10074         IWMDRMReader2 *This,
10075         DWORD flags);
10076 
10077     HRESULT (STDMETHODCALLTYPE *CancelLicenseAcquisition)(
10078         IWMDRMReader2 *This);
10079 
10080     HRESULT (STDMETHODCALLTYPE *Individualize)(
10081         IWMDRMReader2 *This,
10082         DWORD flags);
10083 
10084     HRESULT (STDMETHODCALLTYPE *CancelIndividualization)(
10085         IWMDRMReader2 *This);
10086 
10087     HRESULT (STDMETHODCALLTYPE *MonitorLicenseAcquisition)(
10088         IWMDRMReader2 *This);
10089 
10090     HRESULT (STDMETHODCALLTYPE *CancelMonitorLicenseAcquisition)(
10091         IWMDRMReader2 *This);
10092 
10093     HRESULT (STDMETHODCALLTYPE *SetDRMProperty)(
10094         IWMDRMReader2 *This,
10095         const WCHAR *name,
10096         WMT_ATTR_DATATYPE type,
10097         const BYTE *value,
10098         WORD length);
10099 
10100     HRESULT (STDMETHODCALLTYPE *GetDRMProperty)(
10101         IWMDRMReader2 *This,
10102         const WCHAR *name,
10103         WMT_ATTR_DATATYPE *type,
10104         BYTE *value,
10105         WORD *length);
10106 
10107     /*** IWMDRMReader2 methods ***/
10108     HRESULT (STDMETHODCALLTYPE *SetEvaluateOutputLevelLicenses)(
10109         IWMDRMReader2 *This,
10110         WINBOOL evaluate);
10111 
10112     HRESULT (STDMETHODCALLTYPE *GetPlayOutputLevels)(
10113         IWMDRMReader2 *This,
10114         DRM_PLAY_OPL *play,
10115         DWORD *length,
10116         DWORD *level);
10117 
10118     HRESULT (STDMETHODCALLTYPE *GetCopyOutputLevels)(
10119         IWMDRMReader2 *This,
10120         DRM_COPY_OPL *copy,
10121         DWORD *length,
10122         DWORD *level);
10123 
10124     HRESULT (STDMETHODCALLTYPE *TryNextLicense)(
10125         IWMDRMReader2 *This);
10126 
10127     END_INTERFACE
10128 } IWMDRMReader2Vtbl;
10129 
10130 interface IWMDRMReader2 {
10131     CONST_VTBL IWMDRMReader2Vtbl* lpVtbl;
10132 };
10133 
10134 #ifdef COBJMACROS
10135 #ifndef WIDL_C_INLINE_WRAPPERS
10136 /*** IUnknown methods ***/
10137 #define IWMDRMReader2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10138 #define IWMDRMReader2_AddRef(This) (This)->lpVtbl->AddRef(This)
10139 #define IWMDRMReader2_Release(This) (This)->lpVtbl->Release(This)
10140 /*** IWMDRMReader methods ***/
10141 #define IWMDRMReader2_AcquireLicense(This,flags) (This)->lpVtbl->AcquireLicense(This,flags)
10142 #define IWMDRMReader2_CancelLicenseAcquisition(This) (This)->lpVtbl->CancelLicenseAcquisition(This)
10143 #define IWMDRMReader2_Individualize(This,flags) (This)->lpVtbl->Individualize(This,flags)
10144 #define IWMDRMReader2_CancelIndividualization(This) (This)->lpVtbl->CancelIndividualization(This)
10145 #define IWMDRMReader2_MonitorLicenseAcquisition(This) (This)->lpVtbl->MonitorLicenseAcquisition(This)
10146 #define IWMDRMReader2_CancelMonitorLicenseAcquisition(This) (This)->lpVtbl->CancelMonitorLicenseAcquisition(This)
10147 #define IWMDRMReader2_SetDRMProperty(This,name,type,value,length) (This)->lpVtbl->SetDRMProperty(This,name,type,value,length)
10148 #define IWMDRMReader2_GetDRMProperty(This,name,type,value,length) (This)->lpVtbl->GetDRMProperty(This,name,type,value,length)
10149 /*** IWMDRMReader2 methods ***/
10150 #define IWMDRMReader2_SetEvaluateOutputLevelLicenses(This,evaluate) (This)->lpVtbl->SetEvaluateOutputLevelLicenses(This,evaluate)
10151 #define IWMDRMReader2_GetPlayOutputLevels(This,play,length,level) (This)->lpVtbl->GetPlayOutputLevels(This,play,length,level)
10152 #define IWMDRMReader2_GetCopyOutputLevels(This,copy,length,level) (This)->lpVtbl->GetCopyOutputLevels(This,copy,length,level)
10153 #define IWMDRMReader2_TryNextLicense(This) (This)->lpVtbl->TryNextLicense(This)
10154 #else
10155 /*** IUnknown methods ***/
10156 static FORCEINLINE HRESULT IWMDRMReader2_QueryInterface(IWMDRMReader2* This,REFIID riid,void **ppvObject) {
10157     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10158 }
10159 static FORCEINLINE ULONG IWMDRMReader2_AddRef(IWMDRMReader2* This) {
10160     return This->lpVtbl->AddRef(This);
10161 }
10162 static FORCEINLINE ULONG IWMDRMReader2_Release(IWMDRMReader2* This) {
10163     return This->lpVtbl->Release(This);
10164 }
10165 /*** IWMDRMReader methods ***/
10166 static FORCEINLINE HRESULT IWMDRMReader2_AcquireLicense(IWMDRMReader2* This,DWORD flags) {
10167     return This->lpVtbl->AcquireLicense(This,flags);
10168 }
10169 static FORCEINLINE HRESULT IWMDRMReader2_CancelLicenseAcquisition(IWMDRMReader2* This) {
10170     return This->lpVtbl->CancelLicenseAcquisition(This);
10171 }
10172 static FORCEINLINE HRESULT IWMDRMReader2_Individualize(IWMDRMReader2* This,DWORD flags) {
10173     return This->lpVtbl->Individualize(This,flags);
10174 }
10175 static FORCEINLINE HRESULT IWMDRMReader2_CancelIndividualization(IWMDRMReader2* This) {
10176     return This->lpVtbl->CancelIndividualization(This);
10177 }
10178 static FORCEINLINE HRESULT IWMDRMReader2_MonitorLicenseAcquisition(IWMDRMReader2* This) {
10179     return This->lpVtbl->MonitorLicenseAcquisition(This);
10180 }
10181 static FORCEINLINE HRESULT IWMDRMReader2_CancelMonitorLicenseAcquisition(IWMDRMReader2* This) {
10182     return This->lpVtbl->CancelMonitorLicenseAcquisition(This);
10183 }
10184 static FORCEINLINE HRESULT IWMDRMReader2_SetDRMProperty(IWMDRMReader2* This,const WCHAR *name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
10185     return This->lpVtbl->SetDRMProperty(This,name,type,value,length);
10186 }
10187 static FORCEINLINE HRESULT IWMDRMReader2_GetDRMProperty(IWMDRMReader2* This,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
10188     return This->lpVtbl->GetDRMProperty(This,name,type,value,length);
10189 }
10190 /*** IWMDRMReader2 methods ***/
10191 static FORCEINLINE HRESULT IWMDRMReader2_SetEvaluateOutputLevelLicenses(IWMDRMReader2* This,WINBOOL evaluate) {
10192     return This->lpVtbl->SetEvaluateOutputLevelLicenses(This,evaluate);
10193 }
10194 static FORCEINLINE HRESULT IWMDRMReader2_GetPlayOutputLevels(IWMDRMReader2* This,DRM_PLAY_OPL *play,DWORD *length,DWORD *level) {
10195     return This->lpVtbl->GetPlayOutputLevels(This,play,length,level);
10196 }
10197 static FORCEINLINE HRESULT IWMDRMReader2_GetCopyOutputLevels(IWMDRMReader2* This,DRM_COPY_OPL *copy,DWORD *length,DWORD *level) {
10198     return This->lpVtbl->GetCopyOutputLevels(This,copy,length,level);
10199 }
10200 static FORCEINLINE HRESULT IWMDRMReader2_TryNextLicense(IWMDRMReader2* This) {
10201     return This->lpVtbl->TryNextLicense(This);
10202 }
10203 #endif
10204 #endif
10205 
10206 #endif
10207 
10208 
10209 #endif  /* __IWMDRMReader2_INTERFACE_DEFINED__ */
10210 
10211 /*****************************************************************************
10212  * IWMDRMReader3 interface
10213  */
10214 #ifndef __IWMDRMReader3_INTERFACE_DEFINED__
10215 #define __IWMDRMReader3_INTERFACE_DEFINED__
10216 
10217 DEFINE_GUID(IID_IWMDRMReader3, 0xe08672de, 0xf1e7, 0x4ff4, 0xa0,0xa3, 0xfc,0x4b,0x08,0xe4,0xca,0xf8);
10218 #if defined(__cplusplus) && !defined(CINTERFACE)
10219 MIDL_INTERFACE("e08672de-f1e7-4ff4-a0a3-fc4b08e4caf8")
10220 IWMDRMReader3 : public IWMDRMReader2
10221 {
10222     virtual HRESULT STDMETHODCALLTYPE GetInclusionList(
10223         GUID **guids,
10224         DWORD *count) = 0;
10225 
10226 };
10227 #ifdef __CRT_UUID_DECL
10228 __CRT_UUID_DECL(IWMDRMReader3, 0xe08672de, 0xf1e7, 0x4ff4, 0xa0,0xa3, 0xfc,0x4b,0x08,0xe4,0xca,0xf8)
10229 #endif
10230 #else
10231 typedef struct IWMDRMReader3Vtbl {
10232     BEGIN_INTERFACE
10233 
10234     /*** IUnknown methods ***/
10235     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10236         IWMDRMReader3 *This,
10237         REFIID riid,
10238         void **ppvObject);
10239 
10240     ULONG (STDMETHODCALLTYPE *AddRef)(
10241         IWMDRMReader3 *This);
10242 
10243     ULONG (STDMETHODCALLTYPE *Release)(
10244         IWMDRMReader3 *This);
10245 
10246     /*** IWMDRMReader methods ***/
10247     HRESULT (STDMETHODCALLTYPE *AcquireLicense)(
10248         IWMDRMReader3 *This,
10249         DWORD flags);
10250 
10251     HRESULT (STDMETHODCALLTYPE *CancelLicenseAcquisition)(
10252         IWMDRMReader3 *This);
10253 
10254     HRESULT (STDMETHODCALLTYPE *Individualize)(
10255         IWMDRMReader3 *This,
10256         DWORD flags);
10257 
10258     HRESULT (STDMETHODCALLTYPE *CancelIndividualization)(
10259         IWMDRMReader3 *This);
10260 
10261     HRESULT (STDMETHODCALLTYPE *MonitorLicenseAcquisition)(
10262         IWMDRMReader3 *This);
10263 
10264     HRESULT (STDMETHODCALLTYPE *CancelMonitorLicenseAcquisition)(
10265         IWMDRMReader3 *This);
10266 
10267     HRESULT (STDMETHODCALLTYPE *SetDRMProperty)(
10268         IWMDRMReader3 *This,
10269         const WCHAR *name,
10270         WMT_ATTR_DATATYPE type,
10271         const BYTE *value,
10272         WORD length);
10273 
10274     HRESULT (STDMETHODCALLTYPE *GetDRMProperty)(
10275         IWMDRMReader3 *This,
10276         const WCHAR *name,
10277         WMT_ATTR_DATATYPE *type,
10278         BYTE *value,
10279         WORD *length);
10280 
10281     /*** IWMDRMReader2 methods ***/
10282     HRESULT (STDMETHODCALLTYPE *SetEvaluateOutputLevelLicenses)(
10283         IWMDRMReader3 *This,
10284         WINBOOL evaluate);
10285 
10286     HRESULT (STDMETHODCALLTYPE *GetPlayOutputLevels)(
10287         IWMDRMReader3 *This,
10288         DRM_PLAY_OPL *play,
10289         DWORD *length,
10290         DWORD *level);
10291 
10292     HRESULT (STDMETHODCALLTYPE *GetCopyOutputLevels)(
10293         IWMDRMReader3 *This,
10294         DRM_COPY_OPL *copy,
10295         DWORD *length,
10296         DWORD *level);
10297 
10298     HRESULT (STDMETHODCALLTYPE *TryNextLicense)(
10299         IWMDRMReader3 *This);
10300 
10301     /*** IWMDRMReader3 methods ***/
10302     HRESULT (STDMETHODCALLTYPE *GetInclusionList)(
10303         IWMDRMReader3 *This,
10304         GUID **guids,
10305         DWORD *count);
10306 
10307     END_INTERFACE
10308 } IWMDRMReader3Vtbl;
10309 
10310 interface IWMDRMReader3 {
10311     CONST_VTBL IWMDRMReader3Vtbl* lpVtbl;
10312 };
10313 
10314 #ifdef COBJMACROS
10315 #ifndef WIDL_C_INLINE_WRAPPERS
10316 /*** IUnknown methods ***/
10317 #define IWMDRMReader3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10318 #define IWMDRMReader3_AddRef(This) (This)->lpVtbl->AddRef(This)
10319 #define IWMDRMReader3_Release(This) (This)->lpVtbl->Release(This)
10320 /*** IWMDRMReader methods ***/
10321 #define IWMDRMReader3_AcquireLicense(This,flags) (This)->lpVtbl->AcquireLicense(This,flags)
10322 #define IWMDRMReader3_CancelLicenseAcquisition(This) (This)->lpVtbl->CancelLicenseAcquisition(This)
10323 #define IWMDRMReader3_Individualize(This,flags) (This)->lpVtbl->Individualize(This,flags)
10324 #define IWMDRMReader3_CancelIndividualization(This) (This)->lpVtbl->CancelIndividualization(This)
10325 #define IWMDRMReader3_MonitorLicenseAcquisition(This) (This)->lpVtbl->MonitorLicenseAcquisition(This)
10326 #define IWMDRMReader3_CancelMonitorLicenseAcquisition(This) (This)->lpVtbl->CancelMonitorLicenseAcquisition(This)
10327 #define IWMDRMReader3_SetDRMProperty(This,name,type,value,length) (This)->lpVtbl->SetDRMProperty(This,name,type,value,length)
10328 #define IWMDRMReader3_GetDRMProperty(This,name,type,value,length) (This)->lpVtbl->GetDRMProperty(This,name,type,value,length)
10329 /*** IWMDRMReader2 methods ***/
10330 #define IWMDRMReader3_SetEvaluateOutputLevelLicenses(This,evaluate) (This)->lpVtbl->SetEvaluateOutputLevelLicenses(This,evaluate)
10331 #define IWMDRMReader3_GetPlayOutputLevels(This,play,length,level) (This)->lpVtbl->GetPlayOutputLevels(This,play,length,level)
10332 #define IWMDRMReader3_GetCopyOutputLevels(This,copy,length,level) (This)->lpVtbl->GetCopyOutputLevels(This,copy,length,level)
10333 #define IWMDRMReader3_TryNextLicense(This) (This)->lpVtbl->TryNextLicense(This)
10334 /*** IWMDRMReader3 methods ***/
10335 #define IWMDRMReader3_GetInclusionList(This,guids,count) (This)->lpVtbl->GetInclusionList(This,guids,count)
10336 #else
10337 /*** IUnknown methods ***/
10338 static FORCEINLINE HRESULT IWMDRMReader3_QueryInterface(IWMDRMReader3* This,REFIID riid,void **ppvObject) {
10339     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10340 }
10341 static FORCEINLINE ULONG IWMDRMReader3_AddRef(IWMDRMReader3* This) {
10342     return This->lpVtbl->AddRef(This);
10343 }
10344 static FORCEINLINE ULONG IWMDRMReader3_Release(IWMDRMReader3* This) {
10345     return This->lpVtbl->Release(This);
10346 }
10347 /*** IWMDRMReader methods ***/
10348 static FORCEINLINE HRESULT IWMDRMReader3_AcquireLicense(IWMDRMReader3* This,DWORD flags) {
10349     return This->lpVtbl->AcquireLicense(This,flags);
10350 }
10351 static FORCEINLINE HRESULT IWMDRMReader3_CancelLicenseAcquisition(IWMDRMReader3* This) {
10352     return This->lpVtbl->CancelLicenseAcquisition(This);
10353 }
10354 static FORCEINLINE HRESULT IWMDRMReader3_Individualize(IWMDRMReader3* This,DWORD flags) {
10355     return This->lpVtbl->Individualize(This,flags);
10356 }
10357 static FORCEINLINE HRESULT IWMDRMReader3_CancelIndividualization(IWMDRMReader3* This) {
10358     return This->lpVtbl->CancelIndividualization(This);
10359 }
10360 static FORCEINLINE HRESULT IWMDRMReader3_MonitorLicenseAcquisition(IWMDRMReader3* This) {
10361     return This->lpVtbl->MonitorLicenseAcquisition(This);
10362 }
10363 static FORCEINLINE HRESULT IWMDRMReader3_CancelMonitorLicenseAcquisition(IWMDRMReader3* This) {
10364     return This->lpVtbl->CancelMonitorLicenseAcquisition(This);
10365 }
10366 static FORCEINLINE HRESULT IWMDRMReader3_SetDRMProperty(IWMDRMReader3* This,const WCHAR *name,WMT_ATTR_DATATYPE type,const BYTE *value,WORD length) {
10367     return This->lpVtbl->SetDRMProperty(This,name,type,value,length);
10368 }
10369 static FORCEINLINE HRESULT IWMDRMReader3_GetDRMProperty(IWMDRMReader3* This,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,WORD *length) {
10370     return This->lpVtbl->GetDRMProperty(This,name,type,value,length);
10371 }
10372 /*** IWMDRMReader2 methods ***/
10373 static FORCEINLINE HRESULT IWMDRMReader3_SetEvaluateOutputLevelLicenses(IWMDRMReader3* This,WINBOOL evaluate) {
10374     return This->lpVtbl->SetEvaluateOutputLevelLicenses(This,evaluate);
10375 }
10376 static FORCEINLINE HRESULT IWMDRMReader3_GetPlayOutputLevels(IWMDRMReader3* This,DRM_PLAY_OPL *play,DWORD *length,DWORD *level) {
10377     return This->lpVtbl->GetPlayOutputLevels(This,play,length,level);
10378 }
10379 static FORCEINLINE HRESULT IWMDRMReader3_GetCopyOutputLevels(IWMDRMReader3* This,DRM_COPY_OPL *copy,DWORD *length,DWORD *level) {
10380     return This->lpVtbl->GetCopyOutputLevels(This,copy,length,level);
10381 }
10382 static FORCEINLINE HRESULT IWMDRMReader3_TryNextLicense(IWMDRMReader3* This) {
10383     return This->lpVtbl->TryNextLicense(This);
10384 }
10385 /*** IWMDRMReader3 methods ***/
10386 static FORCEINLINE HRESULT IWMDRMReader3_GetInclusionList(IWMDRMReader3* This,GUID **guids,DWORD *count) {
10387     return This->lpVtbl->GetInclusionList(This,guids,count);
10388 }
10389 #endif
10390 #endif
10391 
10392 #endif
10393 
10394 
10395 #endif  /* __IWMDRMReader3_INTERFACE_DEFINED__ */
10396 
10397 /*****************************************************************************
10398  * IWMReaderAccelerator interface
10399  */
10400 #ifndef __IWMReaderAccelerator_INTERFACE_DEFINED__
10401 #define __IWMReaderAccelerator_INTERFACE_DEFINED__
10402 
10403 DEFINE_GUID(IID_IWMReaderAccelerator, 0xbddc4d08, 0x944d, 0x4d52, 0xa6,0x12, 0x46,0xc3,0xfd,0xa0,0x7d,0xd4);
10404 #if defined(__cplusplus) && !defined(CINTERFACE)
10405 MIDL_INTERFACE("bddc4d08-944d-4d52-a612-46c3fda07dd4")
10406 IWMReaderAccelerator : public IUnknown
10407 {
10408     virtual HRESULT STDMETHODCALLTYPE GetCodecInterface(
10409         DWORD output,
10410         REFIID riid,
10411         void **codec) = 0;
10412 
10413     virtual HRESULT STDMETHODCALLTYPE Notify(
10414         DWORD output,
10415         WM_MEDIA_TYPE *subtype) = 0;
10416 
10417 };
10418 #ifdef __CRT_UUID_DECL
10419 __CRT_UUID_DECL(IWMReaderAccelerator, 0xbddc4d08, 0x944d, 0x4d52, 0xa6,0x12, 0x46,0xc3,0xfd,0xa0,0x7d,0xd4)
10420 #endif
10421 #else
10422 typedef struct IWMReaderAcceleratorVtbl {
10423     BEGIN_INTERFACE
10424 
10425     /*** IUnknown methods ***/
10426     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10427         IWMReaderAccelerator *This,
10428         REFIID riid,
10429         void **ppvObject);
10430 
10431     ULONG (STDMETHODCALLTYPE *AddRef)(
10432         IWMReaderAccelerator *This);
10433 
10434     ULONG (STDMETHODCALLTYPE *Release)(
10435         IWMReaderAccelerator *This);
10436 
10437     /*** IWMReaderAccelerator methods ***/
10438     HRESULT (STDMETHODCALLTYPE *GetCodecInterface)(
10439         IWMReaderAccelerator *This,
10440         DWORD output,
10441         REFIID riid,
10442         void **codec);
10443 
10444     HRESULT (STDMETHODCALLTYPE *Notify)(
10445         IWMReaderAccelerator *This,
10446         DWORD output,
10447         WM_MEDIA_TYPE *subtype);
10448 
10449     END_INTERFACE
10450 } IWMReaderAcceleratorVtbl;
10451 
10452 interface IWMReaderAccelerator {
10453     CONST_VTBL IWMReaderAcceleratorVtbl* lpVtbl;
10454 };
10455 
10456 #ifdef COBJMACROS
10457 #ifndef WIDL_C_INLINE_WRAPPERS
10458 /*** IUnknown methods ***/
10459 #define IWMReaderAccelerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10460 #define IWMReaderAccelerator_AddRef(This) (This)->lpVtbl->AddRef(This)
10461 #define IWMReaderAccelerator_Release(This) (This)->lpVtbl->Release(This)
10462 /*** IWMReaderAccelerator methods ***/
10463 #define IWMReaderAccelerator_GetCodecInterface(This,output,riid,codec) (This)->lpVtbl->GetCodecInterface(This,output,riid,codec)
10464 #define IWMReaderAccelerator_Notify(This,output,subtype) (This)->lpVtbl->Notify(This,output,subtype)
10465 #else
10466 /*** IUnknown methods ***/
10467 static FORCEINLINE HRESULT IWMReaderAccelerator_QueryInterface(IWMReaderAccelerator* This,REFIID riid,void **ppvObject) {
10468     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10469 }
10470 static FORCEINLINE ULONG IWMReaderAccelerator_AddRef(IWMReaderAccelerator* This) {
10471     return This->lpVtbl->AddRef(This);
10472 }
10473 static FORCEINLINE ULONG IWMReaderAccelerator_Release(IWMReaderAccelerator* This) {
10474     return This->lpVtbl->Release(This);
10475 }
10476 /*** IWMReaderAccelerator methods ***/
10477 static FORCEINLINE HRESULT IWMReaderAccelerator_GetCodecInterface(IWMReaderAccelerator* This,DWORD output,REFIID riid,void **codec) {
10478     return This->lpVtbl->GetCodecInterface(This,output,riid,codec);
10479 }
10480 static FORCEINLINE HRESULT IWMReaderAccelerator_Notify(IWMReaderAccelerator* This,DWORD output,WM_MEDIA_TYPE *subtype) {
10481     return This->lpVtbl->Notify(This,output,subtype);
10482 }
10483 #endif
10484 #endif
10485 
10486 #endif
10487 
10488 
10489 #endif  /* __IWMReaderAccelerator_INTERFACE_DEFINED__ */
10490 
10491 /*****************************************************************************
10492  * IWMReaderTimecode interface
10493  */
10494 #ifndef __IWMReaderTimecode_INTERFACE_DEFINED__
10495 #define __IWMReaderTimecode_INTERFACE_DEFINED__
10496 
10497 DEFINE_GUID(IID_IWMReaderTimecode, 0xf369e2f0, 0xe081, 0x4fe6, 0x84,0x50, 0xb8,0x10,0xb2,0xf4,0x10,0xd1);
10498 #if defined(__cplusplus) && !defined(CINTERFACE)
10499 MIDL_INTERFACE("f369e2f0-e081-4fe6-8450-b810b2f410d1")
10500 IWMReaderTimecode : public IUnknown
10501 {
10502     virtual HRESULT STDMETHODCALLTYPE GetTimecodeRangeCount(
10503         WORD num,
10504         WORD *count) = 0;
10505 
10506     virtual HRESULT STDMETHODCALLTYPE GetTimecodeRangeBounds(
10507         WORD stream,
10508         WORD range,
10509         DWORD *start_timecode,
10510         DWORD *end_timecode) = 0;
10511 
10512 };
10513 #ifdef __CRT_UUID_DECL
10514 __CRT_UUID_DECL(IWMReaderTimecode, 0xf369e2f0, 0xe081, 0x4fe6, 0x84,0x50, 0xb8,0x10,0xb2,0xf4,0x10,0xd1)
10515 #endif
10516 #else
10517 typedef struct IWMReaderTimecodeVtbl {
10518     BEGIN_INTERFACE
10519 
10520     /*** IUnknown methods ***/
10521     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10522         IWMReaderTimecode *This,
10523         REFIID riid,
10524         void **ppvObject);
10525 
10526     ULONG (STDMETHODCALLTYPE *AddRef)(
10527         IWMReaderTimecode *This);
10528 
10529     ULONG (STDMETHODCALLTYPE *Release)(
10530         IWMReaderTimecode *This);
10531 
10532     /*** IWMReaderTimecode methods ***/
10533     HRESULT (STDMETHODCALLTYPE *GetTimecodeRangeCount)(
10534         IWMReaderTimecode *This,
10535         WORD num,
10536         WORD *count);
10537 
10538     HRESULT (STDMETHODCALLTYPE *GetTimecodeRangeBounds)(
10539         IWMReaderTimecode *This,
10540         WORD stream,
10541         WORD range,
10542         DWORD *start_timecode,
10543         DWORD *end_timecode);
10544 
10545     END_INTERFACE
10546 } IWMReaderTimecodeVtbl;
10547 
10548 interface IWMReaderTimecode {
10549     CONST_VTBL IWMReaderTimecodeVtbl* lpVtbl;
10550 };
10551 
10552 #ifdef COBJMACROS
10553 #ifndef WIDL_C_INLINE_WRAPPERS
10554 /*** IUnknown methods ***/
10555 #define IWMReaderTimecode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10556 #define IWMReaderTimecode_AddRef(This) (This)->lpVtbl->AddRef(This)
10557 #define IWMReaderTimecode_Release(This) (This)->lpVtbl->Release(This)
10558 /*** IWMReaderTimecode methods ***/
10559 #define IWMReaderTimecode_GetTimecodeRangeCount(This,num,count) (This)->lpVtbl->GetTimecodeRangeCount(This,num,count)
10560 #define IWMReaderTimecode_GetTimecodeRangeBounds(This,stream,range,start_timecode,end_timecode) (This)->lpVtbl->GetTimecodeRangeBounds(This,stream,range,start_timecode,end_timecode)
10561 #else
10562 /*** IUnknown methods ***/
10563 static FORCEINLINE HRESULT IWMReaderTimecode_QueryInterface(IWMReaderTimecode* This,REFIID riid,void **ppvObject) {
10564     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10565 }
10566 static FORCEINLINE ULONG IWMReaderTimecode_AddRef(IWMReaderTimecode* This) {
10567     return This->lpVtbl->AddRef(This);
10568 }
10569 static FORCEINLINE ULONG IWMReaderTimecode_Release(IWMReaderTimecode* This) {
10570     return This->lpVtbl->Release(This);
10571 }
10572 /*** IWMReaderTimecode methods ***/
10573 static FORCEINLINE HRESULT IWMReaderTimecode_GetTimecodeRangeCount(IWMReaderTimecode* This,WORD num,WORD *count) {
10574     return This->lpVtbl->GetTimecodeRangeCount(This,num,count);
10575 }
10576 static FORCEINLINE HRESULT IWMReaderTimecode_GetTimecodeRangeBounds(IWMReaderTimecode* This,WORD stream,WORD range,DWORD *start_timecode,DWORD *end_timecode) {
10577     return This->lpVtbl->GetTimecodeRangeBounds(This,stream,range,start_timecode,end_timecode);
10578 }
10579 #endif
10580 #endif
10581 
10582 #endif
10583 
10584 
10585 #endif  /* __IWMReaderTimecode_INTERFACE_DEFINED__ */
10586 
10587 /*****************************************************************************
10588  * IWMReaderTypeNegotiation interface
10589  */
10590 #ifndef __IWMReaderTypeNegotiation_INTERFACE_DEFINED__
10591 #define __IWMReaderTypeNegotiation_INTERFACE_DEFINED__
10592 
10593 DEFINE_GUID(IID_IWMReaderTypeNegotiation, 0xfdbe5592, 0x81a1, 0x41ea, 0x93,0xbd, 0x73,0x5c,0xad,0x1a,0xdc,0x05);
10594 #if defined(__cplusplus) && !defined(CINTERFACE)
10595 MIDL_INTERFACE("fdbe5592-81a1-41ea-93bd-735cad1adc05")
10596 IWMReaderTypeNegotiation : public IUnknown
10597 {
10598     virtual HRESULT STDMETHODCALLTYPE TryOutputProps(
10599         DWORD output,
10600         IWMOutputMediaProps *props) = 0;
10601 
10602 };
10603 #ifdef __CRT_UUID_DECL
10604 __CRT_UUID_DECL(IWMReaderTypeNegotiation, 0xfdbe5592, 0x81a1, 0x41ea, 0x93,0xbd, 0x73,0x5c,0xad,0x1a,0xdc,0x05)
10605 #endif
10606 #else
10607 typedef struct IWMReaderTypeNegotiationVtbl {
10608     BEGIN_INTERFACE
10609 
10610     /*** IUnknown methods ***/
10611     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10612         IWMReaderTypeNegotiation *This,
10613         REFIID riid,
10614         void **ppvObject);
10615 
10616     ULONG (STDMETHODCALLTYPE *AddRef)(
10617         IWMReaderTypeNegotiation *This);
10618 
10619     ULONG (STDMETHODCALLTYPE *Release)(
10620         IWMReaderTypeNegotiation *This);
10621 
10622     /*** IWMReaderTypeNegotiation methods ***/
10623     HRESULT (STDMETHODCALLTYPE *TryOutputProps)(
10624         IWMReaderTypeNegotiation *This,
10625         DWORD output,
10626         IWMOutputMediaProps *props);
10627 
10628     END_INTERFACE
10629 } IWMReaderTypeNegotiationVtbl;
10630 
10631 interface IWMReaderTypeNegotiation {
10632     CONST_VTBL IWMReaderTypeNegotiationVtbl* lpVtbl;
10633 };
10634 
10635 #ifdef COBJMACROS
10636 #ifndef WIDL_C_INLINE_WRAPPERS
10637 /*** IUnknown methods ***/
10638 #define IWMReaderTypeNegotiation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10639 #define IWMReaderTypeNegotiation_AddRef(This) (This)->lpVtbl->AddRef(This)
10640 #define IWMReaderTypeNegotiation_Release(This) (This)->lpVtbl->Release(This)
10641 /*** IWMReaderTypeNegotiation methods ***/
10642 #define IWMReaderTypeNegotiation_TryOutputProps(This,output,props) (This)->lpVtbl->TryOutputProps(This,output,props)
10643 #else
10644 /*** IUnknown methods ***/
10645 static FORCEINLINE HRESULT IWMReaderTypeNegotiation_QueryInterface(IWMReaderTypeNegotiation* This,REFIID riid,void **ppvObject) {
10646     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10647 }
10648 static FORCEINLINE ULONG IWMReaderTypeNegotiation_AddRef(IWMReaderTypeNegotiation* This) {
10649     return This->lpVtbl->AddRef(This);
10650 }
10651 static FORCEINLINE ULONG IWMReaderTypeNegotiation_Release(IWMReaderTypeNegotiation* This) {
10652     return This->lpVtbl->Release(This);
10653 }
10654 /*** IWMReaderTypeNegotiation methods ***/
10655 static FORCEINLINE HRESULT IWMReaderTypeNegotiation_TryOutputProps(IWMReaderTypeNegotiation* This,DWORD output,IWMOutputMediaProps *props) {
10656     return This->lpVtbl->TryOutputProps(This,output,props);
10657 }
10658 #endif
10659 #endif
10660 
10661 #endif
10662 
10663 
10664 #endif  /* __IWMReaderTypeNegotiation_INTERFACE_DEFINED__ */
10665 
10666 /*****************************************************************************
10667  * IWMLanguageList interface
10668  */
10669 #ifndef __IWMLanguageList_INTERFACE_DEFINED__
10670 #define __IWMLanguageList_INTERFACE_DEFINED__
10671 
10672 DEFINE_GUID(IID_IWMLanguageList, 0xdf683f00, 0x2d49, 0x4d8e, 0x92,0xb7, 0xfb,0x19,0xf6,0xa0,0xdc,0x57);
10673 #if defined(__cplusplus) && !defined(CINTERFACE)
10674 MIDL_INTERFACE("df683f00-2d49-4d8e-92b7-fb19f6a0dc57")
10675 IWMLanguageList : public IUnknown
10676 {
10677     virtual HRESULT STDMETHODCALLTYPE GetLanguageCount(
10678         WORD *count) = 0;
10679 
10680     virtual HRESULT STDMETHODCALLTYPE GetLanguageDetails(
10681         WORD index,
10682         WCHAR *language,
10683         WORD *length) = 0;
10684 
10685     virtual HRESULT STDMETHODCALLTYPE AddLanguageByRFC1766String(
10686         LPCWSTR_WMSDK_TYPE_SAFE language,
10687         WORD *index) = 0;
10688 
10689 };
10690 #ifdef __CRT_UUID_DECL
10691 __CRT_UUID_DECL(IWMLanguageList, 0xdf683f00, 0x2d49, 0x4d8e, 0x92,0xb7, 0xfb,0x19,0xf6,0xa0,0xdc,0x57)
10692 #endif
10693 #else
10694 typedef struct IWMLanguageListVtbl {
10695     BEGIN_INTERFACE
10696 
10697     /*** IUnknown methods ***/
10698     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10699         IWMLanguageList *This,
10700         REFIID riid,
10701         void **ppvObject);
10702 
10703     ULONG (STDMETHODCALLTYPE *AddRef)(
10704         IWMLanguageList *This);
10705 
10706     ULONG (STDMETHODCALLTYPE *Release)(
10707         IWMLanguageList *This);
10708 
10709     /*** IWMLanguageList methods ***/
10710     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
10711         IWMLanguageList *This,
10712         WORD *count);
10713 
10714     HRESULT (STDMETHODCALLTYPE *GetLanguageDetails)(
10715         IWMLanguageList *This,
10716         WORD index,
10717         WCHAR *language,
10718         WORD *length);
10719 
10720     HRESULT (STDMETHODCALLTYPE *AddLanguageByRFC1766String)(
10721         IWMLanguageList *This,
10722         LPCWSTR_WMSDK_TYPE_SAFE language,
10723         WORD *index);
10724 
10725     END_INTERFACE
10726 } IWMLanguageListVtbl;
10727 
10728 interface IWMLanguageList {
10729     CONST_VTBL IWMLanguageListVtbl* lpVtbl;
10730 };
10731 
10732 #ifdef COBJMACROS
10733 #ifndef WIDL_C_INLINE_WRAPPERS
10734 /*** IUnknown methods ***/
10735 #define IWMLanguageList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10736 #define IWMLanguageList_AddRef(This) (This)->lpVtbl->AddRef(This)
10737 #define IWMLanguageList_Release(This) (This)->lpVtbl->Release(This)
10738 /*** IWMLanguageList methods ***/
10739 #define IWMLanguageList_GetLanguageCount(This,count) (This)->lpVtbl->GetLanguageCount(This,count)
10740 #define IWMLanguageList_GetLanguageDetails(This,index,language,length) (This)->lpVtbl->GetLanguageDetails(This,index,language,length)
10741 #define IWMLanguageList_AddLanguageByRFC1766String(This,language,index) (This)->lpVtbl->AddLanguageByRFC1766String(This,language,index)
10742 #else
10743 /*** IUnknown methods ***/
10744 static FORCEINLINE HRESULT IWMLanguageList_QueryInterface(IWMLanguageList* This,REFIID riid,void **ppvObject) {
10745     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10746 }
10747 static FORCEINLINE ULONG IWMLanguageList_AddRef(IWMLanguageList* This) {
10748     return This->lpVtbl->AddRef(This);
10749 }
10750 static FORCEINLINE ULONG IWMLanguageList_Release(IWMLanguageList* This) {
10751     return This->lpVtbl->Release(This);
10752 }
10753 /*** IWMLanguageList methods ***/
10754 static FORCEINLINE HRESULT IWMLanguageList_GetLanguageCount(IWMLanguageList* This,WORD *count) {
10755     return This->lpVtbl->GetLanguageCount(This,count);
10756 }
10757 static FORCEINLINE HRESULT IWMLanguageList_GetLanguageDetails(IWMLanguageList* This,WORD index,WCHAR *language,WORD *length) {
10758     return This->lpVtbl->GetLanguageDetails(This,index,language,length);
10759 }
10760 static FORCEINLINE HRESULT IWMLanguageList_AddLanguageByRFC1766String(IWMLanguageList* This,LPCWSTR_WMSDK_TYPE_SAFE language,WORD *index) {
10761     return This->lpVtbl->AddLanguageByRFC1766String(This,language,index);
10762 }
10763 #endif
10764 #endif
10765 
10766 #endif
10767 
10768 
10769 #endif  /* __IWMLanguageList_INTERFACE_DEFINED__ */
10770 
10771 /*****************************************************************************
10772  * IWMReaderPlaylistBurn interface
10773  */
10774 #ifndef __IWMReaderPlaylistBurn_INTERFACE_DEFINED__
10775 #define __IWMReaderPlaylistBurn_INTERFACE_DEFINED__
10776 
10777 DEFINE_GUID(IID_IWMReaderPlaylistBurn, 0xf28c0300, 0x9baa, 0x4477, 0xa8,0x46, 0x17,0x44,0xd9,0xcb,0xf5,0x33);
10778 #if defined(__cplusplus) && !defined(CINTERFACE)
10779 MIDL_INTERFACE("f28c0300-9baa-4477-a846-1744d9cbf533")
10780 IWMReaderPlaylistBurn : public IUnknown
10781 {
10782     virtual HRESULT STDMETHODCALLTYPE InitPlaylistBurn(
10783         DWORD count,
10784         LPCWSTR_WMSDK_TYPE_SAFE *filenames,
10785         IWMStatusCallback *callback,
10786         void *context) = 0;
10787 
10788     virtual HRESULT STDMETHODCALLTYPE GetInitResults(
10789         DWORD count,
10790         HRESULT *stat) = 0;
10791 
10792     virtual HRESULT STDMETHODCALLTYPE Cancel(
10793         ) = 0;
10794 
10795     virtual HRESULT STDMETHODCALLTYPE EndPlaylistBurn(
10796         HRESULT result) = 0;
10797 
10798 };
10799 #ifdef __CRT_UUID_DECL
10800 __CRT_UUID_DECL(IWMReaderPlaylistBurn, 0xf28c0300, 0x9baa, 0x4477, 0xa8,0x46, 0x17,0x44,0xd9,0xcb,0xf5,0x33)
10801 #endif
10802 #else
10803 typedef struct IWMReaderPlaylistBurnVtbl {
10804     BEGIN_INTERFACE
10805 
10806     /*** IUnknown methods ***/
10807     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10808         IWMReaderPlaylistBurn *This,
10809         REFIID riid,
10810         void **ppvObject);
10811 
10812     ULONG (STDMETHODCALLTYPE *AddRef)(
10813         IWMReaderPlaylistBurn *This);
10814 
10815     ULONG (STDMETHODCALLTYPE *Release)(
10816         IWMReaderPlaylistBurn *This);
10817 
10818     /*** IWMReaderPlaylistBurn methods ***/
10819     HRESULT (STDMETHODCALLTYPE *InitPlaylistBurn)(
10820         IWMReaderPlaylistBurn *This,
10821         DWORD count,
10822         LPCWSTR_WMSDK_TYPE_SAFE *filenames,
10823         IWMStatusCallback *callback,
10824         void *context);
10825 
10826     HRESULT (STDMETHODCALLTYPE *GetInitResults)(
10827         IWMReaderPlaylistBurn *This,
10828         DWORD count,
10829         HRESULT *stat);
10830 
10831     HRESULT (STDMETHODCALLTYPE *Cancel)(
10832         IWMReaderPlaylistBurn *This);
10833 
10834     HRESULT (STDMETHODCALLTYPE *EndPlaylistBurn)(
10835         IWMReaderPlaylistBurn *This,
10836         HRESULT result);
10837 
10838     END_INTERFACE
10839 } IWMReaderPlaylistBurnVtbl;
10840 
10841 interface IWMReaderPlaylistBurn {
10842     CONST_VTBL IWMReaderPlaylistBurnVtbl* lpVtbl;
10843 };
10844 
10845 #ifdef COBJMACROS
10846 #ifndef WIDL_C_INLINE_WRAPPERS
10847 /*** IUnknown methods ***/
10848 #define IWMReaderPlaylistBurn_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10849 #define IWMReaderPlaylistBurn_AddRef(This) (This)->lpVtbl->AddRef(This)
10850 #define IWMReaderPlaylistBurn_Release(This) (This)->lpVtbl->Release(This)
10851 /*** IWMReaderPlaylistBurn methods ***/
10852 #define IWMReaderPlaylistBurn_InitPlaylistBurn(This,count,filenames,callback,context) (This)->lpVtbl->InitPlaylistBurn(This,count,filenames,callback,context)
10853 #define IWMReaderPlaylistBurn_GetInitResults(This,count,stat) (This)->lpVtbl->GetInitResults(This,count,stat)
10854 #define IWMReaderPlaylistBurn_Cancel(This) (This)->lpVtbl->Cancel(This)
10855 #define IWMReaderPlaylistBurn_EndPlaylistBurn(This,result) (This)->lpVtbl->EndPlaylistBurn(This,result)
10856 #else
10857 /*** IUnknown methods ***/
10858 static FORCEINLINE HRESULT IWMReaderPlaylistBurn_QueryInterface(IWMReaderPlaylistBurn* This,REFIID riid,void **ppvObject) {
10859     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
10860 }
10861 static FORCEINLINE ULONG IWMReaderPlaylistBurn_AddRef(IWMReaderPlaylistBurn* This) {
10862     return This->lpVtbl->AddRef(This);
10863 }
10864 static FORCEINLINE ULONG IWMReaderPlaylistBurn_Release(IWMReaderPlaylistBurn* This) {
10865     return This->lpVtbl->Release(This);
10866 }
10867 /*** IWMReaderPlaylistBurn methods ***/
10868 static FORCEINLINE HRESULT IWMReaderPlaylistBurn_InitPlaylistBurn(IWMReaderPlaylistBurn* This,DWORD count,LPCWSTR_WMSDK_TYPE_SAFE *filenames,IWMStatusCallback *callback,void *context) {
10869     return This->lpVtbl->InitPlaylistBurn(This,count,filenames,callback,context);
10870 }
10871 static FORCEINLINE HRESULT IWMReaderPlaylistBurn_GetInitResults(IWMReaderPlaylistBurn* This,DWORD count,HRESULT *stat) {
10872     return This->lpVtbl->GetInitResults(This,count,stat);
10873 }
10874 static FORCEINLINE HRESULT IWMReaderPlaylistBurn_Cancel(IWMReaderPlaylistBurn* This) {
10875     return This->lpVtbl->Cancel(This);
10876 }
10877 static FORCEINLINE HRESULT IWMReaderPlaylistBurn_EndPlaylistBurn(IWMReaderPlaylistBurn* This,HRESULT result) {
10878     return This->lpVtbl->EndPlaylistBurn(This,result);
10879 }
10880 #endif
10881 #endif
10882 
10883 #endif
10884 
10885 
10886 #endif  /* __IWMReaderPlaylistBurn_INTERFACE_DEFINED__ */
10887 
10888 /*****************************************************************************
10889  * IWMPropertyVault interface
10890  */
10891 #ifndef __IWMPropertyVault_INTERFACE_DEFINED__
10892 #define __IWMPropertyVault_INTERFACE_DEFINED__
10893 
10894 DEFINE_GUID(IID_IWMPropertyVault, 0x72995a79, 0x5090, 0x42a4, 0x9c,0x8c, 0xd9,0xd0,0xb6,0xd3,0x4b,0xe5);
10895 #if defined(__cplusplus) && !defined(CINTERFACE)
10896 MIDL_INTERFACE("72995a79-5090-42a4-9c8c-d9d0b6d34be5")
10897 IWMPropertyVault : public IUnknown
10898 {
10899     virtual HRESULT STDMETHODCALLTYPE GetPropertyCount(
10900         DWORD *count) = 0;
10901 
10902     virtual HRESULT STDMETHODCALLTYPE GetPropertyByName(
10903         const WCHAR *name,
10904         WMT_ATTR_DATATYPE *type,
10905         BYTE *value,
10906         DWORD *size) = 0;
10907 
10908     virtual HRESULT STDMETHODCALLTYPE SetProperty(
10909         const WCHAR *name,
10910         WMT_ATTR_DATATYPE type,
10911         BYTE *value,
10912         DWORD size) = 0;
10913 
10914     virtual HRESULT STDMETHODCALLTYPE GetPropertyByIndex(
10915         DWORD index,
10916         WCHAR *name,
10917         DWORD *length,
10918         WMT_ATTR_DATATYPE *type,
10919         BYTE *value,
10920         DWORD *size) = 0;
10921 
10922     virtual HRESULT STDMETHODCALLTYPE CopyPropertiesFrom(
10923         IWMPropertyVault *vault) = 0;
10924 
10925     virtual HRESULT STDMETHODCALLTYPE Clear(
10926         ) = 0;
10927 
10928 };
10929 #ifdef __CRT_UUID_DECL
10930 __CRT_UUID_DECL(IWMPropertyVault, 0x72995a79, 0x5090, 0x42a4, 0x9c,0x8c, 0xd9,0xd0,0xb6,0xd3,0x4b,0xe5)
10931 #endif
10932 #else
10933 typedef struct IWMPropertyVaultVtbl {
10934     BEGIN_INTERFACE
10935 
10936     /*** IUnknown methods ***/
10937     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
10938         IWMPropertyVault *This,
10939         REFIID riid,
10940         void **ppvObject);
10941 
10942     ULONG (STDMETHODCALLTYPE *AddRef)(
10943         IWMPropertyVault *This);
10944 
10945     ULONG (STDMETHODCALLTYPE *Release)(
10946         IWMPropertyVault *This);
10947 
10948     /*** IWMPropertyVault methods ***/
10949     HRESULT (STDMETHODCALLTYPE *GetPropertyCount)(
10950         IWMPropertyVault *This,
10951         DWORD *count);
10952 
10953     HRESULT (STDMETHODCALLTYPE *GetPropertyByName)(
10954         IWMPropertyVault *This,
10955         const WCHAR *name,
10956         WMT_ATTR_DATATYPE *type,
10957         BYTE *value,
10958         DWORD *size);
10959 
10960     HRESULT (STDMETHODCALLTYPE *SetProperty)(
10961         IWMPropertyVault *This,
10962         const WCHAR *name,
10963         WMT_ATTR_DATATYPE type,
10964         BYTE *value,
10965         DWORD size);
10966 
10967     HRESULT (STDMETHODCALLTYPE *GetPropertyByIndex)(
10968         IWMPropertyVault *This,
10969         DWORD index,
10970         WCHAR *name,
10971         DWORD *length,
10972         WMT_ATTR_DATATYPE *type,
10973         BYTE *value,
10974         DWORD *size);
10975 
10976     HRESULT (STDMETHODCALLTYPE *CopyPropertiesFrom)(
10977         IWMPropertyVault *This,
10978         IWMPropertyVault *vault);
10979 
10980     HRESULT (STDMETHODCALLTYPE *Clear)(
10981         IWMPropertyVault *This);
10982 
10983     END_INTERFACE
10984 } IWMPropertyVaultVtbl;
10985 
10986 interface IWMPropertyVault {
10987     CONST_VTBL IWMPropertyVaultVtbl* lpVtbl;
10988 };
10989 
10990 #ifdef COBJMACROS
10991 #ifndef WIDL_C_INLINE_WRAPPERS
10992 /*** IUnknown methods ***/
10993 #define IWMPropertyVault_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
10994 #define IWMPropertyVault_AddRef(This) (This)->lpVtbl->AddRef(This)
10995 #define IWMPropertyVault_Release(This) (This)->lpVtbl->Release(This)
10996 /*** IWMPropertyVault methods ***/
10997 #define IWMPropertyVault_GetPropertyCount(This,count) (This)->lpVtbl->GetPropertyCount(This,count)
10998 #define IWMPropertyVault_GetPropertyByName(This,name,type,value,size) (This)->lpVtbl->GetPropertyByName(This,name,type,value,size)
10999 #define IWMPropertyVault_SetProperty(This,name,type,value,size) (This)->lpVtbl->SetProperty(This,name,type,value,size)
11000 #define IWMPropertyVault_GetPropertyByIndex(This,index,name,length,type,value,size) (This)->lpVtbl->GetPropertyByIndex(This,index,name,length,type,value,size)
11001 #define IWMPropertyVault_CopyPropertiesFrom(This,vault) (This)->lpVtbl->CopyPropertiesFrom(This,vault)
11002 #define IWMPropertyVault_Clear(This) (This)->lpVtbl->Clear(This)
11003 #else
11004 /*** IUnknown methods ***/
11005 static FORCEINLINE HRESULT IWMPropertyVault_QueryInterface(IWMPropertyVault* This,REFIID riid,void **ppvObject) {
11006     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11007 }
11008 static FORCEINLINE ULONG IWMPropertyVault_AddRef(IWMPropertyVault* This) {
11009     return This->lpVtbl->AddRef(This);
11010 }
11011 static FORCEINLINE ULONG IWMPropertyVault_Release(IWMPropertyVault* This) {
11012     return This->lpVtbl->Release(This);
11013 }
11014 /*** IWMPropertyVault methods ***/
11015 static FORCEINLINE HRESULT IWMPropertyVault_GetPropertyCount(IWMPropertyVault* This,DWORD *count) {
11016     return This->lpVtbl->GetPropertyCount(This,count);
11017 }
11018 static FORCEINLINE HRESULT IWMPropertyVault_GetPropertyByName(IWMPropertyVault* This,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
11019     return This->lpVtbl->GetPropertyByName(This,name,type,value,size);
11020 }
11021 static FORCEINLINE HRESULT IWMPropertyVault_SetProperty(IWMPropertyVault* This,const WCHAR *name,WMT_ATTR_DATATYPE type,BYTE *value,DWORD size) {
11022     return This->lpVtbl->SetProperty(This,name,type,value,size);
11023 }
11024 static FORCEINLINE HRESULT IWMPropertyVault_GetPropertyByIndex(IWMPropertyVault* This,DWORD index,WCHAR *name,DWORD *length,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
11025     return This->lpVtbl->GetPropertyByIndex(This,index,name,length,type,value,size);
11026 }
11027 static FORCEINLINE HRESULT IWMPropertyVault_CopyPropertiesFrom(IWMPropertyVault* This,IWMPropertyVault *vault) {
11028     return This->lpVtbl->CopyPropertiesFrom(This,vault);
11029 }
11030 static FORCEINLINE HRESULT IWMPropertyVault_Clear(IWMPropertyVault* This) {
11031     return This->lpVtbl->Clear(This);
11032 }
11033 #endif
11034 #endif
11035 
11036 #endif
11037 
11038 
11039 #endif  /* __IWMPropertyVault_INTERFACE_DEFINED__ */
11040 
11041 /*****************************************************************************
11042  * IWMWriterPreprocess interface
11043  */
11044 #ifndef __IWMWriterPreprocess_INTERFACE_DEFINED__
11045 #define __IWMWriterPreprocess_INTERFACE_DEFINED__
11046 
11047 DEFINE_GUID(IID_IWMWriterPreprocess, 0xfc54a285, 0x38c4, 0x45b5, 0xaa,0x23, 0x85,0xb9,0xf7,0xcb,0x42,0x4b);
11048 #if defined(__cplusplus) && !defined(CINTERFACE)
11049 MIDL_INTERFACE("fc54a285-38c4-45b5-aa23-85b9f7cb424b")
11050 IWMWriterPreprocess : public IUnknown
11051 {
11052     virtual HRESULT STDMETHODCALLTYPE GetMaxPreprocessingPasses(
11053         DWORD input,
11054         DWORD flags,
11055         DWORD *passes) = 0;
11056 
11057     virtual HRESULT STDMETHODCALLTYPE SetNumPreprocessingPasses(
11058         DWORD input,
11059         DWORD flags,
11060         DWORD passes) = 0;
11061 
11062     virtual HRESULT STDMETHODCALLTYPE BeginPreprocessingPass(
11063         DWORD input,
11064         DWORD flags) = 0;
11065 
11066     virtual HRESULT STDMETHODCALLTYPE PreprocessSample(
11067         DWORD input,
11068         QWORD sample_time,
11069         DWORD flags,
11070         INSSBuffer *sample) = 0;
11071 
11072     virtual HRESULT STDMETHODCALLTYPE EndPreprocessingPass(
11073         DWORD input,
11074         DWORD flags) = 0;
11075 
11076 };
11077 #ifdef __CRT_UUID_DECL
11078 __CRT_UUID_DECL(IWMWriterPreprocess, 0xfc54a285, 0x38c4, 0x45b5, 0xaa,0x23, 0x85,0xb9,0xf7,0xcb,0x42,0x4b)
11079 #endif
11080 #else
11081 typedef struct IWMWriterPreprocessVtbl {
11082     BEGIN_INTERFACE
11083 
11084     /*** IUnknown methods ***/
11085     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
11086         IWMWriterPreprocess *This,
11087         REFIID riid,
11088         void **ppvObject);
11089 
11090     ULONG (STDMETHODCALLTYPE *AddRef)(
11091         IWMWriterPreprocess *This);
11092 
11093     ULONG (STDMETHODCALLTYPE *Release)(
11094         IWMWriterPreprocess *This);
11095 
11096     /*** IWMWriterPreprocess methods ***/
11097     HRESULT (STDMETHODCALLTYPE *GetMaxPreprocessingPasses)(
11098         IWMWriterPreprocess *This,
11099         DWORD input,
11100         DWORD flags,
11101         DWORD *passes);
11102 
11103     HRESULT (STDMETHODCALLTYPE *SetNumPreprocessingPasses)(
11104         IWMWriterPreprocess *This,
11105         DWORD input,
11106         DWORD flags,
11107         DWORD passes);
11108 
11109     HRESULT (STDMETHODCALLTYPE *BeginPreprocessingPass)(
11110         IWMWriterPreprocess *This,
11111         DWORD input,
11112         DWORD flags);
11113 
11114     HRESULT (STDMETHODCALLTYPE *PreprocessSample)(
11115         IWMWriterPreprocess *This,
11116         DWORD input,
11117         QWORD sample_time,
11118         DWORD flags,
11119         INSSBuffer *sample);
11120 
11121     HRESULT (STDMETHODCALLTYPE *EndPreprocessingPass)(
11122         IWMWriterPreprocess *This,
11123         DWORD input,
11124         DWORD flags);
11125 
11126     END_INTERFACE
11127 } IWMWriterPreprocessVtbl;
11128 
11129 interface IWMWriterPreprocess {
11130     CONST_VTBL IWMWriterPreprocessVtbl* lpVtbl;
11131 };
11132 
11133 #ifdef COBJMACROS
11134 #ifndef WIDL_C_INLINE_WRAPPERS
11135 /*** IUnknown methods ***/
11136 #define IWMWriterPreprocess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
11137 #define IWMWriterPreprocess_AddRef(This) (This)->lpVtbl->AddRef(This)
11138 #define IWMWriterPreprocess_Release(This) (This)->lpVtbl->Release(This)
11139 /*** IWMWriterPreprocess methods ***/
11140 #define IWMWriterPreprocess_GetMaxPreprocessingPasses(This,input,flags,passes) (This)->lpVtbl->GetMaxPreprocessingPasses(This,input,flags,passes)
11141 #define IWMWriterPreprocess_SetNumPreprocessingPasses(This,input,flags,passes) (This)->lpVtbl->SetNumPreprocessingPasses(This,input,flags,passes)
11142 #define IWMWriterPreprocess_BeginPreprocessingPass(This,input,flags) (This)->lpVtbl->BeginPreprocessingPass(This,input,flags)
11143 #define IWMWriterPreprocess_PreprocessSample(This,input,sample_time,flags,sample) (This)->lpVtbl->PreprocessSample(This,input,sample_time,flags,sample)
11144 #define IWMWriterPreprocess_EndPreprocessingPass(This,input,flags) (This)->lpVtbl->EndPreprocessingPass(This,input,flags)
11145 #else
11146 /*** IUnknown methods ***/
11147 static FORCEINLINE HRESULT IWMWriterPreprocess_QueryInterface(IWMWriterPreprocess* This,REFIID riid,void **ppvObject) {
11148     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
11149 }
11150 static FORCEINLINE ULONG IWMWriterPreprocess_AddRef(IWMWriterPreprocess* This) {
11151     return This->lpVtbl->AddRef(This);
11152 }
11153 static FORCEINLINE ULONG IWMWriterPreprocess_Release(IWMWriterPreprocess* This) {
11154     return This->lpVtbl->Release(This);
11155 }
11156 /*** IWMWriterPreprocess methods ***/
11157 static FORCEINLINE HRESULT IWMWriterPreprocess_GetMaxPreprocessingPasses(IWMWriterPreprocess* This,DWORD input,DWORD flags,DWORD *passes) {
11158     return This->lpVtbl->GetMaxPreprocessingPasses(This,input,flags,passes);
11159 }
11160 static FORCEINLINE HRESULT IWMWriterPreprocess_SetNumPreprocessingPasses(IWMWriterPreprocess* This,DWORD input,DWORD flags,DWORD passes) {
11161     return This->lpVtbl->SetNumPreprocessingPasses(This,input,flags,passes);
11162 }
11163 static FORCEINLINE HRESULT IWMWriterPreprocess_BeginPreprocessingPass(IWMWriterPreprocess* This,DWORD input,DWORD flags) {
11164     return This->lpVtbl->BeginPreprocessingPass(This,input,flags);
11165 }
11166 static FORCEINLINE HRESULT IWMWriterPreprocess_PreprocessSample(IWMWriterPreprocess* This,DWORD input,QWORD sample_time,DWORD flags,INSSBuffer *sample) {
11167     return This->lpVtbl->PreprocessSample(This,input,sample_time,flags,sample);
11168 }
11169 static FORCEINLINE HRESULT IWMWriterPreprocess_EndPreprocessingPass(IWMWriterPreprocess* This,DWORD input,DWORD flags) {
11170     return This->lpVtbl->EndPreprocessingPass(This,input,flags);
11171 }
11172 #endif
11173 #endif
11174 
11175 #endif
11176 
11177 
11178 #endif  /* __IWMWriterPreprocess_INTERFACE_DEFINED__ */
11179 
11180 HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);
11181 HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);
11182 EXTERN_GUID(WMMEDIASUBTYPE_Base,   0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11183 EXTERN_GUID(WMMEDIATYPE_Video,     0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11184 EXTERN_GUID(WMMEDIASUBTYPE_RGB1,   0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11185 EXTERN_GUID(WMMEDIASUBTYPE_RGB4,   0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11186 EXTERN_GUID(WMMEDIASUBTYPE_RGB8,   0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11187 EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11188 EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11189 EXTERN_GUID(WMMEDIASUBTYPE_RGB24,  0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11190 EXTERN_GUID(WMMEDIASUBTYPE_RGB32,  0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
11191 EXTERN_GUID(WMMEDIASUBTYPE_I420,   0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11192 EXTERN_GUID(WMMEDIASUBTYPE_IYUV,   0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11193 EXTERN_GUID(WMMEDIASUBTYPE_YV12,   0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11194 EXTERN_GUID(WMMEDIASUBTYPE_YUY2,   0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11195 EXTERN_GUID(WMMEDIASUBTYPE_P422,   0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11196 EXTERN_GUID(WMMEDIASUBTYPE_UYVY,   0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11197 EXTERN_GUID(WMMEDIASUBTYPE_YVYU,   0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11198 EXTERN_GUID(WMMEDIASUBTYPE_YVU9,   0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11199 EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);
11200 EXTERN_GUID(WMMEDIASUBTYPE_MP43,   0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11201 EXTERN_GUID(WMMEDIASUBTYPE_MP4S,   0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11202 EXTERN_GUID(WMMEDIASUBTYPE_M4S2,   0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11203 EXTERN_GUID(WMMEDIASUBTYPE_WMV1,   0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11204 EXTERN_GUID(WMMEDIASUBTYPE_WMV2,   0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11205 EXTERN_GUID(WMMEDIASUBTYPE_MSS1,   0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11206 EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);
11207 EXTERN_GUID(WMMEDIATYPE_Audio,     0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11208 EXTERN_GUID(WMMEDIASUBTYPE_PCM,    0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11209 EXTERN_GUID(WMMEDIASUBTYPE_DRM,    0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11210 EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9,        0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11211 EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11212 EXTERN_GUID(WMMEDIASUBTYPE_MSS2,   0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11213 EXTERN_GUID(WMMEDIASUBTYPE_WMSP1,  0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11214 EXTERN_GUID(WMMEDIASUBTYPE_WMSP2,  0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11215 EXTERN_GUID(WMMEDIASUBTYPE_WMV3,   0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11216 EXTERN_GUID(WMMEDIASUBTYPE_WMVP,   0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11217 EXTERN_GUID(WMMEDIASUBTYPE_WVP2,   0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11218 EXTERN_GUID(WMMEDIASUBTYPE_WMVA,   0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11219 EXTERN_GUID(WMMEDIASUBTYPE_WVC1,   0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
11220 /* Begin additional prototypes for all interfaces */
11221 
11222 
11223 /* End additional prototypes */
11224 
11225 #ifdef __cplusplus
11226 }
11227 #endif
11228 
11229 #endif /* __wmsdkidl_h__ */
11230