Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 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 #endif
     24 
     25 #ifndef __IWMReaderCallback_FWD_DEFINED__
     26 #define __IWMReaderCallback_FWD_DEFINED__
     27 typedef interface IWMReaderCallback IWMReaderCallback;
     28 #endif
     29 
     30 #ifndef __IWMStreamList_FWD_DEFINED__
     31 #define __IWMStreamList_FWD_DEFINED__
     32 typedef interface IWMStreamList IWMStreamList;
     33 #endif
     34 
     35 #ifndef __IWMMutualExclusion_FWD_DEFINED__
     36 #define __IWMMutualExclusion_FWD_DEFINED__
     37 typedef interface IWMMutualExclusion IWMMutualExclusion;
     38 #endif
     39 
     40 #ifndef __IWMStreamConfig_FWD_DEFINED__
     41 #define __IWMStreamConfig_FWD_DEFINED__
     42 typedef interface IWMStreamConfig IWMStreamConfig;
     43 #endif
     44 
     45 #ifndef __IWMProfile_FWD_DEFINED__
     46 #define __IWMProfile_FWD_DEFINED__
     47 typedef interface IWMProfile IWMProfile;
     48 #endif
     49 
     50 #ifndef __IWMProfileManager_FWD_DEFINED__
     51 #define __IWMProfileManager_FWD_DEFINED__
     52 typedef interface IWMProfileManager IWMProfileManager;
     53 #endif
     54 
     55 #ifndef __IWMMediaProps_FWD_DEFINED__
     56 #define __IWMMediaProps_FWD_DEFINED__
     57 typedef interface IWMMediaProps IWMMediaProps;
     58 #endif
     59 
     60 #ifndef __IWMOutputMediaProps_FWD_DEFINED__
     61 #define __IWMOutputMediaProps_FWD_DEFINED__
     62 typedef interface IWMOutputMediaProps IWMOutputMediaProps;
     63 #endif
     64 
     65 #ifndef __IWMMetadataEditor_FWD_DEFINED__
     66 #define __IWMMetadataEditor_FWD_DEFINED__
     67 typedef interface IWMMetadataEditor IWMMetadataEditor;
     68 #endif
     69 
     70 #ifndef __IWMReader_FWD_DEFINED__
     71 #define __IWMReader_FWD_DEFINED__
     72 typedef interface IWMReader IWMReader;
     73 #endif
     74 
     75 #ifndef __IWMPlayerHook_FWD_DEFINED__
     76 #define __IWMPlayerHook_FWD_DEFINED__
     77 typedef interface IWMPlayerHook IWMPlayerHook;
     78 #endif
     79 
     80 #ifndef __IWMReaderAdvanced_FWD_DEFINED__
     81 #define __IWMReaderAdvanced_FWD_DEFINED__
     82 typedef interface IWMReaderAdvanced IWMReaderAdvanced;
     83 #endif
     84 
     85 #ifndef __IWMReaderAdvanced2_FWD_DEFINED__
     86 #define __IWMReaderAdvanced2_FWD_DEFINED__
     87 typedef interface IWMReaderAdvanced2 IWMReaderAdvanced2;
     88 #endif
     89 
     90 #ifndef __IWMReaderAdvanced3_FWD_DEFINED__
     91 #define __IWMReaderAdvanced3_FWD_DEFINED__
     92 typedef interface IWMReaderAdvanced3 IWMReaderAdvanced3;
     93 #endif
     94 
     95 #ifndef __IWMReaderAdvanced4_FWD_DEFINED__
     96 #define __IWMReaderAdvanced4_FWD_DEFINED__
     97 typedef interface IWMReaderAdvanced4 IWMReaderAdvanced4;
     98 #endif
     99 
    100 #ifndef __IWMReaderAdvanced5_FWD_DEFINED__
    101 #define __IWMReaderAdvanced5_FWD_DEFINED__
    102 typedef interface IWMReaderAdvanced5 IWMReaderAdvanced5;
    103 #endif
    104 
    105 #ifndef __IWMReaderAdvanced6_FWD_DEFINED__
    106 #define __IWMReaderAdvanced6_FWD_DEFINED__
    107 typedef interface IWMReaderAdvanced6 IWMReaderAdvanced6;
    108 #endif
    109 
    110 #ifndef __IWMSyncReader_FWD_DEFINED__
    111 #define __IWMSyncReader_FWD_DEFINED__
    112 typedef interface IWMSyncReader IWMSyncReader;
    113 #endif
    114 
    115 #ifndef __IWMInputMediaProps_FWD_DEFINED__
    116 #define __IWMInputMediaProps_FWD_DEFINED__
    117 typedef interface IWMInputMediaProps IWMInputMediaProps;
    118 #endif
    119 
    120 #ifndef __IWMWriterSink_FWD_DEFINED__
    121 #define __IWMWriterSink_FWD_DEFINED__
    122 typedef interface IWMWriterSink IWMWriterSink;
    123 #endif
    124 
    125 #ifndef __IWMWriter_FWD_DEFINED__
    126 #define __IWMWriter_FWD_DEFINED__
    127 typedef interface IWMWriter IWMWriter;
    128 #endif
    129 
    130 #ifndef __IWMWriterAdvanced_FWD_DEFINED__
    131 #define __IWMWriterAdvanced_FWD_DEFINED__
    132 typedef interface IWMWriterAdvanced IWMWriterAdvanced;
    133 #endif
    134 
    135 #ifndef __IWMWriterAdvanced2_FWD_DEFINED__
    136 #define __IWMWriterAdvanced2_FWD_DEFINED__
    137 typedef interface IWMWriterAdvanced2 IWMWriterAdvanced2;
    138 #endif
    139 
    140 #ifndef __IWMWriterAdvanced3_FWD_DEFINED__
    141 #define __IWMWriterAdvanced3_FWD_DEFINED__
    142 typedef interface IWMWriterAdvanced3 IWMWriterAdvanced3;
    143 #endif
    144 
    145 /* Headers for imported files */
    146 
    147 #include <oaidl.h>
    148 #include <wmsbuffer.h>
    149 
    150 #ifdef __cplusplus
    151 extern "C" {
    152 #endif
    153 
    154 typedef UINT64 QWORD;
    155 typedef struct _WMMediaType {
    156     GUID majortype;
    157     GUID subtype;
    158     WINBOOL bFixedSizeSamples;
    159     WINBOOL bTemporalCompression;
    160     ULONG lSampleSize;
    161     GUID formattype;
    162     IUnknown *pUnk;
    163     ULONG cbFormat;
    164     BYTE *pbFormat;
    165 } WM_MEDIA_TYPE;
    166 typedef struct _WMWriterStatistics {
    167     QWORD qwSampleCount;
    168     QWORD qwByteCount;
    169     QWORD qwDroppedSampleCount;
    170     QWORD qwDroppedByteCount;
    171     DWORD dwCurrentBitrate;
    172     DWORD dwAverageBitrate;
    173     DWORD dwExpectedBitrate;
    174     DWORD dwCurrentSampleRate;
    175     DWORD dwAverageSampleRate;
    176     DWORD dwExpectedSampleRate;
    177 } WM_WRITER_STATISTICS;
    178 typedef struct _WMWriterStatisticsEx {
    179     DWORD dwBitratePlusOverhead;
    180     DWORD dwCurrentSampleDropRateInQueue;
    181     DWORD dwCurrentSampleDropRateInCodec;
    182     DWORD dwCurrentSampleDropRateInMultiplexer;
    183     DWORD dwTotalSampleDropsInQueue;
    184     DWORD dwTotalSampleDropsInCodec;
    185     DWORD dwTotalSampleDropsInMultiplexer;
    186 } WM_WRITER_STATISTICS_EX;
    187 typedef struct _WMReaderStatistics {
    188     DWORD cbSize;
    189     DWORD dwBandwidth;
    190     DWORD cPacketsReceived;
    191     DWORD cPacketsRecovered;
    192     DWORD cPacketsLost;
    193     WORD wQuality;
    194 } WM_READER_STATISTICS;
    195 typedef struct _WMReaderClientInfo {
    196     DWORD cbSize;
    197     WCHAR *wszLang;
    198     WCHAR *wszBrowserUserAgent;
    199     WCHAR *wszBrowserWebPage;
    200     QWORD qwReserved;
    201     LPARAM *pReserved;
    202     WCHAR *wszHostExe;
    203     QWORD qwHostVersion;
    204     WCHAR *wszPlayerUserAgent;
    205 } WM_READER_CLIENTINFO;
    206 typedef enum WMT_ATTR_DATATYPE {
    207     WMT_TYPE_DWORD = 0,
    208     WMT_TYPE_STRING = 1,
    209     WMT_TYPE_BINARY = 2,
    210     WMT_TYPE_BOOL = 3,
    211     WMT_TYPE_QWORD = 4,
    212     WMT_TYPE_WORD = 5,
    213     WMT_TYPE_GUID = 6
    214 } WMT_ATTR_DATATYPE;
    215 typedef enum WMT_STATUS {
    216     WMT_ERROR = 0,
    217     WMT_OPENED = 1,
    218     WMT_BUFFERING_START = 2,
    219     WMT_BUFFERING_STOP = 3,
    220     WMT_EOF = 4,
    221     WMT_END_OF_FILE = 4,
    222     WMT_END_OF_SEGMENT = 5,
    223     WMT_END_OF_STREAMING = 6,
    224     WMT_LOCATING = 7,
    225     WMT_CONNECTING = 8,
    226     WMT_NO_RIGHTS = 9,
    227     WMT_MISSING_CODEC = 10,
    228     WMT_STARTED = 11,
    229     WMT_STOPPED = 12,
    230     WMT_CLOSED = 13,
    231     WMT_STRIDING = 14,
    232     WMT_TIMER = 15,
    233     WMT_INDEX_PROGRESS = 16,
    234     WMT_SAVEAS_START = 17,
    235     WMT_SAVEAS_STOP = 18,
    236     WMT_NEW_SOURCEFLAGS = 19,
    237     WMT_NEW_METADATA = 20,
    238     WMT_BACKUPRESTORE_BEGIN = 21,
    239     WMT_SOURCE_SWITCH = 22,
    240     WMT_ACQUIRE_LICENSE = 23,
    241     WMT_INDIVIDUALIZE = 24,
    242     WMT_NEEDS_INDIVIDUALIZATION = 25,
    243     WMT_NO_RIGHTS_EX = 26,
    244     WMT_BACKUPRESTORE_END = 27,
    245     WMT_BACKUPRESTORE_CONNECTING = 28,
    246     WMT_BACKUPRESTORE_DISCONNECTING = 29,
    247     WMT_ERROR_WITHURL = 30,
    248     WMT_RESTRICTED_LICENSE = 31,
    249     WMT_CLIENT_CONNECT = 32,
    250     WMT_CLIENT_DISCONNECT = 33,
    251     WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
    252     WMT_RECONNECT_START = 35,
    253     WMT_RECONNECT_END = 36,
    254     WMT_CLIENT_CONNECT_EX = 37,
    255     WMT_CLIENT_DISCONNECT_EX = 38,
    256     WMT_SET_FEC_SPAN = 39,
    257     WMT_PREROLL_READY = 40,
    258     WMT_PREROLL_COMPLETE = 41,
    259     WMT_CLIENT_PROPERTIES = 42,
    260     WMT_LICENSEURL_SIGNATURE_STATE = 43,
    261     WMT_INIT_PLAYLIST_BURN = 44,
    262     WMT_TRANSCRYPTOR_INIT = 45,
    263     WMT_TRANSCRYPTOR_SEEKED = 46,
    264     WMT_TRANSCRYPTOR_READ = 47,
    265     WMT_TRANSCRYPTOR_CLOSED = 48,
    266     WMT_PROXIMITY_RESULT = 49,
    267     WMT_PROXIMITY_COMPLETED = 50,
    268     WMT_CONTENT_ENABLER = 51
    269 } WMT_STATUS;
    270 typedef enum WMT_STREAM_SELECTION {
    271     WMT_OFF = 0,
    272     WMT_CLEANPOINT_ONLY = 1,
    273     WMT_ON = 2
    274 } WMT_STREAM_SELECTION;
    275 typedef enum WMT_VERSION {
    276     WMT_VER_4_0 = 0x40000,
    277     WMT_VER_7_0 = 0x70000,
    278     WMT_VER_8_0 = 0x80000,
    279     WMT_VER_9_0 = 0x90000
    280 } WMT_VERSION;
    281 typedef enum WMT_PLAY_MODE {
    282     WMT_PLAY_MODE_AUTOSELECT = 0,
    283     WMT_PLAY_MODE_LOCAL = 1,
    284     WMT_PLAY_MODE_DOWNLOAD = 2,
    285     WMT_PLAY_MODE_STREAMING = 3
    286 } WMT_PLAY_MODE;
    287 typedef enum tagWMT_OFFSET_FORMAT {
    288     WMT_OFFSET_FORMAT_100NS = 0,
    289     WMT_OFFSET_FORMAT_FRAME_NUMBERS = 1,
    290     WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = 2,
    291     WMT_OFFSET_FORMAT_TIMECODE = 3,
    292     WMT_OFFSET_FORMAT_100NS_APPROXIMATE = 4
    293 } WMT_OFFSET_FORMAT;
    294 typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE;
    295 /*****************************************************************************
    296  * IWMStatusCallback interface
    297  */
    298 #ifndef __IWMStatusCallback_INTERFACE_DEFINED__
    299 #define __IWMStatusCallback_INTERFACE_DEFINED__
    300 
    301 DEFINE_GUID(IID_IWMStatusCallback, 0x6d7cdc70, 0x9888, 0x11d3, 0x8e,0xdc, 0x00,0xc0,0x4f,0x61,0x09,0xcf);
    302 #if defined(__cplusplus) && !defined(CINTERFACE)
    303 MIDL_INTERFACE("6d7cdc70-9888-11d3-8edc-00c04f6109cf")
    304 IWMStatusCallback : public IUnknown
    305 {
    306     virtual HRESULT STDMETHODCALLTYPE OnStatus(
    307         WMT_STATUS Status,
    308         HRESULT hr,
    309         WMT_ATTR_DATATYPE dwType,
    310         BYTE *pValue,
    311         void *pvContext) = 0;
    312 
    313 };
    314 #ifdef __CRT_UUID_DECL
    315 __CRT_UUID_DECL(IWMStatusCallback, 0x6d7cdc70, 0x9888, 0x11d3, 0x8e,0xdc, 0x00,0xc0,0x4f,0x61,0x09,0xcf)
    316 #endif
    317 #else
    318 typedef struct IWMStatusCallbackVtbl {
    319     BEGIN_INTERFACE
    320 
    321     /*** IUnknown methods ***/
    322     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    323         IWMStatusCallback* This,
    324         REFIID riid,
    325         void **ppvObject);
    326 
    327     ULONG (STDMETHODCALLTYPE *AddRef)(
    328         IWMStatusCallback* This);
    329 
    330     ULONG (STDMETHODCALLTYPE *Release)(
    331         IWMStatusCallback* This);
    332 
    333     /*** IWMStatusCallback methods ***/
    334     HRESULT (STDMETHODCALLTYPE *OnStatus)(
    335         IWMStatusCallback* This,
    336         WMT_STATUS Status,
    337         HRESULT hr,
    338         WMT_ATTR_DATATYPE dwType,
    339         BYTE *pValue,
    340         void *pvContext);
    341 
    342     END_INTERFACE
    343 } IWMStatusCallbackVtbl;
    344 interface IWMStatusCallback {
    345     CONST_VTBL IWMStatusCallbackVtbl* lpVtbl;
    346 };
    347 
    348 #ifdef COBJMACROS
    349 #ifndef WIDL_C_INLINE_WRAPPERS
    350 /*** IUnknown methods ***/
    351 #define IWMStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    352 #define IWMStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
    353 #define IWMStatusCallback_Release(This) (This)->lpVtbl->Release(This)
    354 /*** IWMStatusCallback methods ***/
    355 #define IWMStatusCallback_OnStatus(This,Status,hr,dwType,pValue,pvContext) (This)->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext)
    356 #else
    357 /*** IUnknown methods ***/
    358 static FORCEINLINE HRESULT IWMStatusCallback_QueryInterface(IWMStatusCallback* This,REFIID riid,void **ppvObject) {
    359     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    360 }
    361 static FORCEINLINE ULONG IWMStatusCallback_AddRef(IWMStatusCallback* This) {
    362     return This->lpVtbl->AddRef(This);
    363 }
    364 static FORCEINLINE ULONG IWMStatusCallback_Release(IWMStatusCallback* This) {
    365     return This->lpVtbl->Release(This);
    366 }
    367 /*** IWMStatusCallback methods ***/
    368 static FORCEINLINE HRESULT IWMStatusCallback_OnStatus(IWMStatusCallback* This,WMT_STATUS Status,HRESULT hr,WMT_ATTR_DATATYPE dwType,BYTE *pValue,void *pvContext) {
    369     return This->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext);
    370 }
    371 #endif
    372 #endif
    373 
    374 #endif
    375 
    376 HRESULT STDMETHODCALLTYPE IWMStatusCallback_OnStatus_Proxy(
    377     IWMStatusCallback* This,
    378     WMT_STATUS Status,
    379     HRESULT hr,
    380     WMT_ATTR_DATATYPE dwType,
    381     BYTE *pValue,
    382     void *pvContext);
    383 void __RPC_STUB IWMStatusCallback_OnStatus_Stub(
    384     IRpcStubBuffer* This,
    385     IRpcChannelBuffer* pRpcChannelBuffer,
    386     PRPC_MESSAGE pRpcMessage,
    387     DWORD* pdwStubPhase);
    388 
    389 #endif  /* __IWMStatusCallback_INTERFACE_DEFINED__ */
    390 
    391 /*****************************************************************************
    392  * IWMReaderCallback interface
    393  */
    394 #ifndef __IWMReaderCallback_INTERFACE_DEFINED__
    395 #define __IWMReaderCallback_INTERFACE_DEFINED__
    396 
    397 DEFINE_GUID(IID_IWMReaderCallback, 0x96406bd8, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
    398 #if defined(__cplusplus) && !defined(CINTERFACE)
    399 MIDL_INTERFACE("96406bd8-2b2b-11d3-b36b-00c04f6108ff")
    400 IWMReaderCallback : public IWMStatusCallback
    401 {
    402     virtual HRESULT STDMETHODCALLTYPE OnSample(
    403         DWORD dwOutputNum,
    404         QWORD cnsSampleTime,
    405         QWORD cnsSampleDuration,
    406         DWORD dwFlags,
    407         INSSBuffer *pSample,
    408         void *pvContext) = 0;
    409 
    410 };
    411 #ifdef __CRT_UUID_DECL
    412 __CRT_UUID_DECL(IWMReaderCallback, 0x96406bd8, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
    413 #endif
    414 #else
    415 typedef struct IWMReaderCallbackVtbl {
    416     BEGIN_INTERFACE
    417 
    418     /*** IUnknown methods ***/
    419     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    420         IWMReaderCallback* This,
    421         REFIID riid,
    422         void **ppvObject);
    423 
    424     ULONG (STDMETHODCALLTYPE *AddRef)(
    425         IWMReaderCallback* This);
    426 
    427     ULONG (STDMETHODCALLTYPE *Release)(
    428         IWMReaderCallback* This);
    429 
    430     /*** IWMStatusCallback methods ***/
    431     HRESULT (STDMETHODCALLTYPE *OnStatus)(
    432         IWMReaderCallback* This,
    433         WMT_STATUS Status,
    434         HRESULT hr,
    435         WMT_ATTR_DATATYPE dwType,
    436         BYTE *pValue,
    437         void *pvContext);
    438 
    439     /*** IWMReaderCallback methods ***/
    440     HRESULT (STDMETHODCALLTYPE *OnSample)(
    441         IWMReaderCallback* This,
    442         DWORD dwOutputNum,
    443         QWORD cnsSampleTime,
    444         QWORD cnsSampleDuration,
    445         DWORD dwFlags,
    446         INSSBuffer *pSample,
    447         void *pvContext);
    448 
    449     END_INTERFACE
    450 } IWMReaderCallbackVtbl;
    451 interface IWMReaderCallback {
    452     CONST_VTBL IWMReaderCallbackVtbl* lpVtbl;
    453 };
    454 
    455 #ifdef COBJMACROS
    456 #ifndef WIDL_C_INLINE_WRAPPERS
    457 /*** IUnknown methods ***/
    458 #define IWMReaderCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    459 #define IWMReaderCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
    460 #define IWMReaderCallback_Release(This) (This)->lpVtbl->Release(This)
    461 /*** IWMStatusCallback methods ***/
    462 #define IWMReaderCallback_OnStatus(This,Status,hr,dwType,pValue,pvContext) (This)->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext)
    463 /*** IWMReaderCallback methods ***/
    464 #define IWMReaderCallback_OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext) (This)->lpVtbl->OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext)
    465 #else
    466 /*** IUnknown methods ***/
    467 static FORCEINLINE HRESULT IWMReaderCallback_QueryInterface(IWMReaderCallback* This,REFIID riid,void **ppvObject) {
    468     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    469 }
    470 static FORCEINLINE ULONG IWMReaderCallback_AddRef(IWMReaderCallback* This) {
    471     return This->lpVtbl->AddRef(This);
    472 }
    473 static FORCEINLINE ULONG IWMReaderCallback_Release(IWMReaderCallback* This) {
    474     return This->lpVtbl->Release(This);
    475 }
    476 /*** IWMStatusCallback methods ***/
    477 static FORCEINLINE HRESULT IWMReaderCallback_OnStatus(IWMReaderCallback* This,WMT_STATUS Status,HRESULT hr,WMT_ATTR_DATATYPE dwType,BYTE *pValue,void *pvContext) {
    478     return This->lpVtbl->OnStatus(This,Status,hr,dwType,pValue,pvContext);
    479 }
    480 /*** IWMReaderCallback methods ***/
    481 static FORCEINLINE HRESULT IWMReaderCallback_OnSample(IWMReaderCallback* This,DWORD dwOutputNum,QWORD cnsSampleTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample,void *pvContext) {
    482     return This->lpVtbl->OnSample(This,dwOutputNum,cnsSampleTime,cnsSampleDuration,dwFlags,pSample,pvContext);
    483 }
    484 #endif
    485 #endif
    486 
    487 #endif
    488 
    489 HRESULT STDMETHODCALLTYPE IWMReaderCallback_OnSample_Proxy(
    490     IWMReaderCallback* This,
    491     DWORD dwOutputNum,
    492     QWORD cnsSampleTime,
    493     QWORD cnsSampleDuration,
    494     DWORD dwFlags,
    495     INSSBuffer *pSample,
    496     void *pvContext);
    497 void __RPC_STUB IWMReaderCallback_OnSample_Stub(
    498     IRpcStubBuffer* This,
    499     IRpcChannelBuffer* pRpcChannelBuffer,
    500     PRPC_MESSAGE pRpcMessage,
    501     DWORD* pdwStubPhase);
    502 
    503 #endif  /* __IWMReaderCallback_INTERFACE_DEFINED__ */
    504 
    505 /*****************************************************************************
    506  * IWMStreamList interface
    507  */
    508 #ifndef __IWMStreamList_INTERFACE_DEFINED__
    509 #define __IWMStreamList_INTERFACE_DEFINED__
    510 
    511 DEFINE_GUID(IID_IWMStreamList, 0x96406bdd, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
    512 #if defined(__cplusplus) && !defined(CINTERFACE)
    513 MIDL_INTERFACE("96406bdd-2b2b-11d3-b36b-00c04f6108ff")
    514 IWMStreamList : public IUnknown
    515 {
    516     virtual HRESULT STDMETHODCALLTYPE GetStreams(
    517         WORD *pwStreamNumArray,
    518         WORD *pcStreams) = 0;
    519 
    520     virtual HRESULT STDMETHODCALLTYPE AddStream(
    521         WORD wStreamNum) = 0;
    522 
    523     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
    524         WORD wStreamNum) = 0;
    525 
    526 };
    527 #ifdef __CRT_UUID_DECL
    528 __CRT_UUID_DECL(IWMStreamList, 0x96406bdd, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
    529 #endif
    530 #else
    531 typedef struct IWMStreamListVtbl {
    532     BEGIN_INTERFACE
    533 
    534     /*** IUnknown methods ***/
    535     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    536         IWMStreamList* This,
    537         REFIID riid,
    538         void **ppvObject);
    539 
    540     ULONG (STDMETHODCALLTYPE *AddRef)(
    541         IWMStreamList* This);
    542 
    543     ULONG (STDMETHODCALLTYPE *Release)(
    544         IWMStreamList* This);
    545 
    546     /*** IWMStreamList methods ***/
    547     HRESULT (STDMETHODCALLTYPE *GetStreams)(
    548         IWMStreamList* This,
    549         WORD *pwStreamNumArray,
    550         WORD *pcStreams);
    551 
    552     HRESULT (STDMETHODCALLTYPE *AddStream)(
    553         IWMStreamList* This,
    554         WORD wStreamNum);
    555 
    556     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
    557         IWMStreamList* This,
    558         WORD wStreamNum);
    559 
    560     END_INTERFACE
    561 } IWMStreamListVtbl;
    562 interface IWMStreamList {
    563     CONST_VTBL IWMStreamListVtbl* lpVtbl;
    564 };
    565 
    566 #ifdef COBJMACROS
    567 #ifndef WIDL_C_INLINE_WRAPPERS
    568 /*** IUnknown methods ***/
    569 #define IWMStreamList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    570 #define IWMStreamList_AddRef(This) (This)->lpVtbl->AddRef(This)
    571 #define IWMStreamList_Release(This) (This)->lpVtbl->Release(This)
    572 /*** IWMStreamList methods ***/
    573 #define IWMStreamList_GetStreams(This,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams)
    574 #define IWMStreamList_AddStream(This,wStreamNum) (This)->lpVtbl->AddStream(This,wStreamNum)
    575 #define IWMStreamList_RemoveStream(This,wStreamNum) (This)->lpVtbl->RemoveStream(This,wStreamNum)
    576 #else
    577 /*** IUnknown methods ***/
    578 static FORCEINLINE HRESULT IWMStreamList_QueryInterface(IWMStreamList* This,REFIID riid,void **ppvObject) {
    579     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    580 }
    581 static FORCEINLINE ULONG IWMStreamList_AddRef(IWMStreamList* This) {
    582     return This->lpVtbl->AddRef(This);
    583 }
    584 static FORCEINLINE ULONG IWMStreamList_Release(IWMStreamList* This) {
    585     return This->lpVtbl->Release(This);
    586 }
    587 /*** IWMStreamList methods ***/
    588 static FORCEINLINE HRESULT IWMStreamList_GetStreams(IWMStreamList* This,WORD *pwStreamNumArray,WORD *pcStreams) {
    589     return This->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams);
    590 }
    591 static FORCEINLINE HRESULT IWMStreamList_AddStream(IWMStreamList* This,WORD wStreamNum) {
    592     return This->lpVtbl->AddStream(This,wStreamNum);
    593 }
    594 static FORCEINLINE HRESULT IWMStreamList_RemoveStream(IWMStreamList* This,WORD wStreamNum) {
    595     return This->lpVtbl->RemoveStream(This,wStreamNum);
    596 }
    597 #endif
    598 #endif
    599 
    600 #endif
    601 
    602 HRESULT STDMETHODCALLTYPE IWMStreamList_GetStreams_Proxy(
    603     IWMStreamList* This,
    604     WORD *pwStreamNumArray,
    605     WORD *pcStreams);
    606 void __RPC_STUB IWMStreamList_GetStreams_Stub(
    607     IRpcStubBuffer* This,
    608     IRpcChannelBuffer* pRpcChannelBuffer,
    609     PRPC_MESSAGE pRpcMessage,
    610     DWORD* pdwStubPhase);
    611 HRESULT STDMETHODCALLTYPE IWMStreamList_AddStream_Proxy(
    612     IWMStreamList* This,
    613     WORD wStreamNum);
    614 void __RPC_STUB IWMStreamList_AddStream_Stub(
    615     IRpcStubBuffer* This,
    616     IRpcChannelBuffer* pRpcChannelBuffer,
    617     PRPC_MESSAGE pRpcMessage,
    618     DWORD* pdwStubPhase);
    619 HRESULT STDMETHODCALLTYPE IWMStreamList_RemoveStream_Proxy(
    620     IWMStreamList* This,
    621     WORD wStreamNum);
    622 void __RPC_STUB IWMStreamList_RemoveStream_Stub(
    623     IRpcStubBuffer* This,
    624     IRpcChannelBuffer* pRpcChannelBuffer,
    625     PRPC_MESSAGE pRpcMessage,
    626     DWORD* pdwStubPhase);
    627 
    628 #endif  /* __IWMStreamList_INTERFACE_DEFINED__ */
    629 
    630 /*****************************************************************************
    631  * IWMMutualExclusion interface
    632  */
    633 #ifndef __IWMMutualExclusion_INTERFACE_DEFINED__
    634 #define __IWMMutualExclusion_INTERFACE_DEFINED__
    635 
    636 DEFINE_GUID(IID_IWMMutualExclusion, 0x96406bde, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
    637 #if defined(__cplusplus) && !defined(CINTERFACE)
    638 MIDL_INTERFACE("96406bde-2b2b-11d3-b36b-00c04f6108ff")
    639 IWMMutualExclusion : public IWMStreamList
    640 {
    641     virtual HRESULT STDMETHODCALLTYPE GetType(
    642         GUID *pguidType) = 0;
    643 
    644     virtual HRESULT STDMETHODCALLTYPE SetType(
    645         REFGUID guidType) = 0;
    646 
    647 };
    648 #ifdef __CRT_UUID_DECL
    649 __CRT_UUID_DECL(IWMMutualExclusion, 0x96406bde, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
    650 #endif
    651 #else
    652 typedef struct IWMMutualExclusionVtbl {
    653     BEGIN_INTERFACE
    654 
    655     /*** IUnknown methods ***/
    656     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    657         IWMMutualExclusion* This,
    658         REFIID riid,
    659         void **ppvObject);
    660 
    661     ULONG (STDMETHODCALLTYPE *AddRef)(
    662         IWMMutualExclusion* This);
    663 
    664     ULONG (STDMETHODCALLTYPE *Release)(
    665         IWMMutualExclusion* This);
    666 
    667     /*** IWMStreamList methods ***/
    668     HRESULT (STDMETHODCALLTYPE *GetStreams)(
    669         IWMMutualExclusion* This,
    670         WORD *pwStreamNumArray,
    671         WORD *pcStreams);
    672 
    673     HRESULT (STDMETHODCALLTYPE *AddStream)(
    674         IWMMutualExclusion* This,
    675         WORD wStreamNum);
    676 
    677     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
    678         IWMMutualExclusion* This,
    679         WORD wStreamNum);
    680 
    681     /*** IWMMutualExclusion methods ***/
    682     HRESULT (STDMETHODCALLTYPE *GetType)(
    683         IWMMutualExclusion* This,
    684         GUID *pguidType);
    685 
    686     HRESULT (STDMETHODCALLTYPE *SetType)(
    687         IWMMutualExclusion* This,
    688         REFGUID guidType);
    689 
    690     END_INTERFACE
    691 } IWMMutualExclusionVtbl;
    692 interface IWMMutualExclusion {
    693     CONST_VTBL IWMMutualExclusionVtbl* lpVtbl;
    694 };
    695 
    696 #ifdef COBJMACROS
    697 #ifndef WIDL_C_INLINE_WRAPPERS
    698 /*** IUnknown methods ***/
    699 #define IWMMutualExclusion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    700 #define IWMMutualExclusion_AddRef(This) (This)->lpVtbl->AddRef(This)
    701 #define IWMMutualExclusion_Release(This) (This)->lpVtbl->Release(This)
    702 /*** IWMStreamList methods ***/
    703 #define IWMMutualExclusion_GetStreams(This,pwStreamNumArray,pcStreams) (This)->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams)
    704 #define IWMMutualExclusion_AddStream(This,wStreamNum) (This)->lpVtbl->AddStream(This,wStreamNum)
    705 #define IWMMutualExclusion_RemoveStream(This,wStreamNum) (This)->lpVtbl->RemoveStream(This,wStreamNum)
    706 /*** IWMMutualExclusion methods ***/
    707 #define IWMMutualExclusion_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
    708 #define IWMMutualExclusion_SetType(This,guidType) (This)->lpVtbl->SetType(This,guidType)
    709 #else
    710 /*** IUnknown methods ***/
    711 static FORCEINLINE HRESULT IWMMutualExclusion_QueryInterface(IWMMutualExclusion* This,REFIID riid,void **ppvObject) {
    712     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    713 }
    714 static FORCEINLINE ULONG IWMMutualExclusion_AddRef(IWMMutualExclusion* This) {
    715     return This->lpVtbl->AddRef(This);
    716 }
    717 static FORCEINLINE ULONG IWMMutualExclusion_Release(IWMMutualExclusion* This) {
    718     return This->lpVtbl->Release(This);
    719 }
    720 /*** IWMStreamList methods ***/
    721 static FORCEINLINE HRESULT IWMMutualExclusion_GetStreams(IWMMutualExclusion* This,WORD *pwStreamNumArray,WORD *pcStreams) {
    722     return This->lpVtbl->GetStreams(This,pwStreamNumArray,pcStreams);
    723 }
    724 static FORCEINLINE HRESULT IWMMutualExclusion_AddStream(IWMMutualExclusion* This,WORD wStreamNum) {
    725     return This->lpVtbl->AddStream(This,wStreamNum);
    726 }
    727 static FORCEINLINE HRESULT IWMMutualExclusion_RemoveStream(IWMMutualExclusion* This,WORD wStreamNum) {
    728     return This->lpVtbl->RemoveStream(This,wStreamNum);
    729 }
    730 /*** IWMMutualExclusion methods ***/
    731 static FORCEINLINE HRESULT IWMMutualExclusion_GetType(IWMMutualExclusion* This,GUID *pguidType) {
    732     return This->lpVtbl->GetType(This,pguidType);
    733 }
    734 static FORCEINLINE HRESULT IWMMutualExclusion_SetType(IWMMutualExclusion* This,REFGUID guidType) {
    735     return This->lpVtbl->SetType(This,guidType);
    736 }
    737 #endif
    738 #endif
    739 
    740 #endif
    741 
    742 HRESULT STDMETHODCALLTYPE IWMMutualExclusion_GetType_Proxy(
    743     IWMMutualExclusion* This,
    744     GUID *pguidType);
    745 void __RPC_STUB IWMMutualExclusion_GetType_Stub(
    746     IRpcStubBuffer* This,
    747     IRpcChannelBuffer* pRpcChannelBuffer,
    748     PRPC_MESSAGE pRpcMessage,
    749     DWORD* pdwStubPhase);
    750 HRESULT STDMETHODCALLTYPE IWMMutualExclusion_SetType_Proxy(
    751     IWMMutualExclusion* This,
    752     REFGUID guidType);
    753 void __RPC_STUB IWMMutualExclusion_SetType_Stub(
    754     IRpcStubBuffer* This,
    755     IRpcChannelBuffer* pRpcChannelBuffer,
    756     PRPC_MESSAGE pRpcMessage,
    757     DWORD* pdwStubPhase);
    758 
    759 #endif  /* __IWMMutualExclusion_INTERFACE_DEFINED__ */
    760 
    761 /*****************************************************************************
    762  * IWMStreamConfig interface
    763  */
    764 #ifndef __IWMStreamConfig_INTERFACE_DEFINED__
    765 #define __IWMStreamConfig_INTERFACE_DEFINED__
    766 
    767 DEFINE_GUID(IID_IWMStreamConfig, 0x96406bdc, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
    768 #if defined(__cplusplus) && !defined(CINTERFACE)
    769 MIDL_INTERFACE("96406bdc-2b2b-11d3-b36b-00c04f6108ff")
    770 IWMStreamConfig : public IUnknown
    771 {
    772     virtual HRESULT STDMETHODCALLTYPE GetStreamType(
    773         GUID *pguidStreamType) = 0;
    774 
    775     virtual HRESULT STDMETHODCALLTYPE GetStreamNumber(
    776         WORD *pwStreamNum) = 0;
    777 
    778     virtual HRESULT STDMETHODCALLTYPE SetStreamNumber(
    779         WORD wStreamNum) = 0;
    780 
    781     virtual HRESULT STDMETHODCALLTYPE GetStreamName(
    782         WCHAR *pwszStreamName,
    783         WORD *pcchStreamName) = 0;
    784 
    785     virtual HRESULT STDMETHODCALLTYPE SetStreamName(
    786         LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName) = 0;
    787 
    788     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
    789         WCHAR *pwszInputName,
    790         WORD *pcchInputName) = 0;
    791 
    792     virtual HRESULT STDMETHODCALLTYPE SetConnectionName(
    793         LPCWSTR_WMSDK_TYPE_SAFE pwszInputName) = 0;
    794 
    795     virtual HRESULT STDMETHODCALLTYPE GetBitrate(
    796         DWORD *pdwBitrate) = 0;
    797 
    798     virtual HRESULT STDMETHODCALLTYPE SetBitrate(
    799         DWORD pdwBitrate) = 0;
    800 
    801     virtual HRESULT STDMETHODCALLTYPE GetBufferWindow(
    802         DWORD *pmsBufferWindow) = 0;
    803 
    804     virtual HRESULT STDMETHODCALLTYPE SetBufferWindow(
    805         DWORD msBufferWindow) = 0;
    806 
    807 };
    808 #ifdef __CRT_UUID_DECL
    809 __CRT_UUID_DECL(IWMStreamConfig, 0x96406bdc, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
    810 #endif
    811 #else
    812 typedef struct IWMStreamConfigVtbl {
    813     BEGIN_INTERFACE
    814 
    815     /*** IUnknown methods ***/
    816     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    817         IWMStreamConfig* This,
    818         REFIID riid,
    819         void **ppvObject);
    820 
    821     ULONG (STDMETHODCALLTYPE *AddRef)(
    822         IWMStreamConfig* This);
    823 
    824     ULONG (STDMETHODCALLTYPE *Release)(
    825         IWMStreamConfig* This);
    826 
    827     /*** IWMStreamConfig methods ***/
    828     HRESULT (STDMETHODCALLTYPE *GetStreamType)(
    829         IWMStreamConfig* This,
    830         GUID *pguidStreamType);
    831 
    832     HRESULT (STDMETHODCALLTYPE *GetStreamNumber)(
    833         IWMStreamConfig* This,
    834         WORD *pwStreamNum);
    835 
    836     HRESULT (STDMETHODCALLTYPE *SetStreamNumber)(
    837         IWMStreamConfig* This,
    838         WORD wStreamNum);
    839 
    840     HRESULT (STDMETHODCALLTYPE *GetStreamName)(
    841         IWMStreamConfig* This,
    842         WCHAR *pwszStreamName,
    843         WORD *pcchStreamName);
    844 
    845     HRESULT (STDMETHODCALLTYPE *SetStreamName)(
    846         IWMStreamConfig* This,
    847         LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
    848 
    849     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
    850         IWMStreamConfig* This,
    851         WCHAR *pwszInputName,
    852         WORD *pcchInputName);
    853 
    854     HRESULT (STDMETHODCALLTYPE *SetConnectionName)(
    855         IWMStreamConfig* This,
    856         LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
    857 
    858     HRESULT (STDMETHODCALLTYPE *GetBitrate)(
    859         IWMStreamConfig* This,
    860         DWORD *pdwBitrate);
    861 
    862     HRESULT (STDMETHODCALLTYPE *SetBitrate)(
    863         IWMStreamConfig* This,
    864         DWORD pdwBitrate);
    865 
    866     HRESULT (STDMETHODCALLTYPE *GetBufferWindow)(
    867         IWMStreamConfig* This,
    868         DWORD *pmsBufferWindow);
    869 
    870     HRESULT (STDMETHODCALLTYPE *SetBufferWindow)(
    871         IWMStreamConfig* This,
    872         DWORD msBufferWindow);
    873 
    874     END_INTERFACE
    875 } IWMStreamConfigVtbl;
    876 interface IWMStreamConfig {
    877     CONST_VTBL IWMStreamConfigVtbl* lpVtbl;
    878 };
    879 
    880 #ifdef COBJMACROS
    881 #ifndef WIDL_C_INLINE_WRAPPERS
    882 /*** IUnknown methods ***/
    883 #define IWMStreamConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    884 #define IWMStreamConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
    885 #define IWMStreamConfig_Release(This) (This)->lpVtbl->Release(This)
    886 /*** IWMStreamConfig methods ***/
    887 #define IWMStreamConfig_GetStreamType(This,pguidStreamType) (This)->lpVtbl->GetStreamType(This,pguidStreamType)
    888 #define IWMStreamConfig_GetStreamNumber(This,pwStreamNum) (This)->lpVtbl->GetStreamNumber(This,pwStreamNum)
    889 #define IWMStreamConfig_SetStreamNumber(This,wStreamNum) (This)->lpVtbl->SetStreamNumber(This,wStreamNum)
    890 #define IWMStreamConfig_GetStreamName(This,pwszStreamName,pcchStreamName) (This)->lpVtbl->GetStreamName(This,pwszStreamName,pcchStreamName)
    891 #define IWMStreamConfig_SetStreamName(This,pwszStreamName) (This)->lpVtbl->SetStreamName(This,pwszStreamName)
    892 #define IWMStreamConfig_GetConnectionName(This,pwszInputName,pcchInputName) (This)->lpVtbl->GetConnectionName(This,pwszInputName,pcchInputName)
    893 #define IWMStreamConfig_SetConnectionName(This,pwszInputName) (This)->lpVtbl->SetConnectionName(This,pwszInputName)
    894 #define IWMStreamConfig_GetBitrate(This,pdwBitrate) (This)->lpVtbl->GetBitrate(This,pdwBitrate)
    895 #define IWMStreamConfig_SetBitrate(This,pdwBitrate) (This)->lpVtbl->SetBitrate(This,pdwBitrate)
    896 #define IWMStreamConfig_GetBufferWindow(This,pmsBufferWindow) (This)->lpVtbl->GetBufferWindow(This,pmsBufferWindow)
    897 #define IWMStreamConfig_SetBufferWindow(This,msBufferWindow) (This)->lpVtbl->SetBufferWindow(This,msBufferWindow)
    898 #else
    899 /*** IUnknown methods ***/
    900 static FORCEINLINE HRESULT IWMStreamConfig_QueryInterface(IWMStreamConfig* This,REFIID riid,void **ppvObject) {
    901     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    902 }
    903 static FORCEINLINE ULONG IWMStreamConfig_AddRef(IWMStreamConfig* This) {
    904     return This->lpVtbl->AddRef(This);
    905 }
    906 static FORCEINLINE ULONG IWMStreamConfig_Release(IWMStreamConfig* This) {
    907     return This->lpVtbl->Release(This);
    908 }
    909 /*** IWMStreamConfig methods ***/
    910 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamType(IWMStreamConfig* This,GUID *pguidStreamType) {
    911     return This->lpVtbl->GetStreamType(This,pguidStreamType);
    912 }
    913 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamNumber(IWMStreamConfig* This,WORD *pwStreamNum) {
    914     return This->lpVtbl->GetStreamNumber(This,pwStreamNum);
    915 }
    916 static FORCEINLINE HRESULT IWMStreamConfig_SetStreamNumber(IWMStreamConfig* This,WORD wStreamNum) {
    917     return This->lpVtbl->SetStreamNumber(This,wStreamNum);
    918 }
    919 static FORCEINLINE HRESULT IWMStreamConfig_GetStreamName(IWMStreamConfig* This,WCHAR *pwszStreamName,WORD *pcchStreamName) {
    920     return This->lpVtbl->GetStreamName(This,pwszStreamName,pcchStreamName);
    921 }
    922 static FORCEINLINE HRESULT IWMStreamConfig_SetStreamName(IWMStreamConfig* This,LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName) {
    923     return This->lpVtbl->SetStreamName(This,pwszStreamName);
    924 }
    925 static FORCEINLINE HRESULT IWMStreamConfig_GetConnectionName(IWMStreamConfig* This,WCHAR *pwszInputName,WORD *pcchInputName) {
    926     return This->lpVtbl->GetConnectionName(This,pwszInputName,pcchInputName);
    927 }
    928 static FORCEINLINE HRESULT IWMStreamConfig_SetConnectionName(IWMStreamConfig* This,LPCWSTR_WMSDK_TYPE_SAFE pwszInputName) {
    929     return This->lpVtbl->SetConnectionName(This,pwszInputName);
    930 }
    931 static FORCEINLINE HRESULT IWMStreamConfig_GetBitrate(IWMStreamConfig* This,DWORD *pdwBitrate) {
    932     return This->lpVtbl->GetBitrate(This,pdwBitrate);
    933 }
    934 static FORCEINLINE HRESULT IWMStreamConfig_SetBitrate(IWMStreamConfig* This,DWORD pdwBitrate) {
    935     return This->lpVtbl->SetBitrate(This,pdwBitrate);
    936 }
    937 static FORCEINLINE HRESULT IWMStreamConfig_GetBufferWindow(IWMStreamConfig* This,DWORD *pmsBufferWindow) {
    938     return This->lpVtbl->GetBufferWindow(This,pmsBufferWindow);
    939 }
    940 static FORCEINLINE HRESULT IWMStreamConfig_SetBufferWindow(IWMStreamConfig* This,DWORD msBufferWindow) {
    941     return This->lpVtbl->SetBufferWindow(This,msBufferWindow);
    942 }
    943 #endif
    944 #endif
    945 
    946 #endif
    947 
    948 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetStreamType_Proxy(
    949     IWMStreamConfig* This,
    950     GUID *pguidStreamType);
    951 void __RPC_STUB IWMStreamConfig_GetStreamType_Stub(
    952     IRpcStubBuffer* This,
    953     IRpcChannelBuffer* pRpcChannelBuffer,
    954     PRPC_MESSAGE pRpcMessage,
    955     DWORD* pdwStubPhase);
    956 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetStreamNumber_Proxy(
    957     IWMStreamConfig* This,
    958     WORD *pwStreamNum);
    959 void __RPC_STUB IWMStreamConfig_GetStreamNumber_Stub(
    960     IRpcStubBuffer* This,
    961     IRpcChannelBuffer* pRpcChannelBuffer,
    962     PRPC_MESSAGE pRpcMessage,
    963     DWORD* pdwStubPhase);
    964 HRESULT STDMETHODCALLTYPE IWMStreamConfig_SetStreamNumber_Proxy(
    965     IWMStreamConfig* This,
    966     WORD wStreamNum);
    967 void __RPC_STUB IWMStreamConfig_SetStreamNumber_Stub(
    968     IRpcStubBuffer* This,
    969     IRpcChannelBuffer* pRpcChannelBuffer,
    970     PRPC_MESSAGE pRpcMessage,
    971     DWORD* pdwStubPhase);
    972 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetStreamName_Proxy(
    973     IWMStreamConfig* This,
    974     WCHAR *pwszStreamName,
    975     WORD *pcchStreamName);
    976 void __RPC_STUB IWMStreamConfig_GetStreamName_Stub(
    977     IRpcStubBuffer* This,
    978     IRpcChannelBuffer* pRpcChannelBuffer,
    979     PRPC_MESSAGE pRpcMessage,
    980     DWORD* pdwStubPhase);
    981 HRESULT STDMETHODCALLTYPE IWMStreamConfig_SetStreamName_Proxy(
    982     IWMStreamConfig* This,
    983     LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName);
    984 void __RPC_STUB IWMStreamConfig_SetStreamName_Stub(
    985     IRpcStubBuffer* This,
    986     IRpcChannelBuffer* pRpcChannelBuffer,
    987     PRPC_MESSAGE pRpcMessage,
    988     DWORD* pdwStubPhase);
    989 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetConnectionName_Proxy(
    990     IWMStreamConfig* This,
    991     WCHAR *pwszInputName,
    992     WORD *pcchInputName);
    993 void __RPC_STUB IWMStreamConfig_GetConnectionName_Stub(
    994     IRpcStubBuffer* This,
    995     IRpcChannelBuffer* pRpcChannelBuffer,
    996     PRPC_MESSAGE pRpcMessage,
    997     DWORD* pdwStubPhase);
    998 HRESULT STDMETHODCALLTYPE IWMStreamConfig_SetConnectionName_Proxy(
    999     IWMStreamConfig* This,
   1000     LPCWSTR_WMSDK_TYPE_SAFE pwszInputName);
   1001 void __RPC_STUB IWMStreamConfig_SetConnectionName_Stub(
   1002     IRpcStubBuffer* This,
   1003     IRpcChannelBuffer* pRpcChannelBuffer,
   1004     PRPC_MESSAGE pRpcMessage,
   1005     DWORD* pdwStubPhase);
   1006 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetBitrate_Proxy(
   1007     IWMStreamConfig* This,
   1008     DWORD *pdwBitrate);
   1009 void __RPC_STUB IWMStreamConfig_GetBitrate_Stub(
   1010     IRpcStubBuffer* This,
   1011     IRpcChannelBuffer* pRpcChannelBuffer,
   1012     PRPC_MESSAGE pRpcMessage,
   1013     DWORD* pdwStubPhase);
   1014 HRESULT STDMETHODCALLTYPE IWMStreamConfig_SetBitrate_Proxy(
   1015     IWMStreamConfig* This,
   1016     DWORD pdwBitrate);
   1017 void __RPC_STUB IWMStreamConfig_SetBitrate_Stub(
   1018     IRpcStubBuffer* This,
   1019     IRpcChannelBuffer* pRpcChannelBuffer,
   1020     PRPC_MESSAGE pRpcMessage,
   1021     DWORD* pdwStubPhase);
   1022 HRESULT STDMETHODCALLTYPE IWMStreamConfig_GetBufferWindow_Proxy(
   1023     IWMStreamConfig* This,
   1024     DWORD *pmsBufferWindow);
   1025 void __RPC_STUB IWMStreamConfig_GetBufferWindow_Stub(
   1026     IRpcStubBuffer* This,
   1027     IRpcChannelBuffer* pRpcChannelBuffer,
   1028     PRPC_MESSAGE pRpcMessage,
   1029     DWORD* pdwStubPhase);
   1030 HRESULT STDMETHODCALLTYPE IWMStreamConfig_SetBufferWindow_Proxy(
   1031     IWMStreamConfig* This,
   1032     DWORD msBufferWindow);
   1033 void __RPC_STUB IWMStreamConfig_SetBufferWindow_Stub(
   1034     IRpcStubBuffer* This,
   1035     IRpcChannelBuffer* pRpcChannelBuffer,
   1036     PRPC_MESSAGE pRpcMessage,
   1037     DWORD* pdwStubPhase);
   1038 
   1039 #endif  /* __IWMStreamConfig_INTERFACE_DEFINED__ */
   1040 
   1041 /*****************************************************************************
   1042  * IWMProfile interface
   1043  */
   1044 #ifndef __IWMProfile_INTERFACE_DEFINED__
   1045 #define __IWMProfile_INTERFACE_DEFINED__
   1046 
   1047 DEFINE_GUID(IID_IWMProfile, 0x96406bdb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   1048 #if defined(__cplusplus) && !defined(CINTERFACE)
   1049 MIDL_INTERFACE("96406bdb-2b2b-11d3-b36b-00c04f6108ff")
   1050 IWMProfile : public IUnknown
   1051 {
   1052     virtual HRESULT STDMETHODCALLTYPE GetVersion(
   1053         WMT_VERSION *pdwVersion) = 0;
   1054 
   1055     virtual HRESULT STDMETHODCALLTYPE GetName(
   1056         WCHAR *pwszName,
   1057         DWORD *pcchName) = 0;
   1058 
   1059     virtual HRESULT STDMETHODCALLTYPE SetName(
   1060         const WCHAR *pwszName) = 0;
   1061 
   1062     virtual HRESULT STDMETHODCALLTYPE GetDescription(
   1063         WCHAR *pwszDescription,
   1064         DWORD *pcchDescription) = 0;
   1065 
   1066     virtual HRESULT STDMETHODCALLTYPE SetDescription(
   1067         const WCHAR *pwszDescription) = 0;
   1068 
   1069     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
   1070         DWORD *pcStreams) = 0;
   1071 
   1072     virtual HRESULT STDMETHODCALLTYPE GetStream(
   1073         DWORD dwStreamIndex,
   1074         IWMStreamConfig **ppConfig) = 0;
   1075 
   1076     virtual HRESULT STDMETHODCALLTYPE GetStreamByNumber(
   1077         WORD wStreamNum,
   1078         IWMStreamConfig **ppConfig) = 0;
   1079 
   1080     virtual HRESULT STDMETHODCALLTYPE RemoveStream(
   1081         IWMStreamConfig *pConfig) = 0;
   1082 
   1083     virtual HRESULT STDMETHODCALLTYPE RemoveStreamByNumber(
   1084         WORD wStreamNum) = 0;
   1085 
   1086     virtual HRESULT STDMETHODCALLTYPE AddStream(
   1087         IWMStreamConfig *pConfig) = 0;
   1088 
   1089     virtual HRESULT STDMETHODCALLTYPE ReconfigStream(
   1090         IWMStreamConfig *pConfig) = 0;
   1091 
   1092     virtual HRESULT STDMETHODCALLTYPE CreateNewStream(
   1093         REFGUID guidStreamType,
   1094         IWMStreamConfig **ppConfig) = 0;
   1095 
   1096     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusionCount(
   1097         DWORD *pcME) = 0;
   1098 
   1099     virtual HRESULT STDMETHODCALLTYPE GetMutualExclusion(
   1100         DWORD dwMEIndex,
   1101         IWMMutualExclusion **ppME) = 0;
   1102 
   1103     virtual HRESULT STDMETHODCALLTYPE RemoveMutualExclusion(
   1104         IWMMutualExclusion *pME) = 0;
   1105 
   1106     virtual HRESULT STDMETHODCALLTYPE AddMutualExclusion(
   1107         IWMMutualExclusion *pME) = 0;
   1108 
   1109     virtual HRESULT STDMETHODCALLTYPE CreateNewMutualExclusion(
   1110         IWMMutualExclusion **ppME) = 0;
   1111 
   1112 };
   1113 #ifdef __CRT_UUID_DECL
   1114 __CRT_UUID_DECL(IWMProfile, 0x96406bdb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   1115 #endif
   1116 #else
   1117 typedef struct IWMProfileVtbl {
   1118     BEGIN_INTERFACE
   1119 
   1120     /*** IUnknown methods ***/
   1121     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1122         IWMProfile* This,
   1123         REFIID riid,
   1124         void **ppvObject);
   1125 
   1126     ULONG (STDMETHODCALLTYPE *AddRef)(
   1127         IWMProfile* This);
   1128 
   1129     ULONG (STDMETHODCALLTYPE *Release)(
   1130         IWMProfile* This);
   1131 
   1132     /*** IWMProfile methods ***/
   1133     HRESULT (STDMETHODCALLTYPE *GetVersion)(
   1134         IWMProfile* This,
   1135         WMT_VERSION *pdwVersion);
   1136 
   1137     HRESULT (STDMETHODCALLTYPE *GetName)(
   1138         IWMProfile* This,
   1139         WCHAR *pwszName,
   1140         DWORD *pcchName);
   1141 
   1142     HRESULT (STDMETHODCALLTYPE *SetName)(
   1143         IWMProfile* This,
   1144         const WCHAR *pwszName);
   1145 
   1146     HRESULT (STDMETHODCALLTYPE *GetDescription)(
   1147         IWMProfile* This,
   1148         WCHAR *pwszDescription,
   1149         DWORD *pcchDescription);
   1150 
   1151     HRESULT (STDMETHODCALLTYPE *SetDescription)(
   1152         IWMProfile* This,
   1153         const WCHAR *pwszDescription);
   1154 
   1155     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
   1156         IWMProfile* This,
   1157         DWORD *pcStreams);
   1158 
   1159     HRESULT (STDMETHODCALLTYPE *GetStream)(
   1160         IWMProfile* This,
   1161         DWORD dwStreamIndex,
   1162         IWMStreamConfig **ppConfig);
   1163 
   1164     HRESULT (STDMETHODCALLTYPE *GetStreamByNumber)(
   1165         IWMProfile* This,
   1166         WORD wStreamNum,
   1167         IWMStreamConfig **ppConfig);
   1168 
   1169     HRESULT (STDMETHODCALLTYPE *RemoveStream)(
   1170         IWMProfile* This,
   1171         IWMStreamConfig *pConfig);
   1172 
   1173     HRESULT (STDMETHODCALLTYPE *RemoveStreamByNumber)(
   1174         IWMProfile* This,
   1175         WORD wStreamNum);
   1176 
   1177     HRESULT (STDMETHODCALLTYPE *AddStream)(
   1178         IWMProfile* This,
   1179         IWMStreamConfig *pConfig);
   1180 
   1181     HRESULT (STDMETHODCALLTYPE *ReconfigStream)(
   1182         IWMProfile* This,
   1183         IWMStreamConfig *pConfig);
   1184 
   1185     HRESULT (STDMETHODCALLTYPE *CreateNewStream)(
   1186         IWMProfile* This,
   1187         REFGUID guidStreamType,
   1188         IWMStreamConfig **ppConfig);
   1189 
   1190     HRESULT (STDMETHODCALLTYPE *GetMutualExclusionCount)(
   1191         IWMProfile* This,
   1192         DWORD *pcME);
   1193 
   1194     HRESULT (STDMETHODCALLTYPE *GetMutualExclusion)(
   1195         IWMProfile* This,
   1196         DWORD dwMEIndex,
   1197         IWMMutualExclusion **ppME);
   1198 
   1199     HRESULT (STDMETHODCALLTYPE *RemoveMutualExclusion)(
   1200         IWMProfile* This,
   1201         IWMMutualExclusion *pME);
   1202 
   1203     HRESULT (STDMETHODCALLTYPE *AddMutualExclusion)(
   1204         IWMProfile* This,
   1205         IWMMutualExclusion *pME);
   1206 
   1207     HRESULT (STDMETHODCALLTYPE *CreateNewMutualExclusion)(
   1208         IWMProfile* This,
   1209         IWMMutualExclusion **ppME);
   1210 
   1211     END_INTERFACE
   1212 } IWMProfileVtbl;
   1213 interface IWMProfile {
   1214     CONST_VTBL IWMProfileVtbl* lpVtbl;
   1215 };
   1216 
   1217 #ifdef COBJMACROS
   1218 #ifndef WIDL_C_INLINE_WRAPPERS
   1219 /*** IUnknown methods ***/
   1220 #define IWMProfile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1221 #define IWMProfile_AddRef(This) (This)->lpVtbl->AddRef(This)
   1222 #define IWMProfile_Release(This) (This)->lpVtbl->Release(This)
   1223 /*** IWMProfile methods ***/
   1224 #define IWMProfile_GetVersion(This,pdwVersion) (This)->lpVtbl->GetVersion(This,pdwVersion)
   1225 #define IWMProfile_GetName(This,pwszName,pcchName) (This)->lpVtbl->GetName(This,pwszName,pcchName)
   1226 #define IWMProfile_SetName(This,pwszName) (This)->lpVtbl->SetName(This,pwszName)
   1227 #define IWMProfile_GetDescription(This,pwszDescription,pcchDescription) (This)->lpVtbl->GetDescription(This,pwszDescription,pcchDescription)
   1228 #define IWMProfile_SetDescription(This,pwszDescription) (This)->lpVtbl->SetDescription(This,pwszDescription)
   1229 #define IWMProfile_GetStreamCount(This,pcStreams) (This)->lpVtbl->GetStreamCount(This,pcStreams)
   1230 #define IWMProfile_GetStream(This,dwStreamIndex,ppConfig) (This)->lpVtbl->GetStream(This,dwStreamIndex,ppConfig)
   1231 #define IWMProfile_GetStreamByNumber(This,wStreamNum,ppConfig) (This)->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig)
   1232 #define IWMProfile_RemoveStream(This,pConfig) (This)->lpVtbl->RemoveStream(This,pConfig)
   1233 #define IWMProfile_RemoveStreamByNumber(This,wStreamNum) (This)->lpVtbl->RemoveStreamByNumber(This,wStreamNum)
   1234 #define IWMProfile_AddStream(This,pConfig) (This)->lpVtbl->AddStream(This,pConfig)
   1235 #define IWMProfile_ReconfigStream(This,pConfig) (This)->lpVtbl->ReconfigStream(This,pConfig)
   1236 #define IWMProfile_CreateNewStream(This,guidStreamType,ppConfig) (This)->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig)
   1237 #define IWMProfile_GetMutualExclusionCount(This,pcME) (This)->lpVtbl->GetMutualExclusionCount(This,pcME)
   1238 #define IWMProfile_GetMutualExclusion(This,dwMEIndex,ppME) (This)->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME)
   1239 #define IWMProfile_RemoveMutualExclusion(This,pME) (This)->lpVtbl->RemoveMutualExclusion(This,pME)
   1240 #define IWMProfile_AddMutualExclusion(This,pME) (This)->lpVtbl->AddMutualExclusion(This,pME)
   1241 #define IWMProfile_CreateNewMutualExclusion(This,ppME) (This)->lpVtbl->CreateNewMutualExclusion(This,ppME)
   1242 #else
   1243 /*** IUnknown methods ***/
   1244 static FORCEINLINE HRESULT IWMProfile_QueryInterface(IWMProfile* This,REFIID riid,void **ppvObject) {
   1245     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1246 }
   1247 static FORCEINLINE ULONG IWMProfile_AddRef(IWMProfile* This) {
   1248     return This->lpVtbl->AddRef(This);
   1249 }
   1250 static FORCEINLINE ULONG IWMProfile_Release(IWMProfile* This) {
   1251     return This->lpVtbl->Release(This);
   1252 }
   1253 /*** IWMProfile methods ***/
   1254 static FORCEINLINE HRESULT IWMProfile_GetVersion(IWMProfile* This,WMT_VERSION *pdwVersion) {
   1255     return This->lpVtbl->GetVersion(This,pdwVersion);
   1256 }
   1257 static FORCEINLINE HRESULT IWMProfile_GetName(IWMProfile* This,WCHAR *pwszName,DWORD *pcchName) {
   1258     return This->lpVtbl->GetName(This,pwszName,pcchName);
   1259 }
   1260 static FORCEINLINE HRESULT IWMProfile_SetName(IWMProfile* This,const WCHAR *pwszName) {
   1261     return This->lpVtbl->SetName(This,pwszName);
   1262 }
   1263 static FORCEINLINE HRESULT IWMProfile_GetDescription(IWMProfile* This,WCHAR *pwszDescription,DWORD *pcchDescription) {
   1264     return This->lpVtbl->GetDescription(This,pwszDescription,pcchDescription);
   1265 }
   1266 static FORCEINLINE HRESULT IWMProfile_SetDescription(IWMProfile* This,const WCHAR *pwszDescription) {
   1267     return This->lpVtbl->SetDescription(This,pwszDescription);
   1268 }
   1269 static FORCEINLINE HRESULT IWMProfile_GetStreamCount(IWMProfile* This,DWORD *pcStreams) {
   1270     return This->lpVtbl->GetStreamCount(This,pcStreams);
   1271 }
   1272 static FORCEINLINE HRESULT IWMProfile_GetStream(IWMProfile* This,DWORD dwStreamIndex,IWMStreamConfig **ppConfig) {
   1273     return This->lpVtbl->GetStream(This,dwStreamIndex,ppConfig);
   1274 }
   1275 static FORCEINLINE HRESULT IWMProfile_GetStreamByNumber(IWMProfile* This,WORD wStreamNum,IWMStreamConfig **ppConfig) {
   1276     return This->lpVtbl->GetStreamByNumber(This,wStreamNum,ppConfig);
   1277 }
   1278 static FORCEINLINE HRESULT IWMProfile_RemoveStream(IWMProfile* This,IWMStreamConfig *pConfig) {
   1279     return This->lpVtbl->RemoveStream(This,pConfig);
   1280 }
   1281 static FORCEINLINE HRESULT IWMProfile_RemoveStreamByNumber(IWMProfile* This,WORD wStreamNum) {
   1282     return This->lpVtbl->RemoveStreamByNumber(This,wStreamNum);
   1283 }
   1284 static FORCEINLINE HRESULT IWMProfile_AddStream(IWMProfile* This,IWMStreamConfig *pConfig) {
   1285     return This->lpVtbl->AddStream(This,pConfig);
   1286 }
   1287 static FORCEINLINE HRESULT IWMProfile_ReconfigStream(IWMProfile* This,IWMStreamConfig *pConfig) {
   1288     return This->lpVtbl->ReconfigStream(This,pConfig);
   1289 }
   1290 static FORCEINLINE HRESULT IWMProfile_CreateNewStream(IWMProfile* This,REFGUID guidStreamType,IWMStreamConfig **ppConfig) {
   1291     return This->lpVtbl->CreateNewStream(This,guidStreamType,ppConfig);
   1292 }
   1293 static FORCEINLINE HRESULT IWMProfile_GetMutualExclusionCount(IWMProfile* This,DWORD *pcME) {
   1294     return This->lpVtbl->GetMutualExclusionCount(This,pcME);
   1295 }
   1296 static FORCEINLINE HRESULT IWMProfile_GetMutualExclusion(IWMProfile* This,DWORD dwMEIndex,IWMMutualExclusion **ppME) {
   1297     return This->lpVtbl->GetMutualExclusion(This,dwMEIndex,ppME);
   1298 }
   1299 static FORCEINLINE HRESULT IWMProfile_RemoveMutualExclusion(IWMProfile* This,IWMMutualExclusion *pME) {
   1300     return This->lpVtbl->RemoveMutualExclusion(This,pME);
   1301 }
   1302 static FORCEINLINE HRESULT IWMProfile_AddMutualExclusion(IWMProfile* This,IWMMutualExclusion *pME) {
   1303     return This->lpVtbl->AddMutualExclusion(This,pME);
   1304 }
   1305 static FORCEINLINE HRESULT IWMProfile_CreateNewMutualExclusion(IWMProfile* This,IWMMutualExclusion **ppME) {
   1306     return This->lpVtbl->CreateNewMutualExclusion(This,ppME);
   1307 }
   1308 #endif
   1309 #endif
   1310 
   1311 #endif
   1312 
   1313 HRESULT STDMETHODCALLTYPE IWMProfile_GetVersion_Proxy(
   1314     IWMProfile* This,
   1315     WMT_VERSION *pdwVersion);
   1316 void __RPC_STUB IWMProfile_GetVersion_Stub(
   1317     IRpcStubBuffer* This,
   1318     IRpcChannelBuffer* pRpcChannelBuffer,
   1319     PRPC_MESSAGE pRpcMessage,
   1320     DWORD* pdwStubPhase);
   1321 HRESULT STDMETHODCALLTYPE IWMProfile_GetName_Proxy(
   1322     IWMProfile* This,
   1323     WCHAR *pwszName,
   1324     DWORD *pcchName);
   1325 void __RPC_STUB IWMProfile_GetName_Stub(
   1326     IRpcStubBuffer* This,
   1327     IRpcChannelBuffer* pRpcChannelBuffer,
   1328     PRPC_MESSAGE pRpcMessage,
   1329     DWORD* pdwStubPhase);
   1330 HRESULT STDMETHODCALLTYPE IWMProfile_SetName_Proxy(
   1331     IWMProfile* This,
   1332     const WCHAR *pwszName);
   1333 void __RPC_STUB IWMProfile_SetName_Stub(
   1334     IRpcStubBuffer* This,
   1335     IRpcChannelBuffer* pRpcChannelBuffer,
   1336     PRPC_MESSAGE pRpcMessage,
   1337     DWORD* pdwStubPhase);
   1338 HRESULT STDMETHODCALLTYPE IWMProfile_GetDescription_Proxy(
   1339     IWMProfile* This,
   1340     WCHAR *pwszDescription,
   1341     DWORD *pcchDescription);
   1342 void __RPC_STUB IWMProfile_GetDescription_Stub(
   1343     IRpcStubBuffer* This,
   1344     IRpcChannelBuffer* pRpcChannelBuffer,
   1345     PRPC_MESSAGE pRpcMessage,
   1346     DWORD* pdwStubPhase);
   1347 HRESULT STDMETHODCALLTYPE IWMProfile_SetDescription_Proxy(
   1348     IWMProfile* This,
   1349     const WCHAR *pwszDescription);
   1350 void __RPC_STUB IWMProfile_SetDescription_Stub(
   1351     IRpcStubBuffer* This,
   1352     IRpcChannelBuffer* pRpcChannelBuffer,
   1353     PRPC_MESSAGE pRpcMessage,
   1354     DWORD* pdwStubPhase);
   1355 HRESULT STDMETHODCALLTYPE IWMProfile_GetStreamCount_Proxy(
   1356     IWMProfile* This,
   1357     DWORD *pcStreams);
   1358 void __RPC_STUB IWMProfile_GetStreamCount_Stub(
   1359     IRpcStubBuffer* This,
   1360     IRpcChannelBuffer* pRpcChannelBuffer,
   1361     PRPC_MESSAGE pRpcMessage,
   1362     DWORD* pdwStubPhase);
   1363 HRESULT STDMETHODCALLTYPE IWMProfile_GetStream_Proxy(
   1364     IWMProfile* This,
   1365     DWORD dwStreamIndex,
   1366     IWMStreamConfig **ppConfig);
   1367 void __RPC_STUB IWMProfile_GetStream_Stub(
   1368     IRpcStubBuffer* This,
   1369     IRpcChannelBuffer* pRpcChannelBuffer,
   1370     PRPC_MESSAGE pRpcMessage,
   1371     DWORD* pdwStubPhase);
   1372 HRESULT STDMETHODCALLTYPE IWMProfile_GetStreamByNumber_Proxy(
   1373     IWMProfile* This,
   1374     WORD wStreamNum,
   1375     IWMStreamConfig **ppConfig);
   1376 void __RPC_STUB IWMProfile_GetStreamByNumber_Stub(
   1377     IRpcStubBuffer* This,
   1378     IRpcChannelBuffer* pRpcChannelBuffer,
   1379     PRPC_MESSAGE pRpcMessage,
   1380     DWORD* pdwStubPhase);
   1381 HRESULT STDMETHODCALLTYPE IWMProfile_RemoveStream_Proxy(
   1382     IWMProfile* This,
   1383     IWMStreamConfig *pConfig);
   1384 void __RPC_STUB IWMProfile_RemoveStream_Stub(
   1385     IRpcStubBuffer* This,
   1386     IRpcChannelBuffer* pRpcChannelBuffer,
   1387     PRPC_MESSAGE pRpcMessage,
   1388     DWORD* pdwStubPhase);
   1389 HRESULT STDMETHODCALLTYPE IWMProfile_RemoveStreamByNumber_Proxy(
   1390     IWMProfile* This,
   1391     WORD wStreamNum);
   1392 void __RPC_STUB IWMProfile_RemoveStreamByNumber_Stub(
   1393     IRpcStubBuffer* This,
   1394     IRpcChannelBuffer* pRpcChannelBuffer,
   1395     PRPC_MESSAGE pRpcMessage,
   1396     DWORD* pdwStubPhase);
   1397 HRESULT STDMETHODCALLTYPE IWMProfile_AddStream_Proxy(
   1398     IWMProfile* This,
   1399     IWMStreamConfig *pConfig);
   1400 void __RPC_STUB IWMProfile_AddStream_Stub(
   1401     IRpcStubBuffer* This,
   1402     IRpcChannelBuffer* pRpcChannelBuffer,
   1403     PRPC_MESSAGE pRpcMessage,
   1404     DWORD* pdwStubPhase);
   1405 HRESULT STDMETHODCALLTYPE IWMProfile_ReconfigStream_Proxy(
   1406     IWMProfile* This,
   1407     IWMStreamConfig *pConfig);
   1408 void __RPC_STUB IWMProfile_ReconfigStream_Stub(
   1409     IRpcStubBuffer* This,
   1410     IRpcChannelBuffer* pRpcChannelBuffer,
   1411     PRPC_MESSAGE pRpcMessage,
   1412     DWORD* pdwStubPhase);
   1413 HRESULT STDMETHODCALLTYPE IWMProfile_CreateNewStream_Proxy(
   1414     IWMProfile* This,
   1415     REFGUID guidStreamType,
   1416     IWMStreamConfig **ppConfig);
   1417 void __RPC_STUB IWMProfile_CreateNewStream_Stub(
   1418     IRpcStubBuffer* This,
   1419     IRpcChannelBuffer* pRpcChannelBuffer,
   1420     PRPC_MESSAGE pRpcMessage,
   1421     DWORD* pdwStubPhase);
   1422 HRESULT STDMETHODCALLTYPE IWMProfile_GetMutualExclusionCount_Proxy(
   1423     IWMProfile* This,
   1424     DWORD *pcME);
   1425 void __RPC_STUB IWMProfile_GetMutualExclusionCount_Stub(
   1426     IRpcStubBuffer* This,
   1427     IRpcChannelBuffer* pRpcChannelBuffer,
   1428     PRPC_MESSAGE pRpcMessage,
   1429     DWORD* pdwStubPhase);
   1430 HRESULT STDMETHODCALLTYPE IWMProfile_GetMutualExclusion_Proxy(
   1431     IWMProfile* This,
   1432     DWORD dwMEIndex,
   1433     IWMMutualExclusion **ppME);
   1434 void __RPC_STUB IWMProfile_GetMutualExclusion_Stub(
   1435     IRpcStubBuffer* This,
   1436     IRpcChannelBuffer* pRpcChannelBuffer,
   1437     PRPC_MESSAGE pRpcMessage,
   1438     DWORD* pdwStubPhase);
   1439 HRESULT STDMETHODCALLTYPE IWMProfile_RemoveMutualExclusion_Proxy(
   1440     IWMProfile* This,
   1441     IWMMutualExclusion *pME);
   1442 void __RPC_STUB IWMProfile_RemoveMutualExclusion_Stub(
   1443     IRpcStubBuffer* This,
   1444     IRpcChannelBuffer* pRpcChannelBuffer,
   1445     PRPC_MESSAGE pRpcMessage,
   1446     DWORD* pdwStubPhase);
   1447 HRESULT STDMETHODCALLTYPE IWMProfile_AddMutualExclusion_Proxy(
   1448     IWMProfile* This,
   1449     IWMMutualExclusion *pME);
   1450 void __RPC_STUB IWMProfile_AddMutualExclusion_Stub(
   1451     IRpcStubBuffer* This,
   1452     IRpcChannelBuffer* pRpcChannelBuffer,
   1453     PRPC_MESSAGE pRpcMessage,
   1454     DWORD* pdwStubPhase);
   1455 HRESULT STDMETHODCALLTYPE IWMProfile_CreateNewMutualExclusion_Proxy(
   1456     IWMProfile* This,
   1457     IWMMutualExclusion **ppME);
   1458 void __RPC_STUB IWMProfile_CreateNewMutualExclusion_Stub(
   1459     IRpcStubBuffer* This,
   1460     IRpcChannelBuffer* pRpcChannelBuffer,
   1461     PRPC_MESSAGE pRpcMessage,
   1462     DWORD* pdwStubPhase);
   1463 
   1464 #endif  /* __IWMProfile_INTERFACE_DEFINED__ */
   1465 
   1466 /*****************************************************************************
   1467  * IWMProfileManager interface
   1468  */
   1469 #ifndef __IWMProfileManager_INTERFACE_DEFINED__
   1470 #define __IWMProfileManager_INTERFACE_DEFINED__
   1471 
   1472 DEFINE_GUID(IID_IWMProfileManager, 0xd16679f2, 0x6ca0, 0x472d, 0x8d,0x31, 0x2f,0x5d,0x55,0xae,0xe1,0x55);
   1473 #if defined(__cplusplus) && !defined(CINTERFACE)
   1474 MIDL_INTERFACE("d16679f2-6ca0-472d-8d31-2f5d55aee155")
   1475 IWMProfileManager : public IUnknown
   1476 {
   1477     virtual HRESULT STDMETHODCALLTYPE CreateEmptyProfile(
   1478         WMT_VERSION dwVersion,
   1479         IWMProfile **ppProfile) = 0;
   1480 
   1481     virtual HRESULT STDMETHODCALLTYPE LoadProfileByID(
   1482         REFGUID guidProfile,
   1483         IWMProfile **ppProfile) = 0;
   1484 
   1485     virtual HRESULT STDMETHODCALLTYPE LoadProfileByData(
   1486         const WCHAR *pwszProfile,
   1487         IWMProfile **ppProfile) = 0;
   1488 
   1489     virtual HRESULT STDMETHODCALLTYPE SaveProfile(
   1490         IWMProfile *pIWMProfile,
   1491         WCHAR *pwszProfile,
   1492         DWORD *pdwLength) = 0;
   1493 
   1494     virtual HRESULT STDMETHODCALLTYPE GetSystemProfileCount(
   1495         DWORD *pcProfiles) = 0;
   1496 
   1497     virtual HRESULT STDMETHODCALLTYPE LoadSystemProfile(
   1498         DWORD dwProfileIndex,
   1499         IWMProfile **ppProfile) = 0;
   1500 
   1501 };
   1502 #ifdef __CRT_UUID_DECL
   1503 __CRT_UUID_DECL(IWMProfileManager, 0xd16679f2, 0x6ca0, 0x472d, 0x8d,0x31, 0x2f,0x5d,0x55,0xae,0xe1,0x55)
   1504 #endif
   1505 #else
   1506 typedef struct IWMProfileManagerVtbl {
   1507     BEGIN_INTERFACE
   1508 
   1509     /*** IUnknown methods ***/
   1510     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1511         IWMProfileManager* This,
   1512         REFIID riid,
   1513         void **ppvObject);
   1514 
   1515     ULONG (STDMETHODCALLTYPE *AddRef)(
   1516         IWMProfileManager* This);
   1517 
   1518     ULONG (STDMETHODCALLTYPE *Release)(
   1519         IWMProfileManager* This);
   1520 
   1521     /*** IWMProfileManager methods ***/
   1522     HRESULT (STDMETHODCALLTYPE *CreateEmptyProfile)(
   1523         IWMProfileManager* This,
   1524         WMT_VERSION dwVersion,
   1525         IWMProfile **ppProfile);
   1526 
   1527     HRESULT (STDMETHODCALLTYPE *LoadProfileByID)(
   1528         IWMProfileManager* This,
   1529         REFGUID guidProfile,
   1530         IWMProfile **ppProfile);
   1531 
   1532     HRESULT (STDMETHODCALLTYPE *LoadProfileByData)(
   1533         IWMProfileManager* This,
   1534         const WCHAR *pwszProfile,
   1535         IWMProfile **ppProfile);
   1536 
   1537     HRESULT (STDMETHODCALLTYPE *SaveProfile)(
   1538         IWMProfileManager* This,
   1539         IWMProfile *pIWMProfile,
   1540         WCHAR *pwszProfile,
   1541         DWORD *pdwLength);
   1542 
   1543     HRESULT (STDMETHODCALLTYPE *GetSystemProfileCount)(
   1544         IWMProfileManager* This,
   1545         DWORD *pcProfiles);
   1546 
   1547     HRESULT (STDMETHODCALLTYPE *LoadSystemProfile)(
   1548         IWMProfileManager* This,
   1549         DWORD dwProfileIndex,
   1550         IWMProfile **ppProfile);
   1551 
   1552     END_INTERFACE
   1553 } IWMProfileManagerVtbl;
   1554 interface IWMProfileManager {
   1555     CONST_VTBL IWMProfileManagerVtbl* lpVtbl;
   1556 };
   1557 
   1558 #ifdef COBJMACROS
   1559 #ifndef WIDL_C_INLINE_WRAPPERS
   1560 /*** IUnknown methods ***/
   1561 #define IWMProfileManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1562 #define IWMProfileManager_AddRef(This) (This)->lpVtbl->AddRef(This)
   1563 #define IWMProfileManager_Release(This) (This)->lpVtbl->Release(This)
   1564 /*** IWMProfileManager methods ***/
   1565 #define IWMProfileManager_CreateEmptyProfile(This,dwVersion,ppProfile) (This)->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile)
   1566 #define IWMProfileManager_LoadProfileByID(This,guidProfile,ppProfile) (This)->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile)
   1567 #define IWMProfileManager_LoadProfileByData(This,pwszProfile,ppProfile) (This)->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile)
   1568 #define IWMProfileManager_SaveProfile(This,pIWMProfile,pwszProfile,pdwLength) (This)->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength)
   1569 #define IWMProfileManager_GetSystemProfileCount(This,pcProfiles) (This)->lpVtbl->GetSystemProfileCount(This,pcProfiles)
   1570 #define IWMProfileManager_LoadSystemProfile(This,dwProfileIndex,ppProfile) (This)->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile)
   1571 #else
   1572 /*** IUnknown methods ***/
   1573 static FORCEINLINE HRESULT IWMProfileManager_QueryInterface(IWMProfileManager* This,REFIID riid,void **ppvObject) {
   1574     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1575 }
   1576 static FORCEINLINE ULONG IWMProfileManager_AddRef(IWMProfileManager* This) {
   1577     return This->lpVtbl->AddRef(This);
   1578 }
   1579 static FORCEINLINE ULONG IWMProfileManager_Release(IWMProfileManager* This) {
   1580     return This->lpVtbl->Release(This);
   1581 }
   1582 /*** IWMProfileManager methods ***/
   1583 static FORCEINLINE HRESULT IWMProfileManager_CreateEmptyProfile(IWMProfileManager* This,WMT_VERSION dwVersion,IWMProfile **ppProfile) {
   1584     return This->lpVtbl->CreateEmptyProfile(This,dwVersion,ppProfile);
   1585 }
   1586 static FORCEINLINE HRESULT IWMProfileManager_LoadProfileByID(IWMProfileManager* This,REFGUID guidProfile,IWMProfile **ppProfile) {
   1587     return This->lpVtbl->LoadProfileByID(This,guidProfile,ppProfile);
   1588 }
   1589 static FORCEINLINE HRESULT IWMProfileManager_LoadProfileByData(IWMProfileManager* This,const WCHAR *pwszProfile,IWMProfile **ppProfile) {
   1590     return This->lpVtbl->LoadProfileByData(This,pwszProfile,ppProfile);
   1591 }
   1592 static FORCEINLINE HRESULT IWMProfileManager_SaveProfile(IWMProfileManager* This,IWMProfile *pIWMProfile,WCHAR *pwszProfile,DWORD *pdwLength) {
   1593     return This->lpVtbl->SaveProfile(This,pIWMProfile,pwszProfile,pdwLength);
   1594 }
   1595 static FORCEINLINE HRESULT IWMProfileManager_GetSystemProfileCount(IWMProfileManager* This,DWORD *pcProfiles) {
   1596     return This->lpVtbl->GetSystemProfileCount(This,pcProfiles);
   1597 }
   1598 static FORCEINLINE HRESULT IWMProfileManager_LoadSystemProfile(IWMProfileManager* This,DWORD dwProfileIndex,IWMProfile **ppProfile) {
   1599     return This->lpVtbl->LoadSystemProfile(This,dwProfileIndex,ppProfile);
   1600 }
   1601 #endif
   1602 #endif
   1603 
   1604 #endif
   1605 
   1606 HRESULT STDMETHODCALLTYPE IWMProfileManager_CreateEmptyProfile_Proxy(
   1607     IWMProfileManager* This,
   1608     WMT_VERSION dwVersion,
   1609     IWMProfile **ppProfile);
   1610 void __RPC_STUB IWMProfileManager_CreateEmptyProfile_Stub(
   1611     IRpcStubBuffer* This,
   1612     IRpcChannelBuffer* pRpcChannelBuffer,
   1613     PRPC_MESSAGE pRpcMessage,
   1614     DWORD* pdwStubPhase);
   1615 HRESULT STDMETHODCALLTYPE IWMProfileManager_LoadProfileByID_Proxy(
   1616     IWMProfileManager* This,
   1617     REFGUID guidProfile,
   1618     IWMProfile **ppProfile);
   1619 void __RPC_STUB IWMProfileManager_LoadProfileByID_Stub(
   1620     IRpcStubBuffer* This,
   1621     IRpcChannelBuffer* pRpcChannelBuffer,
   1622     PRPC_MESSAGE pRpcMessage,
   1623     DWORD* pdwStubPhase);
   1624 HRESULT STDMETHODCALLTYPE IWMProfileManager_LoadProfileByData_Proxy(
   1625     IWMProfileManager* This,
   1626     const WCHAR *pwszProfile,
   1627     IWMProfile **ppProfile);
   1628 void __RPC_STUB IWMProfileManager_LoadProfileByData_Stub(
   1629     IRpcStubBuffer* This,
   1630     IRpcChannelBuffer* pRpcChannelBuffer,
   1631     PRPC_MESSAGE pRpcMessage,
   1632     DWORD* pdwStubPhase);
   1633 HRESULT STDMETHODCALLTYPE IWMProfileManager_SaveProfile_Proxy(
   1634     IWMProfileManager* This,
   1635     IWMProfile *pIWMProfile,
   1636     WCHAR *pwszProfile,
   1637     DWORD *pdwLength);
   1638 void __RPC_STUB IWMProfileManager_SaveProfile_Stub(
   1639     IRpcStubBuffer* This,
   1640     IRpcChannelBuffer* pRpcChannelBuffer,
   1641     PRPC_MESSAGE pRpcMessage,
   1642     DWORD* pdwStubPhase);
   1643 HRESULT STDMETHODCALLTYPE IWMProfileManager_GetSystemProfileCount_Proxy(
   1644     IWMProfileManager* This,
   1645     DWORD *pcProfiles);
   1646 void __RPC_STUB IWMProfileManager_GetSystemProfileCount_Stub(
   1647     IRpcStubBuffer* This,
   1648     IRpcChannelBuffer* pRpcChannelBuffer,
   1649     PRPC_MESSAGE pRpcMessage,
   1650     DWORD* pdwStubPhase);
   1651 HRESULT STDMETHODCALLTYPE IWMProfileManager_LoadSystemProfile_Proxy(
   1652     IWMProfileManager* This,
   1653     DWORD dwProfileIndex,
   1654     IWMProfile **ppProfile);
   1655 void __RPC_STUB IWMProfileManager_LoadSystemProfile_Stub(
   1656     IRpcStubBuffer* This,
   1657     IRpcChannelBuffer* pRpcChannelBuffer,
   1658     PRPC_MESSAGE pRpcMessage,
   1659     DWORD* pdwStubPhase);
   1660 
   1661 #endif  /* __IWMProfileManager_INTERFACE_DEFINED__ */
   1662 
   1663 HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);
   1664 /*****************************************************************************
   1665  * IWMMediaProps interface
   1666  */
   1667 #ifndef __IWMMediaProps_INTERFACE_DEFINED__
   1668 #define __IWMMediaProps_INTERFACE_DEFINED__
   1669 
   1670 DEFINE_GUID(IID_IWMMediaProps, 0x96406bce, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   1671 #if defined(__cplusplus) && !defined(CINTERFACE)
   1672 MIDL_INTERFACE("96406bce-2b2b-11d3-b36b-00c04f6108ff")
   1673 IWMMediaProps : public IUnknown
   1674 {
   1675     virtual HRESULT STDMETHODCALLTYPE GetType(
   1676         GUID *pguidType) = 0;
   1677 
   1678     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
   1679         WM_MEDIA_TYPE *pType,
   1680         DWORD *pcbType) = 0;
   1681 
   1682     virtual HRESULT STDMETHODCALLTYPE SetMediaType(
   1683         WM_MEDIA_TYPE *pType) = 0;
   1684 
   1685 };
   1686 #ifdef __CRT_UUID_DECL
   1687 __CRT_UUID_DECL(IWMMediaProps, 0x96406bce, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   1688 #endif
   1689 #else
   1690 typedef struct IWMMediaPropsVtbl {
   1691     BEGIN_INTERFACE
   1692 
   1693     /*** IUnknown methods ***/
   1694     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1695         IWMMediaProps* This,
   1696         REFIID riid,
   1697         void **ppvObject);
   1698 
   1699     ULONG (STDMETHODCALLTYPE *AddRef)(
   1700         IWMMediaProps* This);
   1701 
   1702     ULONG (STDMETHODCALLTYPE *Release)(
   1703         IWMMediaProps* This);
   1704 
   1705     /*** IWMMediaProps methods ***/
   1706     HRESULT (STDMETHODCALLTYPE *GetType)(
   1707         IWMMediaProps* This,
   1708         GUID *pguidType);
   1709 
   1710     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
   1711         IWMMediaProps* This,
   1712         WM_MEDIA_TYPE *pType,
   1713         DWORD *pcbType);
   1714 
   1715     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
   1716         IWMMediaProps* This,
   1717         WM_MEDIA_TYPE *pType);
   1718 
   1719     END_INTERFACE
   1720 } IWMMediaPropsVtbl;
   1721 interface IWMMediaProps {
   1722     CONST_VTBL IWMMediaPropsVtbl* lpVtbl;
   1723 };
   1724 
   1725 #ifdef COBJMACROS
   1726 #ifndef WIDL_C_INLINE_WRAPPERS
   1727 /*** IUnknown methods ***/
   1728 #define IWMMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1729 #define IWMMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
   1730 #define IWMMediaProps_Release(This) (This)->lpVtbl->Release(This)
   1731 /*** IWMMediaProps methods ***/
   1732 #define IWMMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
   1733 #define IWMMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
   1734 #define IWMMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
   1735 #else
   1736 /*** IUnknown methods ***/
   1737 static FORCEINLINE HRESULT IWMMediaProps_QueryInterface(IWMMediaProps* This,REFIID riid,void **ppvObject) {
   1738     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1739 }
   1740 static FORCEINLINE ULONG IWMMediaProps_AddRef(IWMMediaProps* This) {
   1741     return This->lpVtbl->AddRef(This);
   1742 }
   1743 static FORCEINLINE ULONG IWMMediaProps_Release(IWMMediaProps* This) {
   1744     return This->lpVtbl->Release(This);
   1745 }
   1746 /*** IWMMediaProps methods ***/
   1747 static FORCEINLINE HRESULT IWMMediaProps_GetType(IWMMediaProps* This,GUID *pguidType) {
   1748     return This->lpVtbl->GetType(This,pguidType);
   1749 }
   1750 static FORCEINLINE HRESULT IWMMediaProps_GetMediaType(IWMMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
   1751     return This->lpVtbl->GetMediaType(This,pType,pcbType);
   1752 }
   1753 static FORCEINLINE HRESULT IWMMediaProps_SetMediaType(IWMMediaProps* This,WM_MEDIA_TYPE *pType) {
   1754     return This->lpVtbl->SetMediaType(This,pType);
   1755 }
   1756 #endif
   1757 #endif
   1758 
   1759 #endif
   1760 
   1761 HRESULT STDMETHODCALLTYPE IWMMediaProps_GetType_Proxy(
   1762     IWMMediaProps* This,
   1763     GUID *pguidType);
   1764 void __RPC_STUB IWMMediaProps_GetType_Stub(
   1765     IRpcStubBuffer* This,
   1766     IRpcChannelBuffer* pRpcChannelBuffer,
   1767     PRPC_MESSAGE pRpcMessage,
   1768     DWORD* pdwStubPhase);
   1769 HRESULT STDMETHODCALLTYPE IWMMediaProps_GetMediaType_Proxy(
   1770     IWMMediaProps* This,
   1771     WM_MEDIA_TYPE *pType,
   1772     DWORD *pcbType);
   1773 void __RPC_STUB IWMMediaProps_GetMediaType_Stub(
   1774     IRpcStubBuffer* This,
   1775     IRpcChannelBuffer* pRpcChannelBuffer,
   1776     PRPC_MESSAGE pRpcMessage,
   1777     DWORD* pdwStubPhase);
   1778 HRESULT STDMETHODCALLTYPE IWMMediaProps_SetMediaType_Proxy(
   1779     IWMMediaProps* This,
   1780     WM_MEDIA_TYPE *pType);
   1781 void __RPC_STUB IWMMediaProps_SetMediaType_Stub(
   1782     IRpcStubBuffer* This,
   1783     IRpcChannelBuffer* pRpcChannelBuffer,
   1784     PRPC_MESSAGE pRpcMessage,
   1785     DWORD* pdwStubPhase);
   1786 
   1787 #endif  /* __IWMMediaProps_INTERFACE_DEFINED__ */
   1788 
   1789 /*****************************************************************************
   1790  * IWMOutputMediaProps interface
   1791  */
   1792 #ifndef __IWMOutputMediaProps_INTERFACE_DEFINED__
   1793 #define __IWMOutputMediaProps_INTERFACE_DEFINED__
   1794 
   1795 DEFINE_GUID(IID_IWMOutputMediaProps, 0x96406bd7, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   1796 #if defined(__cplusplus) && !defined(CINTERFACE)
   1797 MIDL_INTERFACE("96406bd7-2b2b-11d3-b36b-00c04f6108ff")
   1798 IWMOutputMediaProps : public IWMMediaProps
   1799 {
   1800     virtual HRESULT STDMETHODCALLTYPE GetStreamGroupName(
   1801         WCHAR *pwszName,
   1802         WORD *pcchName) = 0;
   1803 
   1804     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
   1805         WCHAR *pwszName,
   1806         WORD *pcchName) = 0;
   1807 
   1808 };
   1809 #ifdef __CRT_UUID_DECL
   1810 __CRT_UUID_DECL(IWMOutputMediaProps, 0x96406bd7, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   1811 #endif
   1812 #else
   1813 typedef struct IWMOutputMediaPropsVtbl {
   1814     BEGIN_INTERFACE
   1815 
   1816     /*** IUnknown methods ***/
   1817     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1818         IWMOutputMediaProps* This,
   1819         REFIID riid,
   1820         void **ppvObject);
   1821 
   1822     ULONG (STDMETHODCALLTYPE *AddRef)(
   1823         IWMOutputMediaProps* This);
   1824 
   1825     ULONG (STDMETHODCALLTYPE *Release)(
   1826         IWMOutputMediaProps* This);
   1827 
   1828     /*** IWMMediaProps methods ***/
   1829     HRESULT (STDMETHODCALLTYPE *GetType)(
   1830         IWMOutputMediaProps* This,
   1831         GUID *pguidType);
   1832 
   1833     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
   1834         IWMOutputMediaProps* This,
   1835         WM_MEDIA_TYPE *pType,
   1836         DWORD *pcbType);
   1837 
   1838     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
   1839         IWMOutputMediaProps* This,
   1840         WM_MEDIA_TYPE *pType);
   1841 
   1842     /*** IWMOutputMediaProps methods ***/
   1843     HRESULT (STDMETHODCALLTYPE *GetStreamGroupName)(
   1844         IWMOutputMediaProps* This,
   1845         WCHAR *pwszName,
   1846         WORD *pcchName);
   1847 
   1848     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
   1849         IWMOutputMediaProps* This,
   1850         WCHAR *pwszName,
   1851         WORD *pcchName);
   1852 
   1853     END_INTERFACE
   1854 } IWMOutputMediaPropsVtbl;
   1855 interface IWMOutputMediaProps {
   1856     CONST_VTBL IWMOutputMediaPropsVtbl* lpVtbl;
   1857 };
   1858 
   1859 #ifdef COBJMACROS
   1860 #ifndef WIDL_C_INLINE_WRAPPERS
   1861 /*** IUnknown methods ***/
   1862 #define IWMOutputMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1863 #define IWMOutputMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
   1864 #define IWMOutputMediaProps_Release(This) (This)->lpVtbl->Release(This)
   1865 /*** IWMMediaProps methods ***/
   1866 #define IWMOutputMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
   1867 #define IWMOutputMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
   1868 #define IWMOutputMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
   1869 /*** IWMOutputMediaProps methods ***/
   1870 #define IWMOutputMediaProps_GetStreamGroupName(This,pwszName,pcchName) (This)->lpVtbl->GetStreamGroupName(This,pwszName,pcchName)
   1871 #define IWMOutputMediaProps_GetConnectionName(This,pwszName,pcchName) (This)->lpVtbl->GetConnectionName(This,pwszName,pcchName)
   1872 #else
   1873 /*** IUnknown methods ***/
   1874 static FORCEINLINE HRESULT IWMOutputMediaProps_QueryInterface(IWMOutputMediaProps* This,REFIID riid,void **ppvObject) {
   1875     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1876 }
   1877 static FORCEINLINE ULONG IWMOutputMediaProps_AddRef(IWMOutputMediaProps* This) {
   1878     return This->lpVtbl->AddRef(This);
   1879 }
   1880 static FORCEINLINE ULONG IWMOutputMediaProps_Release(IWMOutputMediaProps* This) {
   1881     return This->lpVtbl->Release(This);
   1882 }
   1883 /*** IWMMediaProps methods ***/
   1884 static FORCEINLINE HRESULT IWMOutputMediaProps_GetType(IWMOutputMediaProps* This,GUID *pguidType) {
   1885     return This->lpVtbl->GetType(This,pguidType);
   1886 }
   1887 static FORCEINLINE HRESULT IWMOutputMediaProps_GetMediaType(IWMOutputMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
   1888     return This->lpVtbl->GetMediaType(This,pType,pcbType);
   1889 }
   1890 static FORCEINLINE HRESULT IWMOutputMediaProps_SetMediaType(IWMOutputMediaProps* This,WM_MEDIA_TYPE *pType) {
   1891     return This->lpVtbl->SetMediaType(This,pType);
   1892 }
   1893 /*** IWMOutputMediaProps methods ***/
   1894 static FORCEINLINE HRESULT IWMOutputMediaProps_GetStreamGroupName(IWMOutputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
   1895     return This->lpVtbl->GetStreamGroupName(This,pwszName,pcchName);
   1896 }
   1897 static FORCEINLINE HRESULT IWMOutputMediaProps_GetConnectionName(IWMOutputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
   1898     return This->lpVtbl->GetConnectionName(This,pwszName,pcchName);
   1899 }
   1900 #endif
   1901 #endif
   1902 
   1903 #endif
   1904 
   1905 HRESULT STDMETHODCALLTYPE IWMOutputMediaProps_GetStreamGroupName_Proxy(
   1906     IWMOutputMediaProps* This,
   1907     WCHAR *pwszName,
   1908     WORD *pcchName);
   1909 void __RPC_STUB IWMOutputMediaProps_GetStreamGroupName_Stub(
   1910     IRpcStubBuffer* This,
   1911     IRpcChannelBuffer* pRpcChannelBuffer,
   1912     PRPC_MESSAGE pRpcMessage,
   1913     DWORD* pdwStubPhase);
   1914 HRESULT STDMETHODCALLTYPE IWMOutputMediaProps_GetConnectionName_Proxy(
   1915     IWMOutputMediaProps* This,
   1916     WCHAR *pwszName,
   1917     WORD *pcchName);
   1918 void __RPC_STUB IWMOutputMediaProps_GetConnectionName_Stub(
   1919     IRpcStubBuffer* This,
   1920     IRpcChannelBuffer* pRpcChannelBuffer,
   1921     PRPC_MESSAGE pRpcMessage,
   1922     DWORD* pdwStubPhase);
   1923 
   1924 #endif  /* __IWMOutputMediaProps_INTERFACE_DEFINED__ */
   1925 
   1926 /*****************************************************************************
   1927  * IWMMetadataEditor interface
   1928  */
   1929 #ifndef __IWMMetadataEditor_INTERFACE_DEFINED__
   1930 #define __IWMMetadataEditor_INTERFACE_DEFINED__
   1931 
   1932 DEFINE_GUID(IID_IWMMetadataEditor, 0x96406bd9, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   1933 #if defined(__cplusplus) && !defined(CINTERFACE)
   1934 MIDL_INTERFACE("96406bd9-2b2b-11d3-b36b-00c04f6108ff")
   1935 IWMMetadataEditor : public IUnknown
   1936 {
   1937     virtual HRESULT STDMETHODCALLTYPE Open(
   1938         const WCHAR *pwszFilename) = 0;
   1939 
   1940     virtual HRESULT STDMETHODCALLTYPE Close(
   1941         ) = 0;
   1942 
   1943     virtual HRESULT STDMETHODCALLTYPE Flush(
   1944         ) = 0;
   1945 
   1946 };
   1947 #ifdef __CRT_UUID_DECL
   1948 __CRT_UUID_DECL(IWMMetadataEditor, 0x96406bd9, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   1949 #endif
   1950 #else
   1951 typedef struct IWMMetadataEditorVtbl {
   1952     BEGIN_INTERFACE
   1953 
   1954     /*** IUnknown methods ***/
   1955     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1956         IWMMetadataEditor* This,
   1957         REFIID riid,
   1958         void **ppvObject);
   1959 
   1960     ULONG (STDMETHODCALLTYPE *AddRef)(
   1961         IWMMetadataEditor* This);
   1962 
   1963     ULONG (STDMETHODCALLTYPE *Release)(
   1964         IWMMetadataEditor* This);
   1965 
   1966     /*** IWMMetadataEditor methods ***/
   1967     HRESULT (STDMETHODCALLTYPE *Open)(
   1968         IWMMetadataEditor* This,
   1969         const WCHAR *pwszFilename);
   1970 
   1971     HRESULT (STDMETHODCALLTYPE *Close)(
   1972         IWMMetadataEditor* This);
   1973 
   1974     HRESULT (STDMETHODCALLTYPE *Flush)(
   1975         IWMMetadataEditor* This);
   1976 
   1977     END_INTERFACE
   1978 } IWMMetadataEditorVtbl;
   1979 interface IWMMetadataEditor {
   1980     CONST_VTBL IWMMetadataEditorVtbl* lpVtbl;
   1981 };
   1982 
   1983 #ifdef COBJMACROS
   1984 #ifndef WIDL_C_INLINE_WRAPPERS
   1985 /*** IUnknown methods ***/
   1986 #define IWMMetadataEditor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1987 #define IWMMetadataEditor_AddRef(This) (This)->lpVtbl->AddRef(This)
   1988 #define IWMMetadataEditor_Release(This) (This)->lpVtbl->Release(This)
   1989 /*** IWMMetadataEditor methods ***/
   1990 #define IWMMetadataEditor_Open(This,pwszFilename) (This)->lpVtbl->Open(This,pwszFilename)
   1991 #define IWMMetadataEditor_Close(This) (This)->lpVtbl->Close(This)
   1992 #define IWMMetadataEditor_Flush(This) (This)->lpVtbl->Flush(This)
   1993 #else
   1994 /*** IUnknown methods ***/
   1995 static FORCEINLINE HRESULT IWMMetadataEditor_QueryInterface(IWMMetadataEditor* This,REFIID riid,void **ppvObject) {
   1996     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1997 }
   1998 static FORCEINLINE ULONG IWMMetadataEditor_AddRef(IWMMetadataEditor* This) {
   1999     return This->lpVtbl->AddRef(This);
   2000 }
   2001 static FORCEINLINE ULONG IWMMetadataEditor_Release(IWMMetadataEditor* This) {
   2002     return This->lpVtbl->Release(This);
   2003 }
   2004 /*** IWMMetadataEditor methods ***/
   2005 static FORCEINLINE HRESULT IWMMetadataEditor_Open(IWMMetadataEditor* This,const WCHAR *pwszFilename) {
   2006     return This->lpVtbl->Open(This,pwszFilename);
   2007 }
   2008 static FORCEINLINE HRESULT IWMMetadataEditor_Close(IWMMetadataEditor* This) {
   2009     return This->lpVtbl->Close(This);
   2010 }
   2011 static FORCEINLINE HRESULT IWMMetadataEditor_Flush(IWMMetadataEditor* This) {
   2012     return This->lpVtbl->Flush(This);
   2013 }
   2014 #endif
   2015 #endif
   2016 
   2017 #endif
   2018 
   2019 HRESULT STDMETHODCALLTYPE IWMMetadataEditor_Open_Proxy(
   2020     IWMMetadataEditor* This,
   2021     const WCHAR *pwszFilename);
   2022 void __RPC_STUB IWMMetadataEditor_Open_Stub(
   2023     IRpcStubBuffer* This,
   2024     IRpcChannelBuffer* pRpcChannelBuffer,
   2025     PRPC_MESSAGE pRpcMessage,
   2026     DWORD* pdwStubPhase);
   2027 HRESULT STDMETHODCALLTYPE IWMMetadataEditor_Close_Proxy(
   2028     IWMMetadataEditor* This);
   2029 void __RPC_STUB IWMMetadataEditor_Close_Stub(
   2030     IRpcStubBuffer* This,
   2031     IRpcChannelBuffer* pRpcChannelBuffer,
   2032     PRPC_MESSAGE pRpcMessage,
   2033     DWORD* pdwStubPhase);
   2034 HRESULT STDMETHODCALLTYPE IWMMetadataEditor_Flush_Proxy(
   2035     IWMMetadataEditor* This);
   2036 void __RPC_STUB IWMMetadataEditor_Flush_Stub(
   2037     IRpcStubBuffer* This,
   2038     IRpcChannelBuffer* pRpcChannelBuffer,
   2039     PRPC_MESSAGE pRpcMessage,
   2040     DWORD* pdwStubPhase);
   2041 
   2042 #endif  /* __IWMMetadataEditor_INTERFACE_DEFINED__ */
   2043 
   2044 /*****************************************************************************
   2045  * IWMReader interface
   2046  */
   2047 #ifndef __IWMReader_INTERFACE_DEFINED__
   2048 #define __IWMReader_INTERFACE_DEFINED__
   2049 
   2050 DEFINE_GUID(IID_IWMReader, 0x96406bd6, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   2051 #if defined(__cplusplus) && !defined(CINTERFACE)
   2052 MIDL_INTERFACE("96406bd6-2b2b-11d3-b36b-00c04f6108ff")
   2053 IWMReader : public IUnknown
   2054 {
   2055     virtual HRESULT STDMETHODCALLTYPE Open(
   2056         const WCHAR *pwszURL,
   2057         IWMReaderCallback *pCallback,
   2058         void *pvContext) = 0;
   2059 
   2060     virtual HRESULT STDMETHODCALLTYPE Close(
   2061         ) = 0;
   2062 
   2063     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
   2064         DWORD *pcOutputs) = 0;
   2065 
   2066     virtual HRESULT STDMETHODCALLTYPE GetOutputProps(
   2067         DWORD dwOutputNum,
   2068         IWMOutputMediaProps **ppOutput) = 0;
   2069 
   2070     virtual HRESULT STDMETHODCALLTYPE SetOutputProps(
   2071         DWORD dwOutputNum,
   2072         IWMOutputMediaProps *pOutput) = 0;
   2073 
   2074     virtual HRESULT STDMETHODCALLTYPE GetOutputFormatCount(
   2075         DWORD dwOutputNumber,
   2076         DWORD *pcFormats) = 0;
   2077 
   2078     virtual HRESULT STDMETHODCALLTYPE GetOutputFormat(
   2079         DWORD dwOutputNumber,
   2080         DWORD dwFormatNumber,
   2081         IWMOutputMediaProps **ppProps) = 0;
   2082 
   2083     virtual HRESULT STDMETHODCALLTYPE Start(
   2084         QWORD cnsStart,
   2085         QWORD cnsDuration,
   2086         float fRate,
   2087         void *pvContext) = 0;
   2088 
   2089     virtual HRESULT STDMETHODCALLTYPE Stop(
   2090         ) = 0;
   2091 
   2092     virtual HRESULT STDMETHODCALLTYPE Pause(
   2093         ) = 0;
   2094 
   2095     virtual HRESULT STDMETHODCALLTYPE Resume(
   2096         ) = 0;
   2097 
   2098 };
   2099 #ifdef __CRT_UUID_DECL
   2100 __CRT_UUID_DECL(IWMReader, 0x96406bd6, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   2101 #endif
   2102 #else
   2103 typedef struct IWMReaderVtbl {
   2104     BEGIN_INTERFACE
   2105 
   2106     /*** IUnknown methods ***/
   2107     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2108         IWMReader* This,
   2109         REFIID riid,
   2110         void **ppvObject);
   2111 
   2112     ULONG (STDMETHODCALLTYPE *AddRef)(
   2113         IWMReader* This);
   2114 
   2115     ULONG (STDMETHODCALLTYPE *Release)(
   2116         IWMReader* This);
   2117 
   2118     /*** IWMReader methods ***/
   2119     HRESULT (STDMETHODCALLTYPE *Open)(
   2120         IWMReader* This,
   2121         const WCHAR *pwszURL,
   2122         IWMReaderCallback *pCallback,
   2123         void *pvContext);
   2124 
   2125     HRESULT (STDMETHODCALLTYPE *Close)(
   2126         IWMReader* This);
   2127 
   2128     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
   2129         IWMReader* This,
   2130         DWORD *pcOutputs);
   2131 
   2132     HRESULT (STDMETHODCALLTYPE *GetOutputProps)(
   2133         IWMReader* This,
   2134         DWORD dwOutputNum,
   2135         IWMOutputMediaProps **ppOutput);
   2136 
   2137     HRESULT (STDMETHODCALLTYPE *SetOutputProps)(
   2138         IWMReader* This,
   2139         DWORD dwOutputNum,
   2140         IWMOutputMediaProps *pOutput);
   2141 
   2142     HRESULT (STDMETHODCALLTYPE *GetOutputFormatCount)(
   2143         IWMReader* This,
   2144         DWORD dwOutputNumber,
   2145         DWORD *pcFormats);
   2146 
   2147     HRESULT (STDMETHODCALLTYPE *GetOutputFormat)(
   2148         IWMReader* This,
   2149         DWORD dwOutputNumber,
   2150         DWORD dwFormatNumber,
   2151         IWMOutputMediaProps **ppProps);
   2152 
   2153     HRESULT (STDMETHODCALLTYPE *Start)(
   2154         IWMReader* This,
   2155         QWORD cnsStart,
   2156         QWORD cnsDuration,
   2157         float fRate,
   2158         void *pvContext);
   2159 
   2160     HRESULT (STDMETHODCALLTYPE *Stop)(
   2161         IWMReader* This);
   2162 
   2163     HRESULT (STDMETHODCALLTYPE *Pause)(
   2164         IWMReader* This);
   2165 
   2166     HRESULT (STDMETHODCALLTYPE *Resume)(
   2167         IWMReader* This);
   2168 
   2169     END_INTERFACE
   2170 } IWMReaderVtbl;
   2171 interface IWMReader {
   2172     CONST_VTBL IWMReaderVtbl* lpVtbl;
   2173 };
   2174 
   2175 #ifdef COBJMACROS
   2176 #ifndef WIDL_C_INLINE_WRAPPERS
   2177 /*** IUnknown methods ***/
   2178 #define IWMReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2179 #define IWMReader_AddRef(This) (This)->lpVtbl->AddRef(This)
   2180 #define IWMReader_Release(This) (This)->lpVtbl->Release(This)
   2181 /*** IWMReader methods ***/
   2182 #define IWMReader_Open(This,pwszURL,pCallback,pvContext) (This)->lpVtbl->Open(This,pwszURL,pCallback,pvContext)
   2183 #define IWMReader_Close(This) (This)->lpVtbl->Close(This)
   2184 #define IWMReader_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
   2185 #define IWMReader_GetOutputProps(This,dwOutputNum,ppOutput) (This)->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput)
   2186 #define IWMReader_SetOutputProps(This,dwOutputNum,pOutput) (This)->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput)
   2187 #define IWMReader_GetOutputFormatCount(This,dwOutputNumber,pcFormats) (This)->lpVtbl->GetOutputFormatCount(This,dwOutputNumber,pcFormats)
   2188 #define IWMReader_GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps) (This)->lpVtbl->GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps)
   2189 #define IWMReader_Start(This,cnsStart,cnsDuration,fRate,pvContext) (This)->lpVtbl->Start(This,cnsStart,cnsDuration,fRate,pvContext)
   2190 #define IWMReader_Stop(This) (This)->lpVtbl->Stop(This)
   2191 #define IWMReader_Pause(This) (This)->lpVtbl->Pause(This)
   2192 #define IWMReader_Resume(This) (This)->lpVtbl->Resume(This)
   2193 #else
   2194 /*** IUnknown methods ***/
   2195 static FORCEINLINE HRESULT IWMReader_QueryInterface(IWMReader* This,REFIID riid,void **ppvObject) {
   2196     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2197 }
   2198 static FORCEINLINE ULONG IWMReader_AddRef(IWMReader* This) {
   2199     return This->lpVtbl->AddRef(This);
   2200 }
   2201 static FORCEINLINE ULONG IWMReader_Release(IWMReader* This) {
   2202     return This->lpVtbl->Release(This);
   2203 }
   2204 /*** IWMReader methods ***/
   2205 static FORCEINLINE HRESULT IWMReader_Open(IWMReader* This,const WCHAR *pwszURL,IWMReaderCallback *pCallback,void *pvContext) {
   2206     return This->lpVtbl->Open(This,pwszURL,pCallback,pvContext);
   2207 }
   2208 static FORCEINLINE HRESULT IWMReader_Close(IWMReader* This) {
   2209     return This->lpVtbl->Close(This);
   2210 }
   2211 static FORCEINLINE HRESULT IWMReader_GetOutputCount(IWMReader* This,DWORD *pcOutputs) {
   2212     return This->lpVtbl->GetOutputCount(This,pcOutputs);
   2213 }
   2214 static FORCEINLINE HRESULT IWMReader_GetOutputProps(IWMReader* This,DWORD dwOutputNum,IWMOutputMediaProps **ppOutput) {
   2215     return This->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput);
   2216 }
   2217 static FORCEINLINE HRESULT IWMReader_SetOutputProps(IWMReader* This,DWORD dwOutputNum,IWMOutputMediaProps *pOutput) {
   2218     return This->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput);
   2219 }
   2220 static FORCEINLINE HRESULT IWMReader_GetOutputFormatCount(IWMReader* This,DWORD dwOutputNumber,DWORD *pcFormats) {
   2221     return This->lpVtbl->GetOutputFormatCount(This,dwOutputNumber,pcFormats);
   2222 }
   2223 static FORCEINLINE HRESULT IWMReader_GetOutputFormat(IWMReader* This,DWORD dwOutputNumber,DWORD dwFormatNumber,IWMOutputMediaProps **ppProps) {
   2224     return This->lpVtbl->GetOutputFormat(This,dwOutputNumber,dwFormatNumber,ppProps);
   2225 }
   2226 static FORCEINLINE HRESULT IWMReader_Start(IWMReader* This,QWORD cnsStart,QWORD cnsDuration,float fRate,void *pvContext) {
   2227     return This->lpVtbl->Start(This,cnsStart,cnsDuration,fRate,pvContext);
   2228 }
   2229 static FORCEINLINE HRESULT IWMReader_Stop(IWMReader* This) {
   2230     return This->lpVtbl->Stop(This);
   2231 }
   2232 static FORCEINLINE HRESULT IWMReader_Pause(IWMReader* This) {
   2233     return This->lpVtbl->Pause(This);
   2234 }
   2235 static FORCEINLINE HRESULT IWMReader_Resume(IWMReader* This) {
   2236     return This->lpVtbl->Resume(This);
   2237 }
   2238 #endif
   2239 #endif
   2240 
   2241 #endif
   2242 
   2243 HRESULT STDMETHODCALLTYPE IWMReader_Open_Proxy(
   2244     IWMReader* This,
   2245     const WCHAR *pwszURL,
   2246     IWMReaderCallback *pCallback,
   2247     void *pvContext);
   2248 void __RPC_STUB IWMReader_Open_Stub(
   2249     IRpcStubBuffer* This,
   2250     IRpcChannelBuffer* pRpcChannelBuffer,
   2251     PRPC_MESSAGE pRpcMessage,
   2252     DWORD* pdwStubPhase);
   2253 HRESULT STDMETHODCALLTYPE IWMReader_Close_Proxy(
   2254     IWMReader* This);
   2255 void __RPC_STUB IWMReader_Close_Stub(
   2256     IRpcStubBuffer* This,
   2257     IRpcChannelBuffer* pRpcChannelBuffer,
   2258     PRPC_MESSAGE pRpcMessage,
   2259     DWORD* pdwStubPhase);
   2260 HRESULT STDMETHODCALLTYPE IWMReader_GetOutputCount_Proxy(
   2261     IWMReader* This,
   2262     DWORD *pcOutputs);
   2263 void __RPC_STUB IWMReader_GetOutputCount_Stub(
   2264     IRpcStubBuffer* This,
   2265     IRpcChannelBuffer* pRpcChannelBuffer,
   2266     PRPC_MESSAGE pRpcMessage,
   2267     DWORD* pdwStubPhase);
   2268 HRESULT STDMETHODCALLTYPE IWMReader_GetOutputProps_Proxy(
   2269     IWMReader* This,
   2270     DWORD dwOutputNum,
   2271     IWMOutputMediaProps **ppOutput);
   2272 void __RPC_STUB IWMReader_GetOutputProps_Stub(
   2273     IRpcStubBuffer* This,
   2274     IRpcChannelBuffer* pRpcChannelBuffer,
   2275     PRPC_MESSAGE pRpcMessage,
   2276     DWORD* pdwStubPhase);
   2277 HRESULT STDMETHODCALLTYPE IWMReader_SetOutputProps_Proxy(
   2278     IWMReader* This,
   2279     DWORD dwOutputNum,
   2280     IWMOutputMediaProps *pOutput);
   2281 void __RPC_STUB IWMReader_SetOutputProps_Stub(
   2282     IRpcStubBuffer* This,
   2283     IRpcChannelBuffer* pRpcChannelBuffer,
   2284     PRPC_MESSAGE pRpcMessage,
   2285     DWORD* pdwStubPhase);
   2286 HRESULT STDMETHODCALLTYPE IWMReader_GetOutputFormatCount_Proxy(
   2287     IWMReader* This,
   2288     DWORD dwOutputNumber,
   2289     DWORD *pcFormats);
   2290 void __RPC_STUB IWMReader_GetOutputFormatCount_Stub(
   2291     IRpcStubBuffer* This,
   2292     IRpcChannelBuffer* pRpcChannelBuffer,
   2293     PRPC_MESSAGE pRpcMessage,
   2294     DWORD* pdwStubPhase);
   2295 HRESULT STDMETHODCALLTYPE IWMReader_GetOutputFormat_Proxy(
   2296     IWMReader* This,
   2297     DWORD dwOutputNumber,
   2298     DWORD dwFormatNumber,
   2299     IWMOutputMediaProps **ppProps);
   2300 void __RPC_STUB IWMReader_GetOutputFormat_Stub(
   2301     IRpcStubBuffer* This,
   2302     IRpcChannelBuffer* pRpcChannelBuffer,
   2303     PRPC_MESSAGE pRpcMessage,
   2304     DWORD* pdwStubPhase);
   2305 HRESULT STDMETHODCALLTYPE IWMReader_Start_Proxy(
   2306     IWMReader* This,
   2307     QWORD cnsStart,
   2308     QWORD cnsDuration,
   2309     float fRate,
   2310     void *pvContext);
   2311 void __RPC_STUB IWMReader_Start_Stub(
   2312     IRpcStubBuffer* This,
   2313     IRpcChannelBuffer* pRpcChannelBuffer,
   2314     PRPC_MESSAGE pRpcMessage,
   2315     DWORD* pdwStubPhase);
   2316 HRESULT STDMETHODCALLTYPE IWMReader_Stop_Proxy(
   2317     IWMReader* This);
   2318 void __RPC_STUB IWMReader_Stop_Stub(
   2319     IRpcStubBuffer* This,
   2320     IRpcChannelBuffer* pRpcChannelBuffer,
   2321     PRPC_MESSAGE pRpcMessage,
   2322     DWORD* pdwStubPhase);
   2323 HRESULT STDMETHODCALLTYPE IWMReader_Pause_Proxy(
   2324     IWMReader* This);
   2325 void __RPC_STUB IWMReader_Pause_Stub(
   2326     IRpcStubBuffer* This,
   2327     IRpcChannelBuffer* pRpcChannelBuffer,
   2328     PRPC_MESSAGE pRpcMessage,
   2329     DWORD* pdwStubPhase);
   2330 HRESULT STDMETHODCALLTYPE IWMReader_Resume_Proxy(
   2331     IWMReader* This);
   2332 void __RPC_STUB IWMReader_Resume_Stub(
   2333     IRpcStubBuffer* This,
   2334     IRpcChannelBuffer* pRpcChannelBuffer,
   2335     PRPC_MESSAGE pRpcMessage,
   2336     DWORD* pdwStubPhase);
   2337 
   2338 #endif  /* __IWMReader_INTERFACE_DEFINED__ */
   2339 
   2340 /*****************************************************************************
   2341  * IWMPlayerHook interface
   2342  */
   2343 #ifndef __IWMPlayerHook_INTERFACE_DEFINED__
   2344 #define __IWMPlayerHook_INTERFACE_DEFINED__
   2345 
   2346 DEFINE_GUID(IID_IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04);
   2347 #if defined(__cplusplus) && !defined(CINTERFACE)
   2348 MIDL_INTERFACE("e5b7ca9a-0f1c-4f66-9002-74ec50d8b304")
   2349 IWMPlayerHook : public IUnknown
   2350 {
   2351     virtual HRESULT STDMETHODCALLTYPE PreDecode(
   2352         ) = 0;
   2353 
   2354 };
   2355 #ifdef __CRT_UUID_DECL
   2356 __CRT_UUID_DECL(IWMPlayerHook, 0xe5b7ca9a, 0x0f1c, 0x4f66, 0x90,0x02, 0x74,0xec,0x50,0xd8,0xb3,0x04)
   2357 #endif
   2358 #else
   2359 typedef struct IWMPlayerHookVtbl {
   2360     BEGIN_INTERFACE
   2361 
   2362     /*** IUnknown methods ***/
   2363     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2364         IWMPlayerHook* This,
   2365         REFIID riid,
   2366         void **ppvObject);
   2367 
   2368     ULONG (STDMETHODCALLTYPE *AddRef)(
   2369         IWMPlayerHook* This);
   2370 
   2371     ULONG (STDMETHODCALLTYPE *Release)(
   2372         IWMPlayerHook* This);
   2373 
   2374     /*** IWMPlayerHook methods ***/
   2375     HRESULT (STDMETHODCALLTYPE *PreDecode)(
   2376         IWMPlayerHook* This);
   2377 
   2378     END_INTERFACE
   2379 } IWMPlayerHookVtbl;
   2380 interface IWMPlayerHook {
   2381     CONST_VTBL IWMPlayerHookVtbl* lpVtbl;
   2382 };
   2383 
   2384 #ifdef COBJMACROS
   2385 #ifndef WIDL_C_INLINE_WRAPPERS
   2386 /*** IUnknown methods ***/
   2387 #define IWMPlayerHook_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2388 #define IWMPlayerHook_AddRef(This) (This)->lpVtbl->AddRef(This)
   2389 #define IWMPlayerHook_Release(This) (This)->lpVtbl->Release(This)
   2390 /*** IWMPlayerHook methods ***/
   2391 #define IWMPlayerHook_PreDecode(This) (This)->lpVtbl->PreDecode(This)
   2392 #else
   2393 /*** IUnknown methods ***/
   2394 static FORCEINLINE HRESULT IWMPlayerHook_QueryInterface(IWMPlayerHook* This,REFIID riid,void **ppvObject) {
   2395     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2396 }
   2397 static FORCEINLINE ULONG IWMPlayerHook_AddRef(IWMPlayerHook* This) {
   2398     return This->lpVtbl->AddRef(This);
   2399 }
   2400 static FORCEINLINE ULONG IWMPlayerHook_Release(IWMPlayerHook* This) {
   2401     return This->lpVtbl->Release(This);
   2402 }
   2403 /*** IWMPlayerHook methods ***/
   2404 static FORCEINLINE HRESULT IWMPlayerHook_PreDecode(IWMPlayerHook* This) {
   2405     return This->lpVtbl->PreDecode(This);
   2406 }
   2407 #endif
   2408 #endif
   2409 
   2410 #endif
   2411 
   2412 HRESULT STDMETHODCALLTYPE IWMPlayerHook_PreDecode_Proxy(
   2413     IWMPlayerHook* This);
   2414 void __RPC_STUB IWMPlayerHook_PreDecode_Stub(
   2415     IRpcStubBuffer* This,
   2416     IRpcChannelBuffer* pRpcChannelBuffer,
   2417     PRPC_MESSAGE pRpcMessage,
   2418     DWORD* pdwStubPhase);
   2419 
   2420 #endif  /* __IWMPlayerHook_INTERFACE_DEFINED__ */
   2421 
   2422 /*****************************************************************************
   2423  * IWMReaderAdvanced interface
   2424  */
   2425 #ifndef __IWMReaderAdvanced_INTERFACE_DEFINED__
   2426 #define __IWMReaderAdvanced_INTERFACE_DEFINED__
   2427 
   2428 DEFINE_GUID(IID_IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   2429 #if defined(__cplusplus) && !defined(CINTERFACE)
   2430 MIDL_INTERFACE("96406bea-2b2b-11d3-b36b-00c04f6108ff")
   2431 IWMReaderAdvanced : public IUnknown
   2432 {
   2433     virtual HRESULT STDMETHODCALLTYPE SetUserProvidedClock(
   2434         WINBOOL fUserClock) = 0;
   2435 
   2436     virtual HRESULT STDMETHODCALLTYPE GetUserProvidedClock(
   2437         WINBOOL *pfUserClock) = 0;
   2438 
   2439     virtual HRESULT STDMETHODCALLTYPE DeliverTime(
   2440         QWORD cnsTime) = 0;
   2441 
   2442     virtual HRESULT STDMETHODCALLTYPE SetManualStreamSelection(
   2443         WINBOOL fSelection) = 0;
   2444 
   2445     virtual HRESULT STDMETHODCALLTYPE GetManualStreamSelection(
   2446         WINBOOL *pfSelection) = 0;
   2447 
   2448     virtual HRESULT STDMETHODCALLTYPE SetStreamsSelected(
   2449         WORD cStreamCount,
   2450         WORD *pwStreamNumbers,
   2451         WMT_STREAM_SELECTION *pSelections) = 0;
   2452 
   2453     virtual HRESULT STDMETHODCALLTYPE GetStreamSelected(
   2454         WORD wStreamNum,
   2455         WMT_STREAM_SELECTION *pSelection) = 0;
   2456 
   2457     virtual HRESULT STDMETHODCALLTYPE SetReceiveSelectionCallbacks(
   2458         WINBOOL fGetCallbacks) = 0;
   2459 
   2460     virtual HRESULT STDMETHODCALLTYPE GetReceiveSelectionCallbacks(
   2461         WINBOOL *pfGetCallbacks) = 0;
   2462 
   2463     virtual HRESULT STDMETHODCALLTYPE SetReceiveStreamSamples(
   2464         WORD wStreamNum,
   2465         WINBOOL fReceiveStreamSamples) = 0;
   2466 
   2467     virtual HRESULT STDMETHODCALLTYPE GetReceiveStreamSamples(
   2468         WORD wStreamNum,
   2469         WINBOOL *pfReceiveStreamSamples) = 0;
   2470 
   2471     virtual HRESULT STDMETHODCALLTYPE SetAllocateForOutput(
   2472         DWORD dwOutputNum,
   2473         WINBOOL fAllocate) = 0;
   2474 
   2475     virtual HRESULT STDMETHODCALLTYPE GetAllocateForOutput(
   2476         DWORD dwOutputNum,
   2477         WINBOOL *pfAllocate) = 0;
   2478 
   2479     virtual HRESULT STDMETHODCALLTYPE SetAllocateForStream(
   2480         WORD wStreamNum,
   2481         WINBOOL fAllocate) = 0;
   2482 
   2483     virtual HRESULT STDMETHODCALLTYPE GetAllocateForStream(
   2484         WORD dwSreamNum,
   2485         WINBOOL *pfAllocate) = 0;
   2486 
   2487     virtual HRESULT STDMETHODCALLTYPE GetStatistics(
   2488         WM_READER_STATISTICS *pStatistics) = 0;
   2489 
   2490     virtual HRESULT STDMETHODCALLTYPE SetClientInfo(
   2491         WM_READER_CLIENTINFO *pClientInfo) = 0;
   2492 
   2493     virtual HRESULT STDMETHODCALLTYPE GetMaxOutputSampleSize(
   2494         DWORD dwOutput,
   2495         DWORD *pcbMax) = 0;
   2496 
   2497     virtual HRESULT STDMETHODCALLTYPE GetMaxStreamSampleSize(
   2498         WORD wStream,
   2499         DWORD *pcbMax) = 0;
   2500 
   2501     virtual HRESULT STDMETHODCALLTYPE NotifyLateDelivery(
   2502         QWORD cnsLateness) = 0;
   2503 
   2504 };
   2505 #ifdef __CRT_UUID_DECL
   2506 __CRT_UUID_DECL(IWMReaderAdvanced, 0x96406bea, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   2507 #endif
   2508 #else
   2509 typedef struct IWMReaderAdvancedVtbl {
   2510     BEGIN_INTERFACE
   2511 
   2512     /*** IUnknown methods ***/
   2513     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2514         IWMReaderAdvanced* This,
   2515         REFIID riid,
   2516         void **ppvObject);
   2517 
   2518     ULONG (STDMETHODCALLTYPE *AddRef)(
   2519         IWMReaderAdvanced* This);
   2520 
   2521     ULONG (STDMETHODCALLTYPE *Release)(
   2522         IWMReaderAdvanced* This);
   2523 
   2524     /*** IWMReaderAdvanced methods ***/
   2525     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   2526         IWMReaderAdvanced* This,
   2527         WINBOOL fUserClock);
   2528 
   2529     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   2530         IWMReaderAdvanced* This,
   2531         WINBOOL *pfUserClock);
   2532 
   2533     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   2534         IWMReaderAdvanced* This,
   2535         QWORD cnsTime);
   2536 
   2537     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   2538         IWMReaderAdvanced* This,
   2539         WINBOOL fSelection);
   2540 
   2541     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   2542         IWMReaderAdvanced* This,
   2543         WINBOOL *pfSelection);
   2544 
   2545     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   2546         IWMReaderAdvanced* This,
   2547         WORD cStreamCount,
   2548         WORD *pwStreamNumbers,
   2549         WMT_STREAM_SELECTION *pSelections);
   2550 
   2551     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   2552         IWMReaderAdvanced* This,
   2553         WORD wStreamNum,
   2554         WMT_STREAM_SELECTION *pSelection);
   2555 
   2556     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   2557         IWMReaderAdvanced* This,
   2558         WINBOOL fGetCallbacks);
   2559 
   2560     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   2561         IWMReaderAdvanced* This,
   2562         WINBOOL *pfGetCallbacks);
   2563 
   2564     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   2565         IWMReaderAdvanced* This,
   2566         WORD wStreamNum,
   2567         WINBOOL fReceiveStreamSamples);
   2568 
   2569     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   2570         IWMReaderAdvanced* This,
   2571         WORD wStreamNum,
   2572         WINBOOL *pfReceiveStreamSamples);
   2573 
   2574     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   2575         IWMReaderAdvanced* This,
   2576         DWORD dwOutputNum,
   2577         WINBOOL fAllocate);
   2578 
   2579     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   2580         IWMReaderAdvanced* This,
   2581         DWORD dwOutputNum,
   2582         WINBOOL *pfAllocate);
   2583 
   2584     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   2585         IWMReaderAdvanced* This,
   2586         WORD wStreamNum,
   2587         WINBOOL fAllocate);
   2588 
   2589     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   2590         IWMReaderAdvanced* This,
   2591         WORD dwSreamNum,
   2592         WINBOOL *pfAllocate);
   2593 
   2594     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   2595         IWMReaderAdvanced* This,
   2596         WM_READER_STATISTICS *pStatistics);
   2597 
   2598     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   2599         IWMReaderAdvanced* This,
   2600         WM_READER_CLIENTINFO *pClientInfo);
   2601 
   2602     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   2603         IWMReaderAdvanced* This,
   2604         DWORD dwOutput,
   2605         DWORD *pcbMax);
   2606 
   2607     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   2608         IWMReaderAdvanced* This,
   2609         WORD wStream,
   2610         DWORD *pcbMax);
   2611 
   2612     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   2613         IWMReaderAdvanced* This,
   2614         QWORD cnsLateness);
   2615 
   2616     END_INTERFACE
   2617 } IWMReaderAdvancedVtbl;
   2618 interface IWMReaderAdvanced {
   2619     CONST_VTBL IWMReaderAdvancedVtbl* lpVtbl;
   2620 };
   2621 
   2622 #ifdef COBJMACROS
   2623 #ifndef WIDL_C_INLINE_WRAPPERS
   2624 /*** IUnknown methods ***/
   2625 #define IWMReaderAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2626 #define IWMReaderAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
   2627 #define IWMReaderAdvanced_Release(This) (This)->lpVtbl->Release(This)
   2628 /*** IWMReaderAdvanced methods ***/
   2629 #define IWMReaderAdvanced_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   2630 #define IWMReaderAdvanced_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   2631 #define IWMReaderAdvanced_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   2632 #define IWMReaderAdvanced_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   2633 #define IWMReaderAdvanced_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   2634 #define IWMReaderAdvanced_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   2635 #define IWMReaderAdvanced_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   2636 #define IWMReaderAdvanced_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   2637 #define IWMReaderAdvanced_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   2638 #define IWMReaderAdvanced_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   2639 #define IWMReaderAdvanced_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   2640 #define IWMReaderAdvanced_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   2641 #define IWMReaderAdvanced_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   2642 #define IWMReaderAdvanced_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   2643 #define IWMReaderAdvanced_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   2644 #define IWMReaderAdvanced_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   2645 #define IWMReaderAdvanced_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   2646 #define IWMReaderAdvanced_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   2647 #define IWMReaderAdvanced_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   2648 #define IWMReaderAdvanced_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   2649 #else
   2650 /*** IUnknown methods ***/
   2651 static FORCEINLINE HRESULT IWMReaderAdvanced_QueryInterface(IWMReaderAdvanced* This,REFIID riid,void **ppvObject) {
   2652     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2653 }
   2654 static FORCEINLINE ULONG IWMReaderAdvanced_AddRef(IWMReaderAdvanced* This) {
   2655     return This->lpVtbl->AddRef(This);
   2656 }
   2657 static FORCEINLINE ULONG IWMReaderAdvanced_Release(IWMReaderAdvanced* This) {
   2658     return This->lpVtbl->Release(This);
   2659 }
   2660 /*** IWMReaderAdvanced methods ***/
   2661 static FORCEINLINE HRESULT IWMReaderAdvanced_SetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL fUserClock) {
   2662     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   2663 }
   2664 static FORCEINLINE HRESULT IWMReaderAdvanced_GetUserProvidedClock(IWMReaderAdvanced* This,WINBOOL *pfUserClock) {
   2665     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   2666 }
   2667 static FORCEINLINE HRESULT IWMReaderAdvanced_DeliverTime(IWMReaderAdvanced* This,QWORD cnsTime) {
   2668     return This->lpVtbl->DeliverTime(This,cnsTime);
   2669 }
   2670 static FORCEINLINE HRESULT IWMReaderAdvanced_SetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL fSelection) {
   2671     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   2672 }
   2673 static FORCEINLINE HRESULT IWMReaderAdvanced_GetManualStreamSelection(IWMReaderAdvanced* This,WINBOOL *pfSelection) {
   2674     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   2675 }
   2676 static FORCEINLINE HRESULT IWMReaderAdvanced_SetStreamsSelected(IWMReaderAdvanced* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   2677     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   2678 }
   2679 static FORCEINLINE HRESULT IWMReaderAdvanced_GetStreamSelected(IWMReaderAdvanced* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   2680     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   2681 }
   2682 static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL fGetCallbacks) {
   2683     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   2684 }
   2685 static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveSelectionCallbacks(IWMReaderAdvanced* This,WINBOOL *pfGetCallbacks) {
   2686     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   2687 }
   2688 static FORCEINLINE HRESULT IWMReaderAdvanced_SetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   2689     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   2690 }
   2691 static FORCEINLINE HRESULT IWMReaderAdvanced_GetReceiveStreamSamples(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   2692     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   2693 }
   2694 static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   2695     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   2696 }
   2697 static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForOutput(IWMReaderAdvanced* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   2698     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   2699 }
   2700 static FORCEINLINE HRESULT IWMReaderAdvanced_SetAllocateForStream(IWMReaderAdvanced* This,WORD wStreamNum,WINBOOL fAllocate) {
   2701     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   2702 }
   2703 static FORCEINLINE HRESULT IWMReaderAdvanced_GetAllocateForStream(IWMReaderAdvanced* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   2704     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   2705 }
   2706 static FORCEINLINE HRESULT IWMReaderAdvanced_GetStatistics(IWMReaderAdvanced* This,WM_READER_STATISTICS *pStatistics) {
   2707     return This->lpVtbl->GetStatistics(This,pStatistics);
   2708 }
   2709 static FORCEINLINE HRESULT IWMReaderAdvanced_SetClientInfo(IWMReaderAdvanced* This,WM_READER_CLIENTINFO *pClientInfo) {
   2710     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   2711 }
   2712 static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxOutputSampleSize(IWMReaderAdvanced* This,DWORD dwOutput,DWORD *pcbMax) {
   2713     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   2714 }
   2715 static FORCEINLINE HRESULT IWMReaderAdvanced_GetMaxStreamSampleSize(IWMReaderAdvanced* This,WORD wStream,DWORD *pcbMax) {
   2716     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   2717 }
   2718 static FORCEINLINE HRESULT IWMReaderAdvanced_NotifyLateDelivery(IWMReaderAdvanced* This,QWORD cnsLateness) {
   2719     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   2720 }
   2721 #endif
   2722 #endif
   2723 
   2724 #endif
   2725 
   2726 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetUserProvidedClock_Proxy(
   2727     IWMReaderAdvanced* This,
   2728     WINBOOL fUserClock);
   2729 void __RPC_STUB IWMReaderAdvanced_SetUserProvidedClock_Stub(
   2730     IRpcStubBuffer* This,
   2731     IRpcChannelBuffer* pRpcChannelBuffer,
   2732     PRPC_MESSAGE pRpcMessage,
   2733     DWORD* pdwStubPhase);
   2734 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetUserProvidedClock_Proxy(
   2735     IWMReaderAdvanced* This,
   2736     WINBOOL *pfUserClock);
   2737 void __RPC_STUB IWMReaderAdvanced_GetUserProvidedClock_Stub(
   2738     IRpcStubBuffer* This,
   2739     IRpcChannelBuffer* pRpcChannelBuffer,
   2740     PRPC_MESSAGE pRpcMessage,
   2741     DWORD* pdwStubPhase);
   2742 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_DeliverTime_Proxy(
   2743     IWMReaderAdvanced* This,
   2744     QWORD cnsTime);
   2745 void __RPC_STUB IWMReaderAdvanced_DeliverTime_Stub(
   2746     IRpcStubBuffer* This,
   2747     IRpcChannelBuffer* pRpcChannelBuffer,
   2748     PRPC_MESSAGE pRpcMessage,
   2749     DWORD* pdwStubPhase);
   2750 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetManualStreamSelection_Proxy(
   2751     IWMReaderAdvanced* This,
   2752     WINBOOL fSelection);
   2753 void __RPC_STUB IWMReaderAdvanced_SetManualStreamSelection_Stub(
   2754     IRpcStubBuffer* This,
   2755     IRpcChannelBuffer* pRpcChannelBuffer,
   2756     PRPC_MESSAGE pRpcMessage,
   2757     DWORD* pdwStubPhase);
   2758 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetManualStreamSelection_Proxy(
   2759     IWMReaderAdvanced* This,
   2760     WINBOOL *pfSelection);
   2761 void __RPC_STUB IWMReaderAdvanced_GetManualStreamSelection_Stub(
   2762     IRpcStubBuffer* This,
   2763     IRpcChannelBuffer* pRpcChannelBuffer,
   2764     PRPC_MESSAGE pRpcMessage,
   2765     DWORD* pdwStubPhase);
   2766 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetStreamsSelected_Proxy(
   2767     IWMReaderAdvanced* This,
   2768     WORD cStreamCount,
   2769     WORD *pwStreamNumbers,
   2770     WMT_STREAM_SELECTION *pSelections);
   2771 void __RPC_STUB IWMReaderAdvanced_SetStreamsSelected_Stub(
   2772     IRpcStubBuffer* This,
   2773     IRpcChannelBuffer* pRpcChannelBuffer,
   2774     PRPC_MESSAGE pRpcMessage,
   2775     DWORD* pdwStubPhase);
   2776 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetStreamSelected_Proxy(
   2777     IWMReaderAdvanced* This,
   2778     WORD wStreamNum,
   2779     WMT_STREAM_SELECTION *pSelection);
   2780 void __RPC_STUB IWMReaderAdvanced_GetStreamSelected_Stub(
   2781     IRpcStubBuffer* This,
   2782     IRpcChannelBuffer* pRpcChannelBuffer,
   2783     PRPC_MESSAGE pRpcMessage,
   2784     DWORD* pdwStubPhase);
   2785 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetReceiveSelectionCallbacks_Proxy(
   2786     IWMReaderAdvanced* This,
   2787     WINBOOL fGetCallbacks);
   2788 void __RPC_STUB IWMReaderAdvanced_SetReceiveSelectionCallbacks_Stub(
   2789     IRpcStubBuffer* This,
   2790     IRpcChannelBuffer* pRpcChannelBuffer,
   2791     PRPC_MESSAGE pRpcMessage,
   2792     DWORD* pdwStubPhase);
   2793 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetReceiveSelectionCallbacks_Proxy(
   2794     IWMReaderAdvanced* This,
   2795     WINBOOL *pfGetCallbacks);
   2796 void __RPC_STUB IWMReaderAdvanced_GetReceiveSelectionCallbacks_Stub(
   2797     IRpcStubBuffer* This,
   2798     IRpcChannelBuffer* pRpcChannelBuffer,
   2799     PRPC_MESSAGE pRpcMessage,
   2800     DWORD* pdwStubPhase);
   2801 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetReceiveStreamSamples_Proxy(
   2802     IWMReaderAdvanced* This,
   2803     WORD wStreamNum,
   2804     WINBOOL fReceiveStreamSamples);
   2805 void __RPC_STUB IWMReaderAdvanced_SetReceiveStreamSamples_Stub(
   2806     IRpcStubBuffer* This,
   2807     IRpcChannelBuffer* pRpcChannelBuffer,
   2808     PRPC_MESSAGE pRpcMessage,
   2809     DWORD* pdwStubPhase);
   2810 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetReceiveStreamSamples_Proxy(
   2811     IWMReaderAdvanced* This,
   2812     WORD wStreamNum,
   2813     WINBOOL *pfReceiveStreamSamples);
   2814 void __RPC_STUB IWMReaderAdvanced_GetReceiveStreamSamples_Stub(
   2815     IRpcStubBuffer* This,
   2816     IRpcChannelBuffer* pRpcChannelBuffer,
   2817     PRPC_MESSAGE pRpcMessage,
   2818     DWORD* pdwStubPhase);
   2819 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetAllocateForOutput_Proxy(
   2820     IWMReaderAdvanced* This,
   2821     DWORD dwOutputNum,
   2822     WINBOOL fAllocate);
   2823 void __RPC_STUB IWMReaderAdvanced_SetAllocateForOutput_Stub(
   2824     IRpcStubBuffer* This,
   2825     IRpcChannelBuffer* pRpcChannelBuffer,
   2826     PRPC_MESSAGE pRpcMessage,
   2827     DWORD* pdwStubPhase);
   2828 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetAllocateForOutput_Proxy(
   2829     IWMReaderAdvanced* This,
   2830     DWORD dwOutputNum,
   2831     WINBOOL *pfAllocate);
   2832 void __RPC_STUB IWMReaderAdvanced_GetAllocateForOutput_Stub(
   2833     IRpcStubBuffer* This,
   2834     IRpcChannelBuffer* pRpcChannelBuffer,
   2835     PRPC_MESSAGE pRpcMessage,
   2836     DWORD* pdwStubPhase);
   2837 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetAllocateForStream_Proxy(
   2838     IWMReaderAdvanced* This,
   2839     WORD wStreamNum,
   2840     WINBOOL fAllocate);
   2841 void __RPC_STUB IWMReaderAdvanced_SetAllocateForStream_Stub(
   2842     IRpcStubBuffer* This,
   2843     IRpcChannelBuffer* pRpcChannelBuffer,
   2844     PRPC_MESSAGE pRpcMessage,
   2845     DWORD* pdwStubPhase);
   2846 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetAllocateForStream_Proxy(
   2847     IWMReaderAdvanced* This,
   2848     WORD dwSreamNum,
   2849     WINBOOL *pfAllocate);
   2850 void __RPC_STUB IWMReaderAdvanced_GetAllocateForStream_Stub(
   2851     IRpcStubBuffer* This,
   2852     IRpcChannelBuffer* pRpcChannelBuffer,
   2853     PRPC_MESSAGE pRpcMessage,
   2854     DWORD* pdwStubPhase);
   2855 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetStatistics_Proxy(
   2856     IWMReaderAdvanced* This,
   2857     WM_READER_STATISTICS *pStatistics);
   2858 void __RPC_STUB IWMReaderAdvanced_GetStatistics_Stub(
   2859     IRpcStubBuffer* This,
   2860     IRpcChannelBuffer* pRpcChannelBuffer,
   2861     PRPC_MESSAGE pRpcMessage,
   2862     DWORD* pdwStubPhase);
   2863 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_SetClientInfo_Proxy(
   2864     IWMReaderAdvanced* This,
   2865     WM_READER_CLIENTINFO *pClientInfo);
   2866 void __RPC_STUB IWMReaderAdvanced_SetClientInfo_Stub(
   2867     IRpcStubBuffer* This,
   2868     IRpcChannelBuffer* pRpcChannelBuffer,
   2869     PRPC_MESSAGE pRpcMessage,
   2870     DWORD* pdwStubPhase);
   2871 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetMaxOutputSampleSize_Proxy(
   2872     IWMReaderAdvanced* This,
   2873     DWORD dwOutput,
   2874     DWORD *pcbMax);
   2875 void __RPC_STUB IWMReaderAdvanced_GetMaxOutputSampleSize_Stub(
   2876     IRpcStubBuffer* This,
   2877     IRpcChannelBuffer* pRpcChannelBuffer,
   2878     PRPC_MESSAGE pRpcMessage,
   2879     DWORD* pdwStubPhase);
   2880 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_GetMaxStreamSampleSize_Proxy(
   2881     IWMReaderAdvanced* This,
   2882     WORD wStream,
   2883     DWORD *pcbMax);
   2884 void __RPC_STUB IWMReaderAdvanced_GetMaxStreamSampleSize_Stub(
   2885     IRpcStubBuffer* This,
   2886     IRpcChannelBuffer* pRpcChannelBuffer,
   2887     PRPC_MESSAGE pRpcMessage,
   2888     DWORD* pdwStubPhase);
   2889 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced_NotifyLateDelivery_Proxy(
   2890     IWMReaderAdvanced* This,
   2891     QWORD cnsLateness);
   2892 void __RPC_STUB IWMReaderAdvanced_NotifyLateDelivery_Stub(
   2893     IRpcStubBuffer* This,
   2894     IRpcChannelBuffer* pRpcChannelBuffer,
   2895     PRPC_MESSAGE pRpcMessage,
   2896     DWORD* pdwStubPhase);
   2897 
   2898 #endif  /* __IWMReaderAdvanced_INTERFACE_DEFINED__ */
   2899 
   2900 /*****************************************************************************
   2901  * IWMReaderAdvanced2 interface
   2902  */
   2903 #ifndef __IWMReaderAdvanced2_INTERFACE_DEFINED__
   2904 #define __IWMReaderAdvanced2_INTERFACE_DEFINED__
   2905 
   2906 DEFINE_GUID(IID_IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e);
   2907 #if defined(__cplusplus) && !defined(CINTERFACE)
   2908 MIDL_INTERFACE("ae14a945-b90c-4d0d-9127-80d665f7d73e")
   2909 IWMReaderAdvanced2 : public IWMReaderAdvanced
   2910 {
   2911     virtual HRESULT STDMETHODCALLTYPE SetPlayMode(
   2912         WMT_PLAY_MODE Mode) = 0;
   2913 
   2914     virtual HRESULT STDMETHODCALLTYPE GetPlayMode(
   2915         WMT_PLAY_MODE *pMode) = 0;
   2916 
   2917     virtual HRESULT STDMETHODCALLTYPE GetBufferProgress(
   2918         DWORD *pdwPercent,
   2919         QWORD *pcnsBuffering) = 0;
   2920 
   2921     virtual HRESULT STDMETHODCALLTYPE GetDownloadProgress(
   2922         DWORD *pdwPercent,
   2923         QWORD *pqwBytesDownloaded,
   2924         QWORD *pcnsDownload) = 0;
   2925 
   2926     virtual HRESULT STDMETHODCALLTYPE GetSaveAsProgress(
   2927         DWORD *pdwPercent) = 0;
   2928 
   2929     virtual HRESULT STDMETHODCALLTYPE SaveFileAs(
   2930         const WCHAR *pwszFilename) = 0;
   2931 
   2932     virtual HRESULT STDMETHODCALLTYPE GetProtocolName(
   2933         WCHAR *pwszProtocol,
   2934         DWORD *pcchProtocol) = 0;
   2935 
   2936     virtual HRESULT STDMETHODCALLTYPE StartAtMarker(
   2937         WORD wMarkerIndex,
   2938         QWORD cnsDuration,
   2939         float fRate,
   2940         void *pvContext) = 0;
   2941 
   2942     virtual HRESULT STDMETHODCALLTYPE GetOutputSetting(
   2943         DWORD dwOutputNum,
   2944         LPCWSTR pszName,
   2945         WMT_ATTR_DATATYPE *pType,
   2946         BYTE *pValue,
   2947         WORD *pcbLength) = 0;
   2948 
   2949     virtual HRESULT STDMETHODCALLTYPE SetOutputSetting(
   2950         DWORD dwOutputNum,
   2951         LPCWSTR pszName,
   2952         WMT_ATTR_DATATYPE Type,
   2953         const BYTE *pValue,
   2954         WORD cbLength) = 0;
   2955 
   2956     virtual HRESULT STDMETHODCALLTYPE Preroll(
   2957         QWORD cnsStart,
   2958         QWORD cnsDuration,
   2959         float fRate) = 0;
   2960 
   2961     virtual HRESULT STDMETHODCALLTYPE SetLogClientID(
   2962         WINBOOL fLogClientID) = 0;
   2963 
   2964     virtual HRESULT STDMETHODCALLTYPE GetLogClientID(
   2965         WINBOOL *pfLogClientID) = 0;
   2966 
   2967     virtual HRESULT STDMETHODCALLTYPE StopBuffering(
   2968         ) = 0;
   2969 
   2970     virtual HRESULT STDMETHODCALLTYPE OpenStream(
   2971         IStream *pStream,
   2972         IWMReaderCallback *pCallback,
   2973         void *pvContext) = 0;
   2974 
   2975 };
   2976 #ifdef __CRT_UUID_DECL
   2977 __CRT_UUID_DECL(IWMReaderAdvanced2, 0xae14a945, 0xb90c, 0x4d0d, 0x91,0x27, 0x80,0xd6,0x65,0xf7,0xd7,0x3e)
   2978 #endif
   2979 #else
   2980 typedef struct IWMReaderAdvanced2Vtbl {
   2981     BEGIN_INTERFACE
   2982 
   2983     /*** IUnknown methods ***/
   2984     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2985         IWMReaderAdvanced2* This,
   2986         REFIID riid,
   2987         void **ppvObject);
   2988 
   2989     ULONG (STDMETHODCALLTYPE *AddRef)(
   2990         IWMReaderAdvanced2* This);
   2991 
   2992     ULONG (STDMETHODCALLTYPE *Release)(
   2993         IWMReaderAdvanced2* This);
   2994 
   2995     /*** IWMReaderAdvanced methods ***/
   2996     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   2997         IWMReaderAdvanced2* This,
   2998         WINBOOL fUserClock);
   2999 
   3000     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   3001         IWMReaderAdvanced2* This,
   3002         WINBOOL *pfUserClock);
   3003 
   3004     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   3005         IWMReaderAdvanced2* This,
   3006         QWORD cnsTime);
   3007 
   3008     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   3009         IWMReaderAdvanced2* This,
   3010         WINBOOL fSelection);
   3011 
   3012     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   3013         IWMReaderAdvanced2* This,
   3014         WINBOOL *pfSelection);
   3015 
   3016     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   3017         IWMReaderAdvanced2* This,
   3018         WORD cStreamCount,
   3019         WORD *pwStreamNumbers,
   3020         WMT_STREAM_SELECTION *pSelections);
   3021 
   3022     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   3023         IWMReaderAdvanced2* This,
   3024         WORD wStreamNum,
   3025         WMT_STREAM_SELECTION *pSelection);
   3026 
   3027     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   3028         IWMReaderAdvanced2* This,
   3029         WINBOOL fGetCallbacks);
   3030 
   3031     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   3032         IWMReaderAdvanced2* This,
   3033         WINBOOL *pfGetCallbacks);
   3034 
   3035     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   3036         IWMReaderAdvanced2* This,
   3037         WORD wStreamNum,
   3038         WINBOOL fReceiveStreamSamples);
   3039 
   3040     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   3041         IWMReaderAdvanced2* This,
   3042         WORD wStreamNum,
   3043         WINBOOL *pfReceiveStreamSamples);
   3044 
   3045     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   3046         IWMReaderAdvanced2* This,
   3047         DWORD dwOutputNum,
   3048         WINBOOL fAllocate);
   3049 
   3050     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   3051         IWMReaderAdvanced2* This,
   3052         DWORD dwOutputNum,
   3053         WINBOOL *pfAllocate);
   3054 
   3055     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   3056         IWMReaderAdvanced2* This,
   3057         WORD wStreamNum,
   3058         WINBOOL fAllocate);
   3059 
   3060     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   3061         IWMReaderAdvanced2* This,
   3062         WORD dwSreamNum,
   3063         WINBOOL *pfAllocate);
   3064 
   3065     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   3066         IWMReaderAdvanced2* This,
   3067         WM_READER_STATISTICS *pStatistics);
   3068 
   3069     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   3070         IWMReaderAdvanced2* This,
   3071         WM_READER_CLIENTINFO *pClientInfo);
   3072 
   3073     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   3074         IWMReaderAdvanced2* This,
   3075         DWORD dwOutput,
   3076         DWORD *pcbMax);
   3077 
   3078     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   3079         IWMReaderAdvanced2* This,
   3080         WORD wStream,
   3081         DWORD *pcbMax);
   3082 
   3083     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   3084         IWMReaderAdvanced2* This,
   3085         QWORD cnsLateness);
   3086 
   3087     /*** IWMReaderAdvanced2 methods ***/
   3088     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
   3089         IWMReaderAdvanced2* This,
   3090         WMT_PLAY_MODE Mode);
   3091 
   3092     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
   3093         IWMReaderAdvanced2* This,
   3094         WMT_PLAY_MODE *pMode);
   3095 
   3096     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
   3097         IWMReaderAdvanced2* This,
   3098         DWORD *pdwPercent,
   3099         QWORD *pcnsBuffering);
   3100 
   3101     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
   3102         IWMReaderAdvanced2* This,
   3103         DWORD *pdwPercent,
   3104         QWORD *pqwBytesDownloaded,
   3105         QWORD *pcnsDownload);
   3106 
   3107     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
   3108         IWMReaderAdvanced2* This,
   3109         DWORD *pdwPercent);
   3110 
   3111     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
   3112         IWMReaderAdvanced2* This,
   3113         const WCHAR *pwszFilename);
   3114 
   3115     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
   3116         IWMReaderAdvanced2* This,
   3117         WCHAR *pwszProtocol,
   3118         DWORD *pcchProtocol);
   3119 
   3120     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
   3121         IWMReaderAdvanced2* This,
   3122         WORD wMarkerIndex,
   3123         QWORD cnsDuration,
   3124         float fRate,
   3125         void *pvContext);
   3126 
   3127     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   3128         IWMReaderAdvanced2* This,
   3129         DWORD dwOutputNum,
   3130         LPCWSTR pszName,
   3131         WMT_ATTR_DATATYPE *pType,
   3132         BYTE *pValue,
   3133         WORD *pcbLength);
   3134 
   3135     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   3136         IWMReaderAdvanced2* This,
   3137         DWORD dwOutputNum,
   3138         LPCWSTR pszName,
   3139         WMT_ATTR_DATATYPE Type,
   3140         const BYTE *pValue,
   3141         WORD cbLength);
   3142 
   3143     HRESULT (STDMETHODCALLTYPE *Preroll)(
   3144         IWMReaderAdvanced2* This,
   3145         QWORD cnsStart,
   3146         QWORD cnsDuration,
   3147         float fRate);
   3148 
   3149     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
   3150         IWMReaderAdvanced2* This,
   3151         WINBOOL fLogClientID);
   3152 
   3153     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
   3154         IWMReaderAdvanced2* This,
   3155         WINBOOL *pfLogClientID);
   3156 
   3157     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   3158         IWMReaderAdvanced2* This);
   3159 
   3160     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   3161         IWMReaderAdvanced2* This,
   3162         IStream *pStream,
   3163         IWMReaderCallback *pCallback,
   3164         void *pvContext);
   3165 
   3166     END_INTERFACE
   3167 } IWMReaderAdvanced2Vtbl;
   3168 interface IWMReaderAdvanced2 {
   3169     CONST_VTBL IWMReaderAdvanced2Vtbl* lpVtbl;
   3170 };
   3171 
   3172 #ifdef COBJMACROS
   3173 #ifndef WIDL_C_INLINE_WRAPPERS
   3174 /*** IUnknown methods ***/
   3175 #define IWMReaderAdvanced2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3176 #define IWMReaderAdvanced2_AddRef(This) (This)->lpVtbl->AddRef(This)
   3177 #define IWMReaderAdvanced2_Release(This) (This)->lpVtbl->Release(This)
   3178 /*** IWMReaderAdvanced methods ***/
   3179 #define IWMReaderAdvanced2_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   3180 #define IWMReaderAdvanced2_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   3181 #define IWMReaderAdvanced2_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   3182 #define IWMReaderAdvanced2_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   3183 #define IWMReaderAdvanced2_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   3184 #define IWMReaderAdvanced2_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   3185 #define IWMReaderAdvanced2_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   3186 #define IWMReaderAdvanced2_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   3187 #define IWMReaderAdvanced2_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   3188 #define IWMReaderAdvanced2_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   3189 #define IWMReaderAdvanced2_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   3190 #define IWMReaderAdvanced2_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   3191 #define IWMReaderAdvanced2_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   3192 #define IWMReaderAdvanced2_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   3193 #define IWMReaderAdvanced2_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   3194 #define IWMReaderAdvanced2_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   3195 #define IWMReaderAdvanced2_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   3196 #define IWMReaderAdvanced2_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   3197 #define IWMReaderAdvanced2_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   3198 #define IWMReaderAdvanced2_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   3199 /*** IWMReaderAdvanced2 methods ***/
   3200 #define IWMReaderAdvanced2_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
   3201 #define IWMReaderAdvanced2_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
   3202 #define IWMReaderAdvanced2_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
   3203 #define IWMReaderAdvanced2_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
   3204 #define IWMReaderAdvanced2_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
   3205 #define IWMReaderAdvanced2_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
   3206 #define IWMReaderAdvanced2_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
   3207 #define IWMReaderAdvanced2_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
   3208 #define IWMReaderAdvanced2_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   3209 #define IWMReaderAdvanced2_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   3210 #define IWMReaderAdvanced2_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
   3211 #define IWMReaderAdvanced2_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
   3212 #define IWMReaderAdvanced2_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
   3213 #define IWMReaderAdvanced2_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   3214 #define IWMReaderAdvanced2_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
   3215 #else
   3216 /*** IUnknown methods ***/
   3217 static FORCEINLINE HRESULT IWMReaderAdvanced2_QueryInterface(IWMReaderAdvanced2* This,REFIID riid,void **ppvObject) {
   3218     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3219 }
   3220 static FORCEINLINE ULONG IWMReaderAdvanced2_AddRef(IWMReaderAdvanced2* This) {
   3221     return This->lpVtbl->AddRef(This);
   3222 }
   3223 static FORCEINLINE ULONG IWMReaderAdvanced2_Release(IWMReaderAdvanced2* This) {
   3224     return This->lpVtbl->Release(This);
   3225 }
   3226 /*** IWMReaderAdvanced methods ***/
   3227 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL fUserClock) {
   3228     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   3229 }
   3230 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetUserProvidedClock(IWMReaderAdvanced2* This,WINBOOL *pfUserClock) {
   3231     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   3232 }
   3233 static FORCEINLINE HRESULT IWMReaderAdvanced2_DeliverTime(IWMReaderAdvanced2* This,QWORD cnsTime) {
   3234     return This->lpVtbl->DeliverTime(This,cnsTime);
   3235 }
   3236 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL fSelection) {
   3237     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   3238 }
   3239 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetManualStreamSelection(IWMReaderAdvanced2* This,WINBOOL *pfSelection) {
   3240     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   3241 }
   3242 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetStreamsSelected(IWMReaderAdvanced2* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   3243     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   3244 }
   3245 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStreamSelected(IWMReaderAdvanced2* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   3246     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   3247 }
   3248 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL fGetCallbacks) {
   3249     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   3250 }
   3251 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveSelectionCallbacks(IWMReaderAdvanced2* This,WINBOOL *pfGetCallbacks) {
   3252     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   3253 }
   3254 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   3255     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   3256 }
   3257 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetReceiveStreamSamples(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   3258     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   3259 }
   3260 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   3261     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   3262 }
   3263 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForOutput(IWMReaderAdvanced2* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   3264     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   3265 }
   3266 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetAllocateForStream(IWMReaderAdvanced2* This,WORD wStreamNum,WINBOOL fAllocate) {
   3267     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   3268 }
   3269 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetAllocateForStream(IWMReaderAdvanced2* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   3270     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   3271 }
   3272 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetStatistics(IWMReaderAdvanced2* This,WM_READER_STATISTICS *pStatistics) {
   3273     return This->lpVtbl->GetStatistics(This,pStatistics);
   3274 }
   3275 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetClientInfo(IWMReaderAdvanced2* This,WM_READER_CLIENTINFO *pClientInfo) {
   3276     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   3277 }
   3278 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxOutputSampleSize(IWMReaderAdvanced2* This,DWORD dwOutput,DWORD *pcbMax) {
   3279     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   3280 }
   3281 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetMaxStreamSampleSize(IWMReaderAdvanced2* This,WORD wStream,DWORD *pcbMax) {
   3282     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   3283 }
   3284 static FORCEINLINE HRESULT IWMReaderAdvanced2_NotifyLateDelivery(IWMReaderAdvanced2* This,QWORD cnsLateness) {
   3285     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   3286 }
   3287 /*** IWMReaderAdvanced2 methods ***/
   3288 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE Mode) {
   3289     return This->lpVtbl->SetPlayMode(This,Mode);
   3290 }
   3291 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetPlayMode(IWMReaderAdvanced2* This,WMT_PLAY_MODE *pMode) {
   3292     return This->lpVtbl->GetPlayMode(This,pMode);
   3293 }
   3294 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetBufferProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
   3295     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
   3296 }
   3297 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetDownloadProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
   3298     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
   3299 }
   3300 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetSaveAsProgress(IWMReaderAdvanced2* This,DWORD *pdwPercent) {
   3301     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
   3302 }
   3303 static FORCEINLINE HRESULT IWMReaderAdvanced2_SaveFileAs(IWMReaderAdvanced2* This,const WCHAR *pwszFilename) {
   3304     return This->lpVtbl->SaveFileAs(This,pwszFilename);
   3305 }
   3306 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetProtocolName(IWMReaderAdvanced2* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
   3307     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
   3308 }
   3309 static FORCEINLINE HRESULT IWMReaderAdvanced2_StartAtMarker(IWMReaderAdvanced2* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
   3310     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
   3311 }
   3312 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   3313     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   3314 }
   3315 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetOutputSetting(IWMReaderAdvanced2* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   3316     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   3317 }
   3318 static FORCEINLINE HRESULT IWMReaderAdvanced2_Preroll(IWMReaderAdvanced2* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
   3319     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
   3320 }
   3321 static FORCEINLINE HRESULT IWMReaderAdvanced2_SetLogClientID(IWMReaderAdvanced2* This,WINBOOL fLogClientID) {
   3322     return This->lpVtbl->SetLogClientID(This,fLogClientID);
   3323 }
   3324 static FORCEINLINE HRESULT IWMReaderAdvanced2_GetLogClientID(IWMReaderAdvanced2* This,WINBOOL *pfLogClientID) {
   3325     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
   3326 }
   3327 static FORCEINLINE HRESULT IWMReaderAdvanced2_StopBuffering(IWMReaderAdvanced2* This) {
   3328     return This->lpVtbl->StopBuffering(This);
   3329 }
   3330 static FORCEINLINE HRESULT IWMReaderAdvanced2_OpenStream(IWMReaderAdvanced2* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
   3331     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
   3332 }
   3333 #endif
   3334 #endif
   3335 
   3336 #endif
   3337 
   3338 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetPlayMode_Proxy(
   3339     IWMReaderAdvanced2* This,
   3340     WMT_PLAY_MODE Mode);
   3341 void __RPC_STUB IWMReaderAdvanced2_SetPlayMode_Stub(
   3342     IRpcStubBuffer* This,
   3343     IRpcChannelBuffer* pRpcChannelBuffer,
   3344     PRPC_MESSAGE pRpcMessage,
   3345     DWORD* pdwStubPhase);
   3346 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetPlayMode_Proxy(
   3347     IWMReaderAdvanced2* This,
   3348     WMT_PLAY_MODE *pMode);
   3349 void __RPC_STUB IWMReaderAdvanced2_GetPlayMode_Stub(
   3350     IRpcStubBuffer* This,
   3351     IRpcChannelBuffer* pRpcChannelBuffer,
   3352     PRPC_MESSAGE pRpcMessage,
   3353     DWORD* pdwStubPhase);
   3354 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetBufferProgress_Proxy(
   3355     IWMReaderAdvanced2* This,
   3356     DWORD *pdwPercent,
   3357     QWORD *pcnsBuffering);
   3358 void __RPC_STUB IWMReaderAdvanced2_GetBufferProgress_Stub(
   3359     IRpcStubBuffer* This,
   3360     IRpcChannelBuffer* pRpcChannelBuffer,
   3361     PRPC_MESSAGE pRpcMessage,
   3362     DWORD* pdwStubPhase);
   3363 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetDownloadProgress_Proxy(
   3364     IWMReaderAdvanced2* This,
   3365     DWORD *pdwPercent,
   3366     QWORD *pqwBytesDownloaded,
   3367     QWORD *pcnsDownload);
   3368 void __RPC_STUB IWMReaderAdvanced2_GetDownloadProgress_Stub(
   3369     IRpcStubBuffer* This,
   3370     IRpcChannelBuffer* pRpcChannelBuffer,
   3371     PRPC_MESSAGE pRpcMessage,
   3372     DWORD* pdwStubPhase);
   3373 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetSaveAsProgress_Proxy(
   3374     IWMReaderAdvanced2* This,
   3375     DWORD *pdwPercent);
   3376 void __RPC_STUB IWMReaderAdvanced2_GetSaveAsProgress_Stub(
   3377     IRpcStubBuffer* This,
   3378     IRpcChannelBuffer* pRpcChannelBuffer,
   3379     PRPC_MESSAGE pRpcMessage,
   3380     DWORD* pdwStubPhase);
   3381 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SaveFileAs_Proxy(
   3382     IWMReaderAdvanced2* This,
   3383     const WCHAR *pwszFilename);
   3384 void __RPC_STUB IWMReaderAdvanced2_SaveFileAs_Stub(
   3385     IRpcStubBuffer* This,
   3386     IRpcChannelBuffer* pRpcChannelBuffer,
   3387     PRPC_MESSAGE pRpcMessage,
   3388     DWORD* pdwStubPhase);
   3389 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetProtocolName_Proxy(
   3390     IWMReaderAdvanced2* This,
   3391     WCHAR *pwszProtocol,
   3392     DWORD *pcchProtocol);
   3393 void __RPC_STUB IWMReaderAdvanced2_GetProtocolName_Stub(
   3394     IRpcStubBuffer* This,
   3395     IRpcChannelBuffer* pRpcChannelBuffer,
   3396     PRPC_MESSAGE pRpcMessage,
   3397     DWORD* pdwStubPhase);
   3398 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_StartAtMarker_Proxy(
   3399     IWMReaderAdvanced2* This,
   3400     WORD wMarkerIndex,
   3401     QWORD cnsDuration,
   3402     float fRate,
   3403     void *pvContext);
   3404 void __RPC_STUB IWMReaderAdvanced2_StartAtMarker_Stub(
   3405     IRpcStubBuffer* This,
   3406     IRpcChannelBuffer* pRpcChannelBuffer,
   3407     PRPC_MESSAGE pRpcMessage,
   3408     DWORD* pdwStubPhase);
   3409 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetOutputSetting_Proxy(
   3410     IWMReaderAdvanced2* This,
   3411     DWORD dwOutputNum,
   3412     LPCWSTR pszName,
   3413     WMT_ATTR_DATATYPE *pType,
   3414     BYTE *pValue,
   3415     WORD *pcbLength);
   3416 void __RPC_STUB IWMReaderAdvanced2_GetOutputSetting_Stub(
   3417     IRpcStubBuffer* This,
   3418     IRpcChannelBuffer* pRpcChannelBuffer,
   3419     PRPC_MESSAGE pRpcMessage,
   3420     DWORD* pdwStubPhase);
   3421 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetOutputSetting_Proxy(
   3422     IWMReaderAdvanced2* This,
   3423     DWORD dwOutputNum,
   3424     LPCWSTR pszName,
   3425     WMT_ATTR_DATATYPE Type,
   3426     const BYTE *pValue,
   3427     WORD cbLength);
   3428 void __RPC_STUB IWMReaderAdvanced2_SetOutputSetting_Stub(
   3429     IRpcStubBuffer* This,
   3430     IRpcChannelBuffer* pRpcChannelBuffer,
   3431     PRPC_MESSAGE pRpcMessage,
   3432     DWORD* pdwStubPhase);
   3433 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_Preroll_Proxy(
   3434     IWMReaderAdvanced2* This,
   3435     QWORD cnsStart,
   3436     QWORD cnsDuration,
   3437     float fRate);
   3438 void __RPC_STUB IWMReaderAdvanced2_Preroll_Stub(
   3439     IRpcStubBuffer* This,
   3440     IRpcChannelBuffer* pRpcChannelBuffer,
   3441     PRPC_MESSAGE pRpcMessage,
   3442     DWORD* pdwStubPhase);
   3443 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_SetLogClientID_Proxy(
   3444     IWMReaderAdvanced2* This,
   3445     WINBOOL fLogClientID);
   3446 void __RPC_STUB IWMReaderAdvanced2_SetLogClientID_Stub(
   3447     IRpcStubBuffer* This,
   3448     IRpcChannelBuffer* pRpcChannelBuffer,
   3449     PRPC_MESSAGE pRpcMessage,
   3450     DWORD* pdwStubPhase);
   3451 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_GetLogClientID_Proxy(
   3452     IWMReaderAdvanced2* This,
   3453     WINBOOL *pfLogClientID);
   3454 void __RPC_STUB IWMReaderAdvanced2_GetLogClientID_Stub(
   3455     IRpcStubBuffer* This,
   3456     IRpcChannelBuffer* pRpcChannelBuffer,
   3457     PRPC_MESSAGE pRpcMessage,
   3458     DWORD* pdwStubPhase);
   3459 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_StopBuffering_Proxy(
   3460     IWMReaderAdvanced2* This);
   3461 void __RPC_STUB IWMReaderAdvanced2_StopBuffering_Stub(
   3462     IRpcStubBuffer* This,
   3463     IRpcChannelBuffer* pRpcChannelBuffer,
   3464     PRPC_MESSAGE pRpcMessage,
   3465     DWORD* pdwStubPhase);
   3466 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced2_OpenStream_Proxy(
   3467     IWMReaderAdvanced2* This,
   3468     IStream *pStream,
   3469     IWMReaderCallback *pCallback,
   3470     void *pvContext);
   3471 void __RPC_STUB IWMReaderAdvanced2_OpenStream_Stub(
   3472     IRpcStubBuffer* This,
   3473     IRpcChannelBuffer* pRpcChannelBuffer,
   3474     PRPC_MESSAGE pRpcMessage,
   3475     DWORD* pdwStubPhase);
   3476 
   3477 #endif  /* __IWMReaderAdvanced2_INTERFACE_DEFINED__ */
   3478 
   3479 /*****************************************************************************
   3480  * IWMReaderAdvanced3 interface
   3481  */
   3482 #ifndef __IWMReaderAdvanced3_INTERFACE_DEFINED__
   3483 #define __IWMReaderAdvanced3_INTERFACE_DEFINED__
   3484 
   3485 DEFINE_GUID(IID_IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00);
   3486 #if defined(__cplusplus) && !defined(CINTERFACE)
   3487 MIDL_INTERFACE("5dc0674b-f04b-4a4e-9f2a-b1afde2c8100")
   3488 IWMReaderAdvanced3 : public IWMReaderAdvanced2
   3489 {
   3490     virtual HRESULT STDMETHODCALLTYPE StopNetStreaming(
   3491         ) = 0;
   3492 
   3493     virtual HRESULT STDMETHODCALLTYPE StartAtPosition(
   3494         WORD wStreamNum,
   3495         void *pvOffsetStart,
   3496         void *pvDuration,
   3497         WMT_OFFSET_FORMAT dwOffsetFormat,
   3498         float fRate,
   3499         void *pvContext) = 0;
   3500 
   3501 };
   3502 #ifdef __CRT_UUID_DECL
   3503 __CRT_UUID_DECL(IWMReaderAdvanced3, 0x5dc0674b, 0xf04b, 0x4a4e, 0x9f,0x2a, 0xb1,0xaf,0xde,0x2c,0x81,0x00)
   3504 #endif
   3505 #else
   3506 typedef struct IWMReaderAdvanced3Vtbl {
   3507     BEGIN_INTERFACE
   3508 
   3509     /*** IUnknown methods ***/
   3510     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3511         IWMReaderAdvanced3* This,
   3512         REFIID riid,
   3513         void **ppvObject);
   3514 
   3515     ULONG (STDMETHODCALLTYPE *AddRef)(
   3516         IWMReaderAdvanced3* This);
   3517 
   3518     ULONG (STDMETHODCALLTYPE *Release)(
   3519         IWMReaderAdvanced3* This);
   3520 
   3521     /*** IWMReaderAdvanced methods ***/
   3522     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   3523         IWMReaderAdvanced3* This,
   3524         WINBOOL fUserClock);
   3525 
   3526     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   3527         IWMReaderAdvanced3* This,
   3528         WINBOOL *pfUserClock);
   3529 
   3530     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   3531         IWMReaderAdvanced3* This,
   3532         QWORD cnsTime);
   3533 
   3534     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   3535         IWMReaderAdvanced3* This,
   3536         WINBOOL fSelection);
   3537 
   3538     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   3539         IWMReaderAdvanced3* This,
   3540         WINBOOL *pfSelection);
   3541 
   3542     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   3543         IWMReaderAdvanced3* This,
   3544         WORD cStreamCount,
   3545         WORD *pwStreamNumbers,
   3546         WMT_STREAM_SELECTION *pSelections);
   3547 
   3548     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   3549         IWMReaderAdvanced3* This,
   3550         WORD wStreamNum,
   3551         WMT_STREAM_SELECTION *pSelection);
   3552 
   3553     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   3554         IWMReaderAdvanced3* This,
   3555         WINBOOL fGetCallbacks);
   3556 
   3557     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   3558         IWMReaderAdvanced3* This,
   3559         WINBOOL *pfGetCallbacks);
   3560 
   3561     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   3562         IWMReaderAdvanced3* This,
   3563         WORD wStreamNum,
   3564         WINBOOL fReceiveStreamSamples);
   3565 
   3566     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   3567         IWMReaderAdvanced3* This,
   3568         WORD wStreamNum,
   3569         WINBOOL *pfReceiveStreamSamples);
   3570 
   3571     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   3572         IWMReaderAdvanced3* This,
   3573         DWORD dwOutputNum,
   3574         WINBOOL fAllocate);
   3575 
   3576     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   3577         IWMReaderAdvanced3* This,
   3578         DWORD dwOutputNum,
   3579         WINBOOL *pfAllocate);
   3580 
   3581     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   3582         IWMReaderAdvanced3* This,
   3583         WORD wStreamNum,
   3584         WINBOOL fAllocate);
   3585 
   3586     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   3587         IWMReaderAdvanced3* This,
   3588         WORD dwSreamNum,
   3589         WINBOOL *pfAllocate);
   3590 
   3591     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   3592         IWMReaderAdvanced3* This,
   3593         WM_READER_STATISTICS *pStatistics);
   3594 
   3595     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   3596         IWMReaderAdvanced3* This,
   3597         WM_READER_CLIENTINFO *pClientInfo);
   3598 
   3599     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   3600         IWMReaderAdvanced3* This,
   3601         DWORD dwOutput,
   3602         DWORD *pcbMax);
   3603 
   3604     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   3605         IWMReaderAdvanced3* This,
   3606         WORD wStream,
   3607         DWORD *pcbMax);
   3608 
   3609     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   3610         IWMReaderAdvanced3* This,
   3611         QWORD cnsLateness);
   3612 
   3613     /*** IWMReaderAdvanced2 methods ***/
   3614     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
   3615         IWMReaderAdvanced3* This,
   3616         WMT_PLAY_MODE Mode);
   3617 
   3618     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
   3619         IWMReaderAdvanced3* This,
   3620         WMT_PLAY_MODE *pMode);
   3621 
   3622     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
   3623         IWMReaderAdvanced3* This,
   3624         DWORD *pdwPercent,
   3625         QWORD *pcnsBuffering);
   3626 
   3627     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
   3628         IWMReaderAdvanced3* This,
   3629         DWORD *pdwPercent,
   3630         QWORD *pqwBytesDownloaded,
   3631         QWORD *pcnsDownload);
   3632 
   3633     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
   3634         IWMReaderAdvanced3* This,
   3635         DWORD *pdwPercent);
   3636 
   3637     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
   3638         IWMReaderAdvanced3* This,
   3639         const WCHAR *pwszFilename);
   3640 
   3641     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
   3642         IWMReaderAdvanced3* This,
   3643         WCHAR *pwszProtocol,
   3644         DWORD *pcchProtocol);
   3645 
   3646     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
   3647         IWMReaderAdvanced3* This,
   3648         WORD wMarkerIndex,
   3649         QWORD cnsDuration,
   3650         float fRate,
   3651         void *pvContext);
   3652 
   3653     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   3654         IWMReaderAdvanced3* This,
   3655         DWORD dwOutputNum,
   3656         LPCWSTR pszName,
   3657         WMT_ATTR_DATATYPE *pType,
   3658         BYTE *pValue,
   3659         WORD *pcbLength);
   3660 
   3661     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   3662         IWMReaderAdvanced3* This,
   3663         DWORD dwOutputNum,
   3664         LPCWSTR pszName,
   3665         WMT_ATTR_DATATYPE Type,
   3666         const BYTE *pValue,
   3667         WORD cbLength);
   3668 
   3669     HRESULT (STDMETHODCALLTYPE *Preroll)(
   3670         IWMReaderAdvanced3* This,
   3671         QWORD cnsStart,
   3672         QWORD cnsDuration,
   3673         float fRate);
   3674 
   3675     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
   3676         IWMReaderAdvanced3* This,
   3677         WINBOOL fLogClientID);
   3678 
   3679     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
   3680         IWMReaderAdvanced3* This,
   3681         WINBOOL *pfLogClientID);
   3682 
   3683     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   3684         IWMReaderAdvanced3* This);
   3685 
   3686     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   3687         IWMReaderAdvanced3* This,
   3688         IStream *pStream,
   3689         IWMReaderCallback *pCallback,
   3690         void *pvContext);
   3691 
   3692     /*** IWMReaderAdvanced3 methods ***/
   3693     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
   3694         IWMReaderAdvanced3* This);
   3695 
   3696     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
   3697         IWMReaderAdvanced3* This,
   3698         WORD wStreamNum,
   3699         void *pvOffsetStart,
   3700         void *pvDuration,
   3701         WMT_OFFSET_FORMAT dwOffsetFormat,
   3702         float fRate,
   3703         void *pvContext);
   3704 
   3705     END_INTERFACE
   3706 } IWMReaderAdvanced3Vtbl;
   3707 interface IWMReaderAdvanced3 {
   3708     CONST_VTBL IWMReaderAdvanced3Vtbl* lpVtbl;
   3709 };
   3710 
   3711 #ifdef COBJMACROS
   3712 #ifndef WIDL_C_INLINE_WRAPPERS
   3713 /*** IUnknown methods ***/
   3714 #define IWMReaderAdvanced3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3715 #define IWMReaderAdvanced3_AddRef(This) (This)->lpVtbl->AddRef(This)
   3716 #define IWMReaderAdvanced3_Release(This) (This)->lpVtbl->Release(This)
   3717 /*** IWMReaderAdvanced methods ***/
   3718 #define IWMReaderAdvanced3_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   3719 #define IWMReaderAdvanced3_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   3720 #define IWMReaderAdvanced3_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   3721 #define IWMReaderAdvanced3_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   3722 #define IWMReaderAdvanced3_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   3723 #define IWMReaderAdvanced3_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   3724 #define IWMReaderAdvanced3_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   3725 #define IWMReaderAdvanced3_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   3726 #define IWMReaderAdvanced3_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   3727 #define IWMReaderAdvanced3_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   3728 #define IWMReaderAdvanced3_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   3729 #define IWMReaderAdvanced3_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   3730 #define IWMReaderAdvanced3_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   3731 #define IWMReaderAdvanced3_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   3732 #define IWMReaderAdvanced3_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   3733 #define IWMReaderAdvanced3_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   3734 #define IWMReaderAdvanced3_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   3735 #define IWMReaderAdvanced3_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   3736 #define IWMReaderAdvanced3_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   3737 #define IWMReaderAdvanced3_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   3738 /*** IWMReaderAdvanced2 methods ***/
   3739 #define IWMReaderAdvanced3_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
   3740 #define IWMReaderAdvanced3_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
   3741 #define IWMReaderAdvanced3_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
   3742 #define IWMReaderAdvanced3_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
   3743 #define IWMReaderAdvanced3_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
   3744 #define IWMReaderAdvanced3_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
   3745 #define IWMReaderAdvanced3_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
   3746 #define IWMReaderAdvanced3_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
   3747 #define IWMReaderAdvanced3_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   3748 #define IWMReaderAdvanced3_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   3749 #define IWMReaderAdvanced3_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
   3750 #define IWMReaderAdvanced3_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
   3751 #define IWMReaderAdvanced3_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
   3752 #define IWMReaderAdvanced3_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   3753 #define IWMReaderAdvanced3_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
   3754 /*** IWMReaderAdvanced3 methods ***/
   3755 #define IWMReaderAdvanced3_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
   3756 #define IWMReaderAdvanced3_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
   3757 #else
   3758 /*** IUnknown methods ***/
   3759 static FORCEINLINE HRESULT IWMReaderAdvanced3_QueryInterface(IWMReaderAdvanced3* This,REFIID riid,void **ppvObject) {
   3760     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3761 }
   3762 static FORCEINLINE ULONG IWMReaderAdvanced3_AddRef(IWMReaderAdvanced3* This) {
   3763     return This->lpVtbl->AddRef(This);
   3764 }
   3765 static FORCEINLINE ULONG IWMReaderAdvanced3_Release(IWMReaderAdvanced3* This) {
   3766     return This->lpVtbl->Release(This);
   3767 }
   3768 /*** IWMReaderAdvanced methods ***/
   3769 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL fUserClock) {
   3770     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   3771 }
   3772 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetUserProvidedClock(IWMReaderAdvanced3* This,WINBOOL *pfUserClock) {
   3773     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   3774 }
   3775 static FORCEINLINE HRESULT IWMReaderAdvanced3_DeliverTime(IWMReaderAdvanced3* This,QWORD cnsTime) {
   3776     return This->lpVtbl->DeliverTime(This,cnsTime);
   3777 }
   3778 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL fSelection) {
   3779     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   3780 }
   3781 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetManualStreamSelection(IWMReaderAdvanced3* This,WINBOOL *pfSelection) {
   3782     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   3783 }
   3784 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetStreamsSelected(IWMReaderAdvanced3* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   3785     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   3786 }
   3787 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStreamSelected(IWMReaderAdvanced3* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   3788     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   3789 }
   3790 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL fGetCallbacks) {
   3791     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   3792 }
   3793 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveSelectionCallbacks(IWMReaderAdvanced3* This,WINBOOL *pfGetCallbacks) {
   3794     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   3795 }
   3796 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   3797     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   3798 }
   3799 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetReceiveStreamSamples(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   3800     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   3801 }
   3802 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   3803     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   3804 }
   3805 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForOutput(IWMReaderAdvanced3* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   3806     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   3807 }
   3808 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetAllocateForStream(IWMReaderAdvanced3* This,WORD wStreamNum,WINBOOL fAllocate) {
   3809     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   3810 }
   3811 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetAllocateForStream(IWMReaderAdvanced3* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   3812     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   3813 }
   3814 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetStatistics(IWMReaderAdvanced3* This,WM_READER_STATISTICS *pStatistics) {
   3815     return This->lpVtbl->GetStatistics(This,pStatistics);
   3816 }
   3817 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetClientInfo(IWMReaderAdvanced3* This,WM_READER_CLIENTINFO *pClientInfo) {
   3818     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   3819 }
   3820 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxOutputSampleSize(IWMReaderAdvanced3* This,DWORD dwOutput,DWORD *pcbMax) {
   3821     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   3822 }
   3823 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetMaxStreamSampleSize(IWMReaderAdvanced3* This,WORD wStream,DWORD *pcbMax) {
   3824     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   3825 }
   3826 static FORCEINLINE HRESULT IWMReaderAdvanced3_NotifyLateDelivery(IWMReaderAdvanced3* This,QWORD cnsLateness) {
   3827     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   3828 }
   3829 /*** IWMReaderAdvanced2 methods ***/
   3830 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE Mode) {
   3831     return This->lpVtbl->SetPlayMode(This,Mode);
   3832 }
   3833 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetPlayMode(IWMReaderAdvanced3* This,WMT_PLAY_MODE *pMode) {
   3834     return This->lpVtbl->GetPlayMode(This,pMode);
   3835 }
   3836 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetBufferProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
   3837     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
   3838 }
   3839 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetDownloadProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
   3840     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
   3841 }
   3842 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetSaveAsProgress(IWMReaderAdvanced3* This,DWORD *pdwPercent) {
   3843     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
   3844 }
   3845 static FORCEINLINE HRESULT IWMReaderAdvanced3_SaveFileAs(IWMReaderAdvanced3* This,const WCHAR *pwszFilename) {
   3846     return This->lpVtbl->SaveFileAs(This,pwszFilename);
   3847 }
   3848 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetProtocolName(IWMReaderAdvanced3* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
   3849     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
   3850 }
   3851 static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtMarker(IWMReaderAdvanced3* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
   3852     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
   3853 }
   3854 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   3855     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   3856 }
   3857 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetOutputSetting(IWMReaderAdvanced3* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   3858     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   3859 }
   3860 static FORCEINLINE HRESULT IWMReaderAdvanced3_Preroll(IWMReaderAdvanced3* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
   3861     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
   3862 }
   3863 static FORCEINLINE HRESULT IWMReaderAdvanced3_SetLogClientID(IWMReaderAdvanced3* This,WINBOOL fLogClientID) {
   3864     return This->lpVtbl->SetLogClientID(This,fLogClientID);
   3865 }
   3866 static FORCEINLINE HRESULT IWMReaderAdvanced3_GetLogClientID(IWMReaderAdvanced3* This,WINBOOL *pfLogClientID) {
   3867     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
   3868 }
   3869 static FORCEINLINE HRESULT IWMReaderAdvanced3_StopBuffering(IWMReaderAdvanced3* This) {
   3870     return This->lpVtbl->StopBuffering(This);
   3871 }
   3872 static FORCEINLINE HRESULT IWMReaderAdvanced3_OpenStream(IWMReaderAdvanced3* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
   3873     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
   3874 }
   3875 /*** IWMReaderAdvanced3 methods ***/
   3876 static FORCEINLINE HRESULT IWMReaderAdvanced3_StopNetStreaming(IWMReaderAdvanced3* This) {
   3877     return This->lpVtbl->StopNetStreaming(This);
   3878 }
   3879 static FORCEINLINE HRESULT IWMReaderAdvanced3_StartAtPosition(IWMReaderAdvanced3* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
   3880     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
   3881 }
   3882 #endif
   3883 #endif
   3884 
   3885 #endif
   3886 
   3887 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced3_StopNetStreaming_Proxy(
   3888     IWMReaderAdvanced3* This);
   3889 void __RPC_STUB IWMReaderAdvanced3_StopNetStreaming_Stub(
   3890     IRpcStubBuffer* This,
   3891     IRpcChannelBuffer* pRpcChannelBuffer,
   3892     PRPC_MESSAGE pRpcMessage,
   3893     DWORD* pdwStubPhase);
   3894 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced3_StartAtPosition_Proxy(
   3895     IWMReaderAdvanced3* This,
   3896     WORD wStreamNum,
   3897     void *pvOffsetStart,
   3898     void *pvDuration,
   3899     WMT_OFFSET_FORMAT dwOffsetFormat,
   3900     float fRate,
   3901     void *pvContext);
   3902 void __RPC_STUB IWMReaderAdvanced3_StartAtPosition_Stub(
   3903     IRpcStubBuffer* This,
   3904     IRpcChannelBuffer* pRpcChannelBuffer,
   3905     PRPC_MESSAGE pRpcMessage,
   3906     DWORD* pdwStubPhase);
   3907 
   3908 #endif  /* __IWMReaderAdvanced3_INTERFACE_DEFINED__ */
   3909 
   3910 /*****************************************************************************
   3911  * IWMReaderAdvanced4 interface
   3912  */
   3913 #ifndef __IWMReaderAdvanced4_INTERFACE_DEFINED__
   3914 #define __IWMReaderAdvanced4_INTERFACE_DEFINED__
   3915 
   3916 DEFINE_GUID(IID_IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85);
   3917 #if defined(__cplusplus) && !defined(CINTERFACE)
   3918 MIDL_INTERFACE("945a76a2-12ae-4d48-bd3c-cd1d90399b85")
   3919 IWMReaderAdvanced4 : public IWMReaderAdvanced3
   3920 {
   3921     virtual HRESULT STDMETHODCALLTYPE GetLanguageCount(
   3922         DWORD dwOutputNum,
   3923         WORD *pwLanguageCount) = 0;
   3924 
   3925     virtual HRESULT STDMETHODCALLTYPE GetLanguage(
   3926         DWORD dwOutputNum,
   3927         WORD wLanguage,
   3928         WCHAR *pwszLanguageString,
   3929         WORD *pcchLanguageStringLength) = 0;
   3930 
   3931     virtual HRESULT STDMETHODCALLTYPE GetMaxSpeedFactor(
   3932         double *pdblFactor) = 0;
   3933 
   3934     virtual HRESULT STDMETHODCALLTYPE IsUsingFastCache(
   3935         WINBOOL *pfUsingFastCache) = 0;
   3936 
   3937     virtual HRESULT STDMETHODCALLTYPE AddLogParam(
   3938         LPCWSTR wszNameSpace,
   3939         LPCWSTR wszName,
   3940         LPCWSTR wszValue) = 0;
   3941 
   3942     virtual HRESULT STDMETHODCALLTYPE SendLogParams(
   3943         ) = 0;
   3944 
   3945     virtual HRESULT STDMETHODCALLTYPE CanSaveFileAs(
   3946         WINBOOL *pfCanSave) = 0;
   3947 
   3948     virtual HRESULT STDMETHODCALLTYPE CancelSaveFileAs(
   3949         ) = 0;
   3950 
   3951     virtual HRESULT STDMETHODCALLTYPE GetURL(
   3952         WCHAR *pwszURL,
   3953         DWORD *pcchURL) = 0;
   3954 
   3955 };
   3956 #ifdef __CRT_UUID_DECL
   3957 __CRT_UUID_DECL(IWMReaderAdvanced4, 0x945a76a2, 0x12ae, 0x4d48, 0xbd,0x3c, 0xcd,0x1d,0x90,0x39,0x9b,0x85)
   3958 #endif
   3959 #else
   3960 typedef struct IWMReaderAdvanced4Vtbl {
   3961     BEGIN_INTERFACE
   3962 
   3963     /*** IUnknown methods ***/
   3964     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3965         IWMReaderAdvanced4* This,
   3966         REFIID riid,
   3967         void **ppvObject);
   3968 
   3969     ULONG (STDMETHODCALLTYPE *AddRef)(
   3970         IWMReaderAdvanced4* This);
   3971 
   3972     ULONG (STDMETHODCALLTYPE *Release)(
   3973         IWMReaderAdvanced4* This);
   3974 
   3975     /*** IWMReaderAdvanced methods ***/
   3976     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   3977         IWMReaderAdvanced4* This,
   3978         WINBOOL fUserClock);
   3979 
   3980     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   3981         IWMReaderAdvanced4* This,
   3982         WINBOOL *pfUserClock);
   3983 
   3984     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   3985         IWMReaderAdvanced4* This,
   3986         QWORD cnsTime);
   3987 
   3988     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   3989         IWMReaderAdvanced4* This,
   3990         WINBOOL fSelection);
   3991 
   3992     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   3993         IWMReaderAdvanced4* This,
   3994         WINBOOL *pfSelection);
   3995 
   3996     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   3997         IWMReaderAdvanced4* This,
   3998         WORD cStreamCount,
   3999         WORD *pwStreamNumbers,
   4000         WMT_STREAM_SELECTION *pSelections);
   4001 
   4002     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   4003         IWMReaderAdvanced4* This,
   4004         WORD wStreamNum,
   4005         WMT_STREAM_SELECTION *pSelection);
   4006 
   4007     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   4008         IWMReaderAdvanced4* This,
   4009         WINBOOL fGetCallbacks);
   4010 
   4011     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   4012         IWMReaderAdvanced4* This,
   4013         WINBOOL *pfGetCallbacks);
   4014 
   4015     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   4016         IWMReaderAdvanced4* This,
   4017         WORD wStreamNum,
   4018         WINBOOL fReceiveStreamSamples);
   4019 
   4020     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   4021         IWMReaderAdvanced4* This,
   4022         WORD wStreamNum,
   4023         WINBOOL *pfReceiveStreamSamples);
   4024 
   4025     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   4026         IWMReaderAdvanced4* This,
   4027         DWORD dwOutputNum,
   4028         WINBOOL fAllocate);
   4029 
   4030     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   4031         IWMReaderAdvanced4* This,
   4032         DWORD dwOutputNum,
   4033         WINBOOL *pfAllocate);
   4034 
   4035     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   4036         IWMReaderAdvanced4* This,
   4037         WORD wStreamNum,
   4038         WINBOOL fAllocate);
   4039 
   4040     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   4041         IWMReaderAdvanced4* This,
   4042         WORD dwSreamNum,
   4043         WINBOOL *pfAllocate);
   4044 
   4045     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   4046         IWMReaderAdvanced4* This,
   4047         WM_READER_STATISTICS *pStatistics);
   4048 
   4049     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   4050         IWMReaderAdvanced4* This,
   4051         WM_READER_CLIENTINFO *pClientInfo);
   4052 
   4053     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   4054         IWMReaderAdvanced4* This,
   4055         DWORD dwOutput,
   4056         DWORD *pcbMax);
   4057 
   4058     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   4059         IWMReaderAdvanced4* This,
   4060         WORD wStream,
   4061         DWORD *pcbMax);
   4062 
   4063     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   4064         IWMReaderAdvanced4* This,
   4065         QWORD cnsLateness);
   4066 
   4067     /*** IWMReaderAdvanced2 methods ***/
   4068     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
   4069         IWMReaderAdvanced4* This,
   4070         WMT_PLAY_MODE Mode);
   4071 
   4072     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
   4073         IWMReaderAdvanced4* This,
   4074         WMT_PLAY_MODE *pMode);
   4075 
   4076     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
   4077         IWMReaderAdvanced4* This,
   4078         DWORD *pdwPercent,
   4079         QWORD *pcnsBuffering);
   4080 
   4081     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
   4082         IWMReaderAdvanced4* This,
   4083         DWORD *pdwPercent,
   4084         QWORD *pqwBytesDownloaded,
   4085         QWORD *pcnsDownload);
   4086 
   4087     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
   4088         IWMReaderAdvanced4* This,
   4089         DWORD *pdwPercent);
   4090 
   4091     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
   4092         IWMReaderAdvanced4* This,
   4093         const WCHAR *pwszFilename);
   4094 
   4095     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
   4096         IWMReaderAdvanced4* This,
   4097         WCHAR *pwszProtocol,
   4098         DWORD *pcchProtocol);
   4099 
   4100     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
   4101         IWMReaderAdvanced4* This,
   4102         WORD wMarkerIndex,
   4103         QWORD cnsDuration,
   4104         float fRate,
   4105         void *pvContext);
   4106 
   4107     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   4108         IWMReaderAdvanced4* This,
   4109         DWORD dwOutputNum,
   4110         LPCWSTR pszName,
   4111         WMT_ATTR_DATATYPE *pType,
   4112         BYTE *pValue,
   4113         WORD *pcbLength);
   4114 
   4115     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   4116         IWMReaderAdvanced4* This,
   4117         DWORD dwOutputNum,
   4118         LPCWSTR pszName,
   4119         WMT_ATTR_DATATYPE Type,
   4120         const BYTE *pValue,
   4121         WORD cbLength);
   4122 
   4123     HRESULT (STDMETHODCALLTYPE *Preroll)(
   4124         IWMReaderAdvanced4* This,
   4125         QWORD cnsStart,
   4126         QWORD cnsDuration,
   4127         float fRate);
   4128 
   4129     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
   4130         IWMReaderAdvanced4* This,
   4131         WINBOOL fLogClientID);
   4132 
   4133     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
   4134         IWMReaderAdvanced4* This,
   4135         WINBOOL *pfLogClientID);
   4136 
   4137     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   4138         IWMReaderAdvanced4* This);
   4139 
   4140     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   4141         IWMReaderAdvanced4* This,
   4142         IStream *pStream,
   4143         IWMReaderCallback *pCallback,
   4144         void *pvContext);
   4145 
   4146     /*** IWMReaderAdvanced3 methods ***/
   4147     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
   4148         IWMReaderAdvanced4* This);
   4149 
   4150     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
   4151         IWMReaderAdvanced4* This,
   4152         WORD wStreamNum,
   4153         void *pvOffsetStart,
   4154         void *pvDuration,
   4155         WMT_OFFSET_FORMAT dwOffsetFormat,
   4156         float fRate,
   4157         void *pvContext);
   4158 
   4159     /*** IWMReaderAdvanced4 methods ***/
   4160     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
   4161         IWMReaderAdvanced4* This,
   4162         DWORD dwOutputNum,
   4163         WORD *pwLanguageCount);
   4164 
   4165     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
   4166         IWMReaderAdvanced4* This,
   4167         DWORD dwOutputNum,
   4168         WORD wLanguage,
   4169         WCHAR *pwszLanguageString,
   4170         WORD *pcchLanguageStringLength);
   4171 
   4172     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
   4173         IWMReaderAdvanced4* This,
   4174         double *pdblFactor);
   4175 
   4176     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
   4177         IWMReaderAdvanced4* This,
   4178         WINBOOL *pfUsingFastCache);
   4179 
   4180     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
   4181         IWMReaderAdvanced4* This,
   4182         LPCWSTR wszNameSpace,
   4183         LPCWSTR wszName,
   4184         LPCWSTR wszValue);
   4185 
   4186     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
   4187         IWMReaderAdvanced4* This);
   4188 
   4189     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
   4190         IWMReaderAdvanced4* This,
   4191         WINBOOL *pfCanSave);
   4192 
   4193     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
   4194         IWMReaderAdvanced4* This);
   4195 
   4196     HRESULT (STDMETHODCALLTYPE *GetURL)(
   4197         IWMReaderAdvanced4* This,
   4198         WCHAR *pwszURL,
   4199         DWORD *pcchURL);
   4200 
   4201     END_INTERFACE
   4202 } IWMReaderAdvanced4Vtbl;
   4203 interface IWMReaderAdvanced4 {
   4204     CONST_VTBL IWMReaderAdvanced4Vtbl* lpVtbl;
   4205 };
   4206 
   4207 #ifdef COBJMACROS
   4208 #ifndef WIDL_C_INLINE_WRAPPERS
   4209 /*** IUnknown methods ***/
   4210 #define IWMReaderAdvanced4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4211 #define IWMReaderAdvanced4_AddRef(This) (This)->lpVtbl->AddRef(This)
   4212 #define IWMReaderAdvanced4_Release(This) (This)->lpVtbl->Release(This)
   4213 /*** IWMReaderAdvanced methods ***/
   4214 #define IWMReaderAdvanced4_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   4215 #define IWMReaderAdvanced4_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   4216 #define IWMReaderAdvanced4_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   4217 #define IWMReaderAdvanced4_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   4218 #define IWMReaderAdvanced4_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   4219 #define IWMReaderAdvanced4_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   4220 #define IWMReaderAdvanced4_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   4221 #define IWMReaderAdvanced4_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   4222 #define IWMReaderAdvanced4_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   4223 #define IWMReaderAdvanced4_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   4224 #define IWMReaderAdvanced4_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   4225 #define IWMReaderAdvanced4_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   4226 #define IWMReaderAdvanced4_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   4227 #define IWMReaderAdvanced4_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   4228 #define IWMReaderAdvanced4_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   4229 #define IWMReaderAdvanced4_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   4230 #define IWMReaderAdvanced4_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   4231 #define IWMReaderAdvanced4_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   4232 #define IWMReaderAdvanced4_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   4233 #define IWMReaderAdvanced4_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   4234 /*** IWMReaderAdvanced2 methods ***/
   4235 #define IWMReaderAdvanced4_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
   4236 #define IWMReaderAdvanced4_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
   4237 #define IWMReaderAdvanced4_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
   4238 #define IWMReaderAdvanced4_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
   4239 #define IWMReaderAdvanced4_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
   4240 #define IWMReaderAdvanced4_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
   4241 #define IWMReaderAdvanced4_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
   4242 #define IWMReaderAdvanced4_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
   4243 #define IWMReaderAdvanced4_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   4244 #define IWMReaderAdvanced4_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   4245 #define IWMReaderAdvanced4_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
   4246 #define IWMReaderAdvanced4_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
   4247 #define IWMReaderAdvanced4_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
   4248 #define IWMReaderAdvanced4_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   4249 #define IWMReaderAdvanced4_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
   4250 /*** IWMReaderAdvanced3 methods ***/
   4251 #define IWMReaderAdvanced4_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
   4252 #define IWMReaderAdvanced4_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
   4253 /*** IWMReaderAdvanced4 methods ***/
   4254 #define IWMReaderAdvanced4_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
   4255 #define IWMReaderAdvanced4_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
   4256 #define IWMReaderAdvanced4_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
   4257 #define IWMReaderAdvanced4_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
   4258 #define IWMReaderAdvanced4_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
   4259 #define IWMReaderAdvanced4_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
   4260 #define IWMReaderAdvanced4_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
   4261 #define IWMReaderAdvanced4_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
   4262 #define IWMReaderAdvanced4_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
   4263 #else
   4264 /*** IUnknown methods ***/
   4265 static FORCEINLINE HRESULT IWMReaderAdvanced4_QueryInterface(IWMReaderAdvanced4* This,REFIID riid,void **ppvObject) {
   4266     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4267 }
   4268 static FORCEINLINE ULONG IWMReaderAdvanced4_AddRef(IWMReaderAdvanced4* This) {
   4269     return This->lpVtbl->AddRef(This);
   4270 }
   4271 static FORCEINLINE ULONG IWMReaderAdvanced4_Release(IWMReaderAdvanced4* This) {
   4272     return This->lpVtbl->Release(This);
   4273 }
   4274 /*** IWMReaderAdvanced methods ***/
   4275 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL fUserClock) {
   4276     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   4277 }
   4278 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetUserProvidedClock(IWMReaderAdvanced4* This,WINBOOL *pfUserClock) {
   4279     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   4280 }
   4281 static FORCEINLINE HRESULT IWMReaderAdvanced4_DeliverTime(IWMReaderAdvanced4* This,QWORD cnsTime) {
   4282     return This->lpVtbl->DeliverTime(This,cnsTime);
   4283 }
   4284 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL fSelection) {
   4285     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   4286 }
   4287 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetManualStreamSelection(IWMReaderAdvanced4* This,WINBOOL *pfSelection) {
   4288     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   4289 }
   4290 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetStreamsSelected(IWMReaderAdvanced4* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   4291     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   4292 }
   4293 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStreamSelected(IWMReaderAdvanced4* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   4294     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   4295 }
   4296 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL fGetCallbacks) {
   4297     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   4298 }
   4299 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveSelectionCallbacks(IWMReaderAdvanced4* This,WINBOOL *pfGetCallbacks) {
   4300     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   4301 }
   4302 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   4303     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   4304 }
   4305 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetReceiveStreamSamples(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   4306     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   4307 }
   4308 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   4309     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   4310 }
   4311 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForOutput(IWMReaderAdvanced4* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   4312     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   4313 }
   4314 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetAllocateForStream(IWMReaderAdvanced4* This,WORD wStreamNum,WINBOOL fAllocate) {
   4315     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   4316 }
   4317 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetAllocateForStream(IWMReaderAdvanced4* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   4318     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   4319 }
   4320 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetStatistics(IWMReaderAdvanced4* This,WM_READER_STATISTICS *pStatistics) {
   4321     return This->lpVtbl->GetStatistics(This,pStatistics);
   4322 }
   4323 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetClientInfo(IWMReaderAdvanced4* This,WM_READER_CLIENTINFO *pClientInfo) {
   4324     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   4325 }
   4326 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxOutputSampleSize(IWMReaderAdvanced4* This,DWORD dwOutput,DWORD *pcbMax) {
   4327     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   4328 }
   4329 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxStreamSampleSize(IWMReaderAdvanced4* This,WORD wStream,DWORD *pcbMax) {
   4330     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   4331 }
   4332 static FORCEINLINE HRESULT IWMReaderAdvanced4_NotifyLateDelivery(IWMReaderAdvanced4* This,QWORD cnsLateness) {
   4333     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   4334 }
   4335 /*** IWMReaderAdvanced2 methods ***/
   4336 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE Mode) {
   4337     return This->lpVtbl->SetPlayMode(This,Mode);
   4338 }
   4339 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetPlayMode(IWMReaderAdvanced4* This,WMT_PLAY_MODE *pMode) {
   4340     return This->lpVtbl->GetPlayMode(This,pMode);
   4341 }
   4342 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetBufferProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
   4343     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
   4344 }
   4345 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetDownloadProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
   4346     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
   4347 }
   4348 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetSaveAsProgress(IWMReaderAdvanced4* This,DWORD *pdwPercent) {
   4349     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
   4350 }
   4351 static FORCEINLINE HRESULT IWMReaderAdvanced4_SaveFileAs(IWMReaderAdvanced4* This,const WCHAR *pwszFilename) {
   4352     return This->lpVtbl->SaveFileAs(This,pwszFilename);
   4353 }
   4354 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetProtocolName(IWMReaderAdvanced4* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
   4355     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
   4356 }
   4357 static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtMarker(IWMReaderAdvanced4* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
   4358     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
   4359 }
   4360 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   4361     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   4362 }
   4363 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetOutputSetting(IWMReaderAdvanced4* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   4364     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   4365 }
   4366 static FORCEINLINE HRESULT IWMReaderAdvanced4_Preroll(IWMReaderAdvanced4* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
   4367     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
   4368 }
   4369 static FORCEINLINE HRESULT IWMReaderAdvanced4_SetLogClientID(IWMReaderAdvanced4* This,WINBOOL fLogClientID) {
   4370     return This->lpVtbl->SetLogClientID(This,fLogClientID);
   4371 }
   4372 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLogClientID(IWMReaderAdvanced4* This,WINBOOL *pfLogClientID) {
   4373     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
   4374 }
   4375 static FORCEINLINE HRESULT IWMReaderAdvanced4_StopBuffering(IWMReaderAdvanced4* This) {
   4376     return This->lpVtbl->StopBuffering(This);
   4377 }
   4378 static FORCEINLINE HRESULT IWMReaderAdvanced4_OpenStream(IWMReaderAdvanced4* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
   4379     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
   4380 }
   4381 /*** IWMReaderAdvanced3 methods ***/
   4382 static FORCEINLINE HRESULT IWMReaderAdvanced4_StopNetStreaming(IWMReaderAdvanced4* This) {
   4383     return This->lpVtbl->StopNetStreaming(This);
   4384 }
   4385 static FORCEINLINE HRESULT IWMReaderAdvanced4_StartAtPosition(IWMReaderAdvanced4* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
   4386     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
   4387 }
   4388 /*** IWMReaderAdvanced4 methods ***/
   4389 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguageCount(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
   4390     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
   4391 }
   4392 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetLanguage(IWMReaderAdvanced4* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
   4393     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
   4394 }
   4395 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetMaxSpeedFactor(IWMReaderAdvanced4* This,double *pdblFactor) {
   4396     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
   4397 }
   4398 static FORCEINLINE HRESULT IWMReaderAdvanced4_IsUsingFastCache(IWMReaderAdvanced4* This,WINBOOL *pfUsingFastCache) {
   4399     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
   4400 }
   4401 static FORCEINLINE HRESULT IWMReaderAdvanced4_AddLogParam(IWMReaderAdvanced4* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
   4402     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
   4403 }
   4404 static FORCEINLINE HRESULT IWMReaderAdvanced4_SendLogParams(IWMReaderAdvanced4* This) {
   4405     return This->lpVtbl->SendLogParams(This);
   4406 }
   4407 static FORCEINLINE HRESULT IWMReaderAdvanced4_CanSaveFileAs(IWMReaderAdvanced4* This,WINBOOL *pfCanSave) {
   4408     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
   4409 }
   4410 static FORCEINLINE HRESULT IWMReaderAdvanced4_CancelSaveFileAs(IWMReaderAdvanced4* This) {
   4411     return This->lpVtbl->CancelSaveFileAs(This);
   4412 }
   4413 static FORCEINLINE HRESULT IWMReaderAdvanced4_GetURL(IWMReaderAdvanced4* This,WCHAR *pwszURL,DWORD *pcchURL) {
   4414     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
   4415 }
   4416 #endif
   4417 #endif
   4418 
   4419 #endif
   4420 
   4421 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetLanguageCount_Proxy(
   4422     IWMReaderAdvanced4* This,
   4423     DWORD dwOutputNum,
   4424     WORD *pwLanguageCount);
   4425 void __RPC_STUB IWMReaderAdvanced4_GetLanguageCount_Stub(
   4426     IRpcStubBuffer* This,
   4427     IRpcChannelBuffer* pRpcChannelBuffer,
   4428     PRPC_MESSAGE pRpcMessage,
   4429     DWORD* pdwStubPhase);
   4430 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetLanguage_Proxy(
   4431     IWMReaderAdvanced4* This,
   4432     DWORD dwOutputNum,
   4433     WORD wLanguage,
   4434     WCHAR *pwszLanguageString,
   4435     WORD *pcchLanguageStringLength);
   4436 void __RPC_STUB IWMReaderAdvanced4_GetLanguage_Stub(
   4437     IRpcStubBuffer* This,
   4438     IRpcChannelBuffer* pRpcChannelBuffer,
   4439     PRPC_MESSAGE pRpcMessage,
   4440     DWORD* pdwStubPhase);
   4441 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetMaxSpeedFactor_Proxy(
   4442     IWMReaderAdvanced4* This,
   4443     double *pdblFactor);
   4444 void __RPC_STUB IWMReaderAdvanced4_GetMaxSpeedFactor_Stub(
   4445     IRpcStubBuffer* This,
   4446     IRpcChannelBuffer* pRpcChannelBuffer,
   4447     PRPC_MESSAGE pRpcMessage,
   4448     DWORD* pdwStubPhase);
   4449 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_IsUsingFastCache_Proxy(
   4450     IWMReaderAdvanced4* This,
   4451     WINBOOL *pfUsingFastCache);
   4452 void __RPC_STUB IWMReaderAdvanced4_IsUsingFastCache_Stub(
   4453     IRpcStubBuffer* This,
   4454     IRpcChannelBuffer* pRpcChannelBuffer,
   4455     PRPC_MESSAGE pRpcMessage,
   4456     DWORD* pdwStubPhase);
   4457 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_AddLogParam_Proxy(
   4458     IWMReaderAdvanced4* This,
   4459     LPCWSTR wszNameSpace,
   4460     LPCWSTR wszName,
   4461     LPCWSTR wszValue);
   4462 void __RPC_STUB IWMReaderAdvanced4_AddLogParam_Stub(
   4463     IRpcStubBuffer* This,
   4464     IRpcChannelBuffer* pRpcChannelBuffer,
   4465     PRPC_MESSAGE pRpcMessage,
   4466     DWORD* pdwStubPhase);
   4467 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_SendLogParams_Proxy(
   4468     IWMReaderAdvanced4* This);
   4469 void __RPC_STUB IWMReaderAdvanced4_SendLogParams_Stub(
   4470     IRpcStubBuffer* This,
   4471     IRpcChannelBuffer* pRpcChannelBuffer,
   4472     PRPC_MESSAGE pRpcMessage,
   4473     DWORD* pdwStubPhase);
   4474 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_CanSaveFileAs_Proxy(
   4475     IWMReaderAdvanced4* This,
   4476     WINBOOL *pfCanSave);
   4477 void __RPC_STUB IWMReaderAdvanced4_CanSaveFileAs_Stub(
   4478     IRpcStubBuffer* This,
   4479     IRpcChannelBuffer* pRpcChannelBuffer,
   4480     PRPC_MESSAGE pRpcMessage,
   4481     DWORD* pdwStubPhase);
   4482 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_CancelSaveFileAs_Proxy(
   4483     IWMReaderAdvanced4* This);
   4484 void __RPC_STUB IWMReaderAdvanced4_CancelSaveFileAs_Stub(
   4485     IRpcStubBuffer* This,
   4486     IRpcChannelBuffer* pRpcChannelBuffer,
   4487     PRPC_MESSAGE pRpcMessage,
   4488     DWORD* pdwStubPhase);
   4489 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced4_GetURL_Proxy(
   4490     IWMReaderAdvanced4* This,
   4491     WCHAR *pwszURL,
   4492     DWORD *pcchURL);
   4493 void __RPC_STUB IWMReaderAdvanced4_GetURL_Stub(
   4494     IRpcStubBuffer* This,
   4495     IRpcChannelBuffer* pRpcChannelBuffer,
   4496     PRPC_MESSAGE pRpcMessage,
   4497     DWORD* pdwStubPhase);
   4498 
   4499 #endif  /* __IWMReaderAdvanced4_INTERFACE_DEFINED__ */
   4500 
   4501 /*****************************************************************************
   4502  * IWMReaderAdvanced5 interface
   4503  */
   4504 #ifndef __IWMReaderAdvanced5_INTERFACE_DEFINED__
   4505 #define __IWMReaderAdvanced5_INTERFACE_DEFINED__
   4506 
   4507 DEFINE_GUID(IID_IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63);
   4508 #if defined(__cplusplus) && !defined(CINTERFACE)
   4509 MIDL_INTERFACE("24c44db0-55d1-49ae-a5cc-f13815e36363")
   4510 IWMReaderAdvanced5 : public IWMReaderAdvanced4
   4511 {
   4512     virtual HRESULT STDMETHODCALLTYPE SetPlayerHook(
   4513         DWORD dwOutputNum,
   4514         IWMPlayerHook *pHook) = 0;
   4515 
   4516 };
   4517 #ifdef __CRT_UUID_DECL
   4518 __CRT_UUID_DECL(IWMReaderAdvanced5, 0x24c44db0, 0x55d1, 0x49ae, 0xa5,0xcc, 0xf1,0x38,0x15,0xe3,0x63,0x63)
   4519 #endif
   4520 #else
   4521 typedef struct IWMReaderAdvanced5Vtbl {
   4522     BEGIN_INTERFACE
   4523 
   4524     /*** IUnknown methods ***/
   4525     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   4526         IWMReaderAdvanced5* This,
   4527         REFIID riid,
   4528         void **ppvObject);
   4529 
   4530     ULONG (STDMETHODCALLTYPE *AddRef)(
   4531         IWMReaderAdvanced5* This);
   4532 
   4533     ULONG (STDMETHODCALLTYPE *Release)(
   4534         IWMReaderAdvanced5* This);
   4535 
   4536     /*** IWMReaderAdvanced methods ***/
   4537     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   4538         IWMReaderAdvanced5* This,
   4539         WINBOOL fUserClock);
   4540 
   4541     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   4542         IWMReaderAdvanced5* This,
   4543         WINBOOL *pfUserClock);
   4544 
   4545     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   4546         IWMReaderAdvanced5* This,
   4547         QWORD cnsTime);
   4548 
   4549     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   4550         IWMReaderAdvanced5* This,
   4551         WINBOOL fSelection);
   4552 
   4553     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   4554         IWMReaderAdvanced5* This,
   4555         WINBOOL *pfSelection);
   4556 
   4557     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   4558         IWMReaderAdvanced5* This,
   4559         WORD cStreamCount,
   4560         WORD *pwStreamNumbers,
   4561         WMT_STREAM_SELECTION *pSelections);
   4562 
   4563     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   4564         IWMReaderAdvanced5* This,
   4565         WORD wStreamNum,
   4566         WMT_STREAM_SELECTION *pSelection);
   4567 
   4568     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   4569         IWMReaderAdvanced5* This,
   4570         WINBOOL fGetCallbacks);
   4571 
   4572     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   4573         IWMReaderAdvanced5* This,
   4574         WINBOOL *pfGetCallbacks);
   4575 
   4576     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   4577         IWMReaderAdvanced5* This,
   4578         WORD wStreamNum,
   4579         WINBOOL fReceiveStreamSamples);
   4580 
   4581     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   4582         IWMReaderAdvanced5* This,
   4583         WORD wStreamNum,
   4584         WINBOOL *pfReceiveStreamSamples);
   4585 
   4586     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   4587         IWMReaderAdvanced5* This,
   4588         DWORD dwOutputNum,
   4589         WINBOOL fAllocate);
   4590 
   4591     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   4592         IWMReaderAdvanced5* This,
   4593         DWORD dwOutputNum,
   4594         WINBOOL *pfAllocate);
   4595 
   4596     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   4597         IWMReaderAdvanced5* This,
   4598         WORD wStreamNum,
   4599         WINBOOL fAllocate);
   4600 
   4601     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   4602         IWMReaderAdvanced5* This,
   4603         WORD dwSreamNum,
   4604         WINBOOL *pfAllocate);
   4605 
   4606     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   4607         IWMReaderAdvanced5* This,
   4608         WM_READER_STATISTICS *pStatistics);
   4609 
   4610     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   4611         IWMReaderAdvanced5* This,
   4612         WM_READER_CLIENTINFO *pClientInfo);
   4613 
   4614     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   4615         IWMReaderAdvanced5* This,
   4616         DWORD dwOutput,
   4617         DWORD *pcbMax);
   4618 
   4619     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   4620         IWMReaderAdvanced5* This,
   4621         WORD wStream,
   4622         DWORD *pcbMax);
   4623 
   4624     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   4625         IWMReaderAdvanced5* This,
   4626         QWORD cnsLateness);
   4627 
   4628     /*** IWMReaderAdvanced2 methods ***/
   4629     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
   4630         IWMReaderAdvanced5* This,
   4631         WMT_PLAY_MODE Mode);
   4632 
   4633     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
   4634         IWMReaderAdvanced5* This,
   4635         WMT_PLAY_MODE *pMode);
   4636 
   4637     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
   4638         IWMReaderAdvanced5* This,
   4639         DWORD *pdwPercent,
   4640         QWORD *pcnsBuffering);
   4641 
   4642     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
   4643         IWMReaderAdvanced5* This,
   4644         DWORD *pdwPercent,
   4645         QWORD *pqwBytesDownloaded,
   4646         QWORD *pcnsDownload);
   4647 
   4648     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
   4649         IWMReaderAdvanced5* This,
   4650         DWORD *pdwPercent);
   4651 
   4652     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
   4653         IWMReaderAdvanced5* This,
   4654         const WCHAR *pwszFilename);
   4655 
   4656     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
   4657         IWMReaderAdvanced5* This,
   4658         WCHAR *pwszProtocol,
   4659         DWORD *pcchProtocol);
   4660 
   4661     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
   4662         IWMReaderAdvanced5* This,
   4663         WORD wMarkerIndex,
   4664         QWORD cnsDuration,
   4665         float fRate,
   4666         void *pvContext);
   4667 
   4668     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   4669         IWMReaderAdvanced5* This,
   4670         DWORD dwOutputNum,
   4671         LPCWSTR pszName,
   4672         WMT_ATTR_DATATYPE *pType,
   4673         BYTE *pValue,
   4674         WORD *pcbLength);
   4675 
   4676     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   4677         IWMReaderAdvanced5* This,
   4678         DWORD dwOutputNum,
   4679         LPCWSTR pszName,
   4680         WMT_ATTR_DATATYPE Type,
   4681         const BYTE *pValue,
   4682         WORD cbLength);
   4683 
   4684     HRESULT (STDMETHODCALLTYPE *Preroll)(
   4685         IWMReaderAdvanced5* This,
   4686         QWORD cnsStart,
   4687         QWORD cnsDuration,
   4688         float fRate);
   4689 
   4690     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
   4691         IWMReaderAdvanced5* This,
   4692         WINBOOL fLogClientID);
   4693 
   4694     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
   4695         IWMReaderAdvanced5* This,
   4696         WINBOOL *pfLogClientID);
   4697 
   4698     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   4699         IWMReaderAdvanced5* This);
   4700 
   4701     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   4702         IWMReaderAdvanced5* This,
   4703         IStream *pStream,
   4704         IWMReaderCallback *pCallback,
   4705         void *pvContext);
   4706 
   4707     /*** IWMReaderAdvanced3 methods ***/
   4708     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
   4709         IWMReaderAdvanced5* This);
   4710 
   4711     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
   4712         IWMReaderAdvanced5* This,
   4713         WORD wStreamNum,
   4714         void *pvOffsetStart,
   4715         void *pvDuration,
   4716         WMT_OFFSET_FORMAT dwOffsetFormat,
   4717         float fRate,
   4718         void *pvContext);
   4719 
   4720     /*** IWMReaderAdvanced4 methods ***/
   4721     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
   4722         IWMReaderAdvanced5* This,
   4723         DWORD dwOutputNum,
   4724         WORD *pwLanguageCount);
   4725 
   4726     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
   4727         IWMReaderAdvanced5* This,
   4728         DWORD dwOutputNum,
   4729         WORD wLanguage,
   4730         WCHAR *pwszLanguageString,
   4731         WORD *pcchLanguageStringLength);
   4732 
   4733     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
   4734         IWMReaderAdvanced5* This,
   4735         double *pdblFactor);
   4736 
   4737     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
   4738         IWMReaderAdvanced5* This,
   4739         WINBOOL *pfUsingFastCache);
   4740 
   4741     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
   4742         IWMReaderAdvanced5* This,
   4743         LPCWSTR wszNameSpace,
   4744         LPCWSTR wszName,
   4745         LPCWSTR wszValue);
   4746 
   4747     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
   4748         IWMReaderAdvanced5* This);
   4749 
   4750     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
   4751         IWMReaderAdvanced5* This,
   4752         WINBOOL *pfCanSave);
   4753 
   4754     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
   4755         IWMReaderAdvanced5* This);
   4756 
   4757     HRESULT (STDMETHODCALLTYPE *GetURL)(
   4758         IWMReaderAdvanced5* This,
   4759         WCHAR *pwszURL,
   4760         DWORD *pcchURL);
   4761 
   4762     /*** IWMReaderAdvanced5 methods ***/
   4763     HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
   4764         IWMReaderAdvanced5* This,
   4765         DWORD dwOutputNum,
   4766         IWMPlayerHook *pHook);
   4767 
   4768     END_INTERFACE
   4769 } IWMReaderAdvanced5Vtbl;
   4770 interface IWMReaderAdvanced5 {
   4771     CONST_VTBL IWMReaderAdvanced5Vtbl* lpVtbl;
   4772 };
   4773 
   4774 #ifdef COBJMACROS
   4775 #ifndef WIDL_C_INLINE_WRAPPERS
   4776 /*** IUnknown methods ***/
   4777 #define IWMReaderAdvanced5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   4778 #define IWMReaderAdvanced5_AddRef(This) (This)->lpVtbl->AddRef(This)
   4779 #define IWMReaderAdvanced5_Release(This) (This)->lpVtbl->Release(This)
   4780 /*** IWMReaderAdvanced methods ***/
   4781 #define IWMReaderAdvanced5_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   4782 #define IWMReaderAdvanced5_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   4783 #define IWMReaderAdvanced5_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   4784 #define IWMReaderAdvanced5_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   4785 #define IWMReaderAdvanced5_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   4786 #define IWMReaderAdvanced5_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   4787 #define IWMReaderAdvanced5_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   4788 #define IWMReaderAdvanced5_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   4789 #define IWMReaderAdvanced5_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   4790 #define IWMReaderAdvanced5_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   4791 #define IWMReaderAdvanced5_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   4792 #define IWMReaderAdvanced5_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   4793 #define IWMReaderAdvanced5_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   4794 #define IWMReaderAdvanced5_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   4795 #define IWMReaderAdvanced5_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   4796 #define IWMReaderAdvanced5_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   4797 #define IWMReaderAdvanced5_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   4798 #define IWMReaderAdvanced5_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   4799 #define IWMReaderAdvanced5_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   4800 #define IWMReaderAdvanced5_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   4801 /*** IWMReaderAdvanced2 methods ***/
   4802 #define IWMReaderAdvanced5_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
   4803 #define IWMReaderAdvanced5_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
   4804 #define IWMReaderAdvanced5_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
   4805 #define IWMReaderAdvanced5_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
   4806 #define IWMReaderAdvanced5_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
   4807 #define IWMReaderAdvanced5_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
   4808 #define IWMReaderAdvanced5_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
   4809 #define IWMReaderAdvanced5_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
   4810 #define IWMReaderAdvanced5_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   4811 #define IWMReaderAdvanced5_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   4812 #define IWMReaderAdvanced5_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
   4813 #define IWMReaderAdvanced5_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
   4814 #define IWMReaderAdvanced5_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
   4815 #define IWMReaderAdvanced5_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   4816 #define IWMReaderAdvanced5_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
   4817 /*** IWMReaderAdvanced3 methods ***/
   4818 #define IWMReaderAdvanced5_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
   4819 #define IWMReaderAdvanced5_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
   4820 /*** IWMReaderAdvanced4 methods ***/
   4821 #define IWMReaderAdvanced5_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
   4822 #define IWMReaderAdvanced5_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
   4823 #define IWMReaderAdvanced5_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
   4824 #define IWMReaderAdvanced5_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
   4825 #define IWMReaderAdvanced5_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
   4826 #define IWMReaderAdvanced5_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
   4827 #define IWMReaderAdvanced5_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
   4828 #define IWMReaderAdvanced5_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
   4829 #define IWMReaderAdvanced5_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
   4830 /*** IWMReaderAdvanced5 methods ***/
   4831 #define IWMReaderAdvanced5_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
   4832 #else
   4833 /*** IUnknown methods ***/
   4834 static FORCEINLINE HRESULT IWMReaderAdvanced5_QueryInterface(IWMReaderAdvanced5* This,REFIID riid,void **ppvObject) {
   4835     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   4836 }
   4837 static FORCEINLINE ULONG IWMReaderAdvanced5_AddRef(IWMReaderAdvanced5* This) {
   4838     return This->lpVtbl->AddRef(This);
   4839 }
   4840 static FORCEINLINE ULONG IWMReaderAdvanced5_Release(IWMReaderAdvanced5* This) {
   4841     return This->lpVtbl->Release(This);
   4842 }
   4843 /*** IWMReaderAdvanced methods ***/
   4844 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL fUserClock) {
   4845     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   4846 }
   4847 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetUserProvidedClock(IWMReaderAdvanced5* This,WINBOOL *pfUserClock) {
   4848     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   4849 }
   4850 static FORCEINLINE HRESULT IWMReaderAdvanced5_DeliverTime(IWMReaderAdvanced5* This,QWORD cnsTime) {
   4851     return This->lpVtbl->DeliverTime(This,cnsTime);
   4852 }
   4853 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL fSelection) {
   4854     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   4855 }
   4856 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetManualStreamSelection(IWMReaderAdvanced5* This,WINBOOL *pfSelection) {
   4857     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   4858 }
   4859 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetStreamsSelected(IWMReaderAdvanced5* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   4860     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   4861 }
   4862 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStreamSelected(IWMReaderAdvanced5* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   4863     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   4864 }
   4865 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL fGetCallbacks) {
   4866     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   4867 }
   4868 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveSelectionCallbacks(IWMReaderAdvanced5* This,WINBOOL *pfGetCallbacks) {
   4869     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   4870 }
   4871 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   4872     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   4873 }
   4874 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetReceiveStreamSamples(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   4875     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   4876 }
   4877 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   4878     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   4879 }
   4880 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForOutput(IWMReaderAdvanced5* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   4881     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   4882 }
   4883 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetAllocateForStream(IWMReaderAdvanced5* This,WORD wStreamNum,WINBOOL fAllocate) {
   4884     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   4885 }
   4886 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetAllocateForStream(IWMReaderAdvanced5* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   4887     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   4888 }
   4889 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetStatistics(IWMReaderAdvanced5* This,WM_READER_STATISTICS *pStatistics) {
   4890     return This->lpVtbl->GetStatistics(This,pStatistics);
   4891 }
   4892 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetClientInfo(IWMReaderAdvanced5* This,WM_READER_CLIENTINFO *pClientInfo) {
   4893     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   4894 }
   4895 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxOutputSampleSize(IWMReaderAdvanced5* This,DWORD dwOutput,DWORD *pcbMax) {
   4896     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   4897 }
   4898 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxStreamSampleSize(IWMReaderAdvanced5* This,WORD wStream,DWORD *pcbMax) {
   4899     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   4900 }
   4901 static FORCEINLINE HRESULT IWMReaderAdvanced5_NotifyLateDelivery(IWMReaderAdvanced5* This,QWORD cnsLateness) {
   4902     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   4903 }
   4904 /*** IWMReaderAdvanced2 methods ***/
   4905 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE Mode) {
   4906     return This->lpVtbl->SetPlayMode(This,Mode);
   4907 }
   4908 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetPlayMode(IWMReaderAdvanced5* This,WMT_PLAY_MODE *pMode) {
   4909     return This->lpVtbl->GetPlayMode(This,pMode);
   4910 }
   4911 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetBufferProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
   4912     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
   4913 }
   4914 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetDownloadProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
   4915     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
   4916 }
   4917 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetSaveAsProgress(IWMReaderAdvanced5* This,DWORD *pdwPercent) {
   4918     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
   4919 }
   4920 static FORCEINLINE HRESULT IWMReaderAdvanced5_SaveFileAs(IWMReaderAdvanced5* This,const WCHAR *pwszFilename) {
   4921     return This->lpVtbl->SaveFileAs(This,pwszFilename);
   4922 }
   4923 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetProtocolName(IWMReaderAdvanced5* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
   4924     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
   4925 }
   4926 static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtMarker(IWMReaderAdvanced5* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
   4927     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
   4928 }
   4929 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   4930     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   4931 }
   4932 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetOutputSetting(IWMReaderAdvanced5* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   4933     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   4934 }
   4935 static FORCEINLINE HRESULT IWMReaderAdvanced5_Preroll(IWMReaderAdvanced5* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
   4936     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
   4937 }
   4938 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetLogClientID(IWMReaderAdvanced5* This,WINBOOL fLogClientID) {
   4939     return This->lpVtbl->SetLogClientID(This,fLogClientID);
   4940 }
   4941 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLogClientID(IWMReaderAdvanced5* This,WINBOOL *pfLogClientID) {
   4942     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
   4943 }
   4944 static FORCEINLINE HRESULT IWMReaderAdvanced5_StopBuffering(IWMReaderAdvanced5* This) {
   4945     return This->lpVtbl->StopBuffering(This);
   4946 }
   4947 static FORCEINLINE HRESULT IWMReaderAdvanced5_OpenStream(IWMReaderAdvanced5* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
   4948     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
   4949 }
   4950 /*** IWMReaderAdvanced3 methods ***/
   4951 static FORCEINLINE HRESULT IWMReaderAdvanced5_StopNetStreaming(IWMReaderAdvanced5* This) {
   4952     return This->lpVtbl->StopNetStreaming(This);
   4953 }
   4954 static FORCEINLINE HRESULT IWMReaderAdvanced5_StartAtPosition(IWMReaderAdvanced5* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
   4955     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
   4956 }
   4957 /*** IWMReaderAdvanced4 methods ***/
   4958 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguageCount(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
   4959     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
   4960 }
   4961 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetLanguage(IWMReaderAdvanced5* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
   4962     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
   4963 }
   4964 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetMaxSpeedFactor(IWMReaderAdvanced5* This,double *pdblFactor) {
   4965     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
   4966 }
   4967 static FORCEINLINE HRESULT IWMReaderAdvanced5_IsUsingFastCache(IWMReaderAdvanced5* This,WINBOOL *pfUsingFastCache) {
   4968     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
   4969 }
   4970 static FORCEINLINE HRESULT IWMReaderAdvanced5_AddLogParam(IWMReaderAdvanced5* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
   4971     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
   4972 }
   4973 static FORCEINLINE HRESULT IWMReaderAdvanced5_SendLogParams(IWMReaderAdvanced5* This) {
   4974     return This->lpVtbl->SendLogParams(This);
   4975 }
   4976 static FORCEINLINE HRESULT IWMReaderAdvanced5_CanSaveFileAs(IWMReaderAdvanced5* This,WINBOOL *pfCanSave) {
   4977     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
   4978 }
   4979 static FORCEINLINE HRESULT IWMReaderAdvanced5_CancelSaveFileAs(IWMReaderAdvanced5* This) {
   4980     return This->lpVtbl->CancelSaveFileAs(This);
   4981 }
   4982 static FORCEINLINE HRESULT IWMReaderAdvanced5_GetURL(IWMReaderAdvanced5* This,WCHAR *pwszURL,DWORD *pcchURL) {
   4983     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
   4984 }
   4985 /*** IWMReaderAdvanced5 methods ***/
   4986 static FORCEINLINE HRESULT IWMReaderAdvanced5_SetPlayerHook(IWMReaderAdvanced5* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
   4987     return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
   4988 }
   4989 #endif
   4990 #endif
   4991 
   4992 #endif
   4993 
   4994 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced5_SetPlayerHook_Proxy(
   4995     IWMReaderAdvanced5* This,
   4996     DWORD dwOutputNum,
   4997     IWMPlayerHook *pHook);
   4998 void __RPC_STUB IWMReaderAdvanced5_SetPlayerHook_Stub(
   4999     IRpcStubBuffer* This,
   5000     IRpcChannelBuffer* pRpcChannelBuffer,
   5001     PRPC_MESSAGE pRpcMessage,
   5002     DWORD* pdwStubPhase);
   5003 
   5004 #endif  /* __IWMReaderAdvanced5_INTERFACE_DEFINED__ */
   5005 
   5006 /*****************************************************************************
   5007  * IWMReaderAdvanced6 interface
   5008  */
   5009 #ifndef __IWMReaderAdvanced6_INTERFACE_DEFINED__
   5010 #define __IWMReaderAdvanced6_INTERFACE_DEFINED__
   5011 
   5012 DEFINE_GUID(IID_IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde);
   5013 #if defined(__cplusplus) && !defined(CINTERFACE)
   5014 MIDL_INTERFACE("18a2e7f8-428f-4acd-8a00-e64639bc93de")
   5015 IWMReaderAdvanced6 : public IWMReaderAdvanced5
   5016 {
   5017     virtual HRESULT STDMETHODCALLTYPE SetProtectStreamSamples(
   5018         BYTE *pbCertificate,
   5019         DWORD cbCertificate,
   5020         DWORD dwCertificateType,
   5021         DWORD dwFlags,
   5022         BYTE *pbInitializationVector,
   5023         DWORD *pcbInitializationVector) = 0;
   5024 
   5025 };
   5026 #ifdef __CRT_UUID_DECL
   5027 __CRT_UUID_DECL(IWMReaderAdvanced6, 0x18a2e7f8, 0x428f, 0x4acd, 0x8a,0x00, 0xe6,0x46,0x39,0xbc,0x93,0xde)
   5028 #endif
   5029 #else
   5030 typedef struct IWMReaderAdvanced6Vtbl {
   5031     BEGIN_INTERFACE
   5032 
   5033     /*** IUnknown methods ***/
   5034     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5035         IWMReaderAdvanced6* This,
   5036         REFIID riid,
   5037         void **ppvObject);
   5038 
   5039     ULONG (STDMETHODCALLTYPE *AddRef)(
   5040         IWMReaderAdvanced6* This);
   5041 
   5042     ULONG (STDMETHODCALLTYPE *Release)(
   5043         IWMReaderAdvanced6* This);
   5044 
   5045     /*** IWMReaderAdvanced methods ***/
   5046     HRESULT (STDMETHODCALLTYPE *SetUserProvidedClock)(
   5047         IWMReaderAdvanced6* This,
   5048         WINBOOL fUserClock);
   5049 
   5050     HRESULT (STDMETHODCALLTYPE *GetUserProvidedClock)(
   5051         IWMReaderAdvanced6* This,
   5052         WINBOOL *pfUserClock);
   5053 
   5054     HRESULT (STDMETHODCALLTYPE *DeliverTime)(
   5055         IWMReaderAdvanced6* This,
   5056         QWORD cnsTime);
   5057 
   5058     HRESULT (STDMETHODCALLTYPE *SetManualStreamSelection)(
   5059         IWMReaderAdvanced6* This,
   5060         WINBOOL fSelection);
   5061 
   5062     HRESULT (STDMETHODCALLTYPE *GetManualStreamSelection)(
   5063         IWMReaderAdvanced6* This,
   5064         WINBOOL *pfSelection);
   5065 
   5066     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   5067         IWMReaderAdvanced6* This,
   5068         WORD cStreamCount,
   5069         WORD *pwStreamNumbers,
   5070         WMT_STREAM_SELECTION *pSelections);
   5071 
   5072     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   5073         IWMReaderAdvanced6* This,
   5074         WORD wStreamNum,
   5075         WMT_STREAM_SELECTION *pSelection);
   5076 
   5077     HRESULT (STDMETHODCALLTYPE *SetReceiveSelectionCallbacks)(
   5078         IWMReaderAdvanced6* This,
   5079         WINBOOL fGetCallbacks);
   5080 
   5081     HRESULT (STDMETHODCALLTYPE *GetReceiveSelectionCallbacks)(
   5082         IWMReaderAdvanced6* This,
   5083         WINBOOL *pfGetCallbacks);
   5084 
   5085     HRESULT (STDMETHODCALLTYPE *SetReceiveStreamSamples)(
   5086         IWMReaderAdvanced6* This,
   5087         WORD wStreamNum,
   5088         WINBOOL fReceiveStreamSamples);
   5089 
   5090     HRESULT (STDMETHODCALLTYPE *GetReceiveStreamSamples)(
   5091         IWMReaderAdvanced6* This,
   5092         WORD wStreamNum,
   5093         WINBOOL *pfReceiveStreamSamples);
   5094 
   5095     HRESULT (STDMETHODCALLTYPE *SetAllocateForOutput)(
   5096         IWMReaderAdvanced6* This,
   5097         DWORD dwOutputNum,
   5098         WINBOOL fAllocate);
   5099 
   5100     HRESULT (STDMETHODCALLTYPE *GetAllocateForOutput)(
   5101         IWMReaderAdvanced6* This,
   5102         DWORD dwOutputNum,
   5103         WINBOOL *pfAllocate);
   5104 
   5105     HRESULT (STDMETHODCALLTYPE *SetAllocateForStream)(
   5106         IWMReaderAdvanced6* This,
   5107         WORD wStreamNum,
   5108         WINBOOL fAllocate);
   5109 
   5110     HRESULT (STDMETHODCALLTYPE *GetAllocateForStream)(
   5111         IWMReaderAdvanced6* This,
   5112         WORD dwSreamNum,
   5113         WINBOOL *pfAllocate);
   5114 
   5115     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   5116         IWMReaderAdvanced6* This,
   5117         WM_READER_STATISTICS *pStatistics);
   5118 
   5119     HRESULT (STDMETHODCALLTYPE *SetClientInfo)(
   5120         IWMReaderAdvanced6* This,
   5121         WM_READER_CLIENTINFO *pClientInfo);
   5122 
   5123     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   5124         IWMReaderAdvanced6* This,
   5125         DWORD dwOutput,
   5126         DWORD *pcbMax);
   5127 
   5128     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   5129         IWMReaderAdvanced6* This,
   5130         WORD wStream,
   5131         DWORD *pcbMax);
   5132 
   5133     HRESULT (STDMETHODCALLTYPE *NotifyLateDelivery)(
   5134         IWMReaderAdvanced6* This,
   5135         QWORD cnsLateness);
   5136 
   5137     /*** IWMReaderAdvanced2 methods ***/
   5138     HRESULT (STDMETHODCALLTYPE *SetPlayMode)(
   5139         IWMReaderAdvanced6* This,
   5140         WMT_PLAY_MODE Mode);
   5141 
   5142     HRESULT (STDMETHODCALLTYPE *GetPlayMode)(
   5143         IWMReaderAdvanced6* This,
   5144         WMT_PLAY_MODE *pMode);
   5145 
   5146     HRESULT (STDMETHODCALLTYPE *GetBufferProgress)(
   5147         IWMReaderAdvanced6* This,
   5148         DWORD *pdwPercent,
   5149         QWORD *pcnsBuffering);
   5150 
   5151     HRESULT (STDMETHODCALLTYPE *GetDownloadProgress)(
   5152         IWMReaderAdvanced6* This,
   5153         DWORD *pdwPercent,
   5154         QWORD *pqwBytesDownloaded,
   5155         QWORD *pcnsDownload);
   5156 
   5157     HRESULT (STDMETHODCALLTYPE *GetSaveAsProgress)(
   5158         IWMReaderAdvanced6* This,
   5159         DWORD *pdwPercent);
   5160 
   5161     HRESULT (STDMETHODCALLTYPE *SaveFileAs)(
   5162         IWMReaderAdvanced6* This,
   5163         const WCHAR *pwszFilename);
   5164 
   5165     HRESULT (STDMETHODCALLTYPE *GetProtocolName)(
   5166         IWMReaderAdvanced6* This,
   5167         WCHAR *pwszProtocol,
   5168         DWORD *pcchProtocol);
   5169 
   5170     HRESULT (STDMETHODCALLTYPE *StartAtMarker)(
   5171         IWMReaderAdvanced6* This,
   5172         WORD wMarkerIndex,
   5173         QWORD cnsDuration,
   5174         float fRate,
   5175         void *pvContext);
   5176 
   5177     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   5178         IWMReaderAdvanced6* This,
   5179         DWORD dwOutputNum,
   5180         LPCWSTR pszName,
   5181         WMT_ATTR_DATATYPE *pType,
   5182         BYTE *pValue,
   5183         WORD *pcbLength);
   5184 
   5185     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   5186         IWMReaderAdvanced6* This,
   5187         DWORD dwOutputNum,
   5188         LPCWSTR pszName,
   5189         WMT_ATTR_DATATYPE Type,
   5190         const BYTE *pValue,
   5191         WORD cbLength);
   5192 
   5193     HRESULT (STDMETHODCALLTYPE *Preroll)(
   5194         IWMReaderAdvanced6* This,
   5195         QWORD cnsStart,
   5196         QWORD cnsDuration,
   5197         float fRate);
   5198 
   5199     HRESULT (STDMETHODCALLTYPE *SetLogClientID)(
   5200         IWMReaderAdvanced6* This,
   5201         WINBOOL fLogClientID);
   5202 
   5203     HRESULT (STDMETHODCALLTYPE *GetLogClientID)(
   5204         IWMReaderAdvanced6* This,
   5205         WINBOOL *pfLogClientID);
   5206 
   5207     HRESULT (STDMETHODCALLTYPE *StopBuffering)(
   5208         IWMReaderAdvanced6* This);
   5209 
   5210     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   5211         IWMReaderAdvanced6* This,
   5212         IStream *pStream,
   5213         IWMReaderCallback *pCallback,
   5214         void *pvContext);
   5215 
   5216     /*** IWMReaderAdvanced3 methods ***/
   5217     HRESULT (STDMETHODCALLTYPE *StopNetStreaming)(
   5218         IWMReaderAdvanced6* This);
   5219 
   5220     HRESULT (STDMETHODCALLTYPE *StartAtPosition)(
   5221         IWMReaderAdvanced6* This,
   5222         WORD wStreamNum,
   5223         void *pvOffsetStart,
   5224         void *pvDuration,
   5225         WMT_OFFSET_FORMAT dwOffsetFormat,
   5226         float fRate,
   5227         void *pvContext);
   5228 
   5229     /*** IWMReaderAdvanced4 methods ***/
   5230     HRESULT (STDMETHODCALLTYPE *GetLanguageCount)(
   5231         IWMReaderAdvanced6* This,
   5232         DWORD dwOutputNum,
   5233         WORD *pwLanguageCount);
   5234 
   5235     HRESULT (STDMETHODCALLTYPE *GetLanguage)(
   5236         IWMReaderAdvanced6* This,
   5237         DWORD dwOutputNum,
   5238         WORD wLanguage,
   5239         WCHAR *pwszLanguageString,
   5240         WORD *pcchLanguageStringLength);
   5241 
   5242     HRESULT (STDMETHODCALLTYPE *GetMaxSpeedFactor)(
   5243         IWMReaderAdvanced6* This,
   5244         double *pdblFactor);
   5245 
   5246     HRESULT (STDMETHODCALLTYPE *IsUsingFastCache)(
   5247         IWMReaderAdvanced6* This,
   5248         WINBOOL *pfUsingFastCache);
   5249 
   5250     HRESULT (STDMETHODCALLTYPE *AddLogParam)(
   5251         IWMReaderAdvanced6* This,
   5252         LPCWSTR wszNameSpace,
   5253         LPCWSTR wszName,
   5254         LPCWSTR wszValue);
   5255 
   5256     HRESULT (STDMETHODCALLTYPE *SendLogParams)(
   5257         IWMReaderAdvanced6* This);
   5258 
   5259     HRESULT (STDMETHODCALLTYPE *CanSaveFileAs)(
   5260         IWMReaderAdvanced6* This,
   5261         WINBOOL *pfCanSave);
   5262 
   5263     HRESULT (STDMETHODCALLTYPE *CancelSaveFileAs)(
   5264         IWMReaderAdvanced6* This);
   5265 
   5266     HRESULT (STDMETHODCALLTYPE *GetURL)(
   5267         IWMReaderAdvanced6* This,
   5268         WCHAR *pwszURL,
   5269         DWORD *pcchURL);
   5270 
   5271     /*** IWMReaderAdvanced5 methods ***/
   5272     HRESULT (STDMETHODCALLTYPE *SetPlayerHook)(
   5273         IWMReaderAdvanced6* This,
   5274         DWORD dwOutputNum,
   5275         IWMPlayerHook *pHook);
   5276 
   5277     /*** IWMReaderAdvanced6 methods ***/
   5278     HRESULT (STDMETHODCALLTYPE *SetProtectStreamSamples)(
   5279         IWMReaderAdvanced6* This,
   5280         BYTE *pbCertificate,
   5281         DWORD cbCertificate,
   5282         DWORD dwCertificateType,
   5283         DWORD dwFlags,
   5284         BYTE *pbInitializationVector,
   5285         DWORD *pcbInitializationVector);
   5286 
   5287     END_INTERFACE
   5288 } IWMReaderAdvanced6Vtbl;
   5289 interface IWMReaderAdvanced6 {
   5290     CONST_VTBL IWMReaderAdvanced6Vtbl* lpVtbl;
   5291 };
   5292 
   5293 #ifdef COBJMACROS
   5294 #ifndef WIDL_C_INLINE_WRAPPERS
   5295 /*** IUnknown methods ***/
   5296 #define IWMReaderAdvanced6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5297 #define IWMReaderAdvanced6_AddRef(This) (This)->lpVtbl->AddRef(This)
   5298 #define IWMReaderAdvanced6_Release(This) (This)->lpVtbl->Release(This)
   5299 /*** IWMReaderAdvanced methods ***/
   5300 #define IWMReaderAdvanced6_SetUserProvidedClock(This,fUserClock) (This)->lpVtbl->SetUserProvidedClock(This,fUserClock)
   5301 #define IWMReaderAdvanced6_GetUserProvidedClock(This,pfUserClock) (This)->lpVtbl->GetUserProvidedClock(This,pfUserClock)
   5302 #define IWMReaderAdvanced6_DeliverTime(This,cnsTime) (This)->lpVtbl->DeliverTime(This,cnsTime)
   5303 #define IWMReaderAdvanced6_SetManualStreamSelection(This,fSelection) (This)->lpVtbl->SetManualStreamSelection(This,fSelection)
   5304 #define IWMReaderAdvanced6_GetManualStreamSelection(This,pfSelection) (This)->lpVtbl->GetManualStreamSelection(This,pfSelection)
   5305 #define IWMReaderAdvanced6_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   5306 #define IWMReaderAdvanced6_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   5307 #define IWMReaderAdvanced6_SetReceiveSelectionCallbacks(This,fGetCallbacks) (This)->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks)
   5308 #define IWMReaderAdvanced6_GetReceiveSelectionCallbacks(This,pfGetCallbacks) (This)->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks)
   5309 #define IWMReaderAdvanced6_SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples) (This)->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples)
   5310 #define IWMReaderAdvanced6_GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples) (This)->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples)
   5311 #define IWMReaderAdvanced6_SetAllocateForOutput(This,dwOutputNum,fAllocate) (This)->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate)
   5312 #define IWMReaderAdvanced6_GetAllocateForOutput(This,dwOutputNum,pfAllocate) (This)->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate)
   5313 #define IWMReaderAdvanced6_SetAllocateForStream(This,wStreamNum,fAllocate) (This)->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate)
   5314 #define IWMReaderAdvanced6_GetAllocateForStream(This,dwSreamNum,pfAllocate) (This)->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate)
   5315 #define IWMReaderAdvanced6_GetStatistics(This,pStatistics) (This)->lpVtbl->GetStatistics(This,pStatistics)
   5316 #define IWMReaderAdvanced6_SetClientInfo(This,pClientInfo) (This)->lpVtbl->SetClientInfo(This,pClientInfo)
   5317 #define IWMReaderAdvanced6_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   5318 #define IWMReaderAdvanced6_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   5319 #define IWMReaderAdvanced6_NotifyLateDelivery(This,cnsLateness) (This)->lpVtbl->NotifyLateDelivery(This,cnsLateness)
   5320 /*** IWMReaderAdvanced2 methods ***/
   5321 #define IWMReaderAdvanced6_SetPlayMode(This,Mode) (This)->lpVtbl->SetPlayMode(This,Mode)
   5322 #define IWMReaderAdvanced6_GetPlayMode(This,pMode) (This)->lpVtbl->GetPlayMode(This,pMode)
   5323 #define IWMReaderAdvanced6_GetBufferProgress(This,pdwPercent,pcnsBuffering) (This)->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering)
   5324 #define IWMReaderAdvanced6_GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload) (This)->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload)
   5325 #define IWMReaderAdvanced6_GetSaveAsProgress(This,pdwPercent) (This)->lpVtbl->GetSaveAsProgress(This,pdwPercent)
   5326 #define IWMReaderAdvanced6_SaveFileAs(This,pwszFilename) (This)->lpVtbl->SaveFileAs(This,pwszFilename)
   5327 #define IWMReaderAdvanced6_GetProtocolName(This,pwszProtocol,pcchProtocol) (This)->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol)
   5328 #define IWMReaderAdvanced6_StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext) (This)->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext)
   5329 #define IWMReaderAdvanced6_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   5330 #define IWMReaderAdvanced6_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   5331 #define IWMReaderAdvanced6_Preroll(This,cnsStart,cnsDuration,fRate) (This)->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate)
   5332 #define IWMReaderAdvanced6_SetLogClientID(This,fLogClientID) (This)->lpVtbl->SetLogClientID(This,fLogClientID)
   5333 #define IWMReaderAdvanced6_GetLogClientID(This,pfLogClientID) (This)->lpVtbl->GetLogClientID(This,pfLogClientID)
   5334 #define IWMReaderAdvanced6_StopBuffering(This) (This)->lpVtbl->StopBuffering(This)
   5335 #define IWMReaderAdvanced6_OpenStream(This,pStream,pCallback,pvContext) (This)->lpVtbl->OpenStream(This,pStream,pCallback,pvContext)
   5336 /*** IWMReaderAdvanced3 methods ***/
   5337 #define IWMReaderAdvanced6_StopNetStreaming(This) (This)->lpVtbl->StopNetStreaming(This)
   5338 #define IWMReaderAdvanced6_StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext) (This)->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext)
   5339 /*** IWMReaderAdvanced4 methods ***/
   5340 #define IWMReaderAdvanced6_GetLanguageCount(This,dwOutputNum,pwLanguageCount) (This)->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount)
   5341 #define IWMReaderAdvanced6_GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength) (This)->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength)
   5342 #define IWMReaderAdvanced6_GetMaxSpeedFactor(This,pdblFactor) (This)->lpVtbl->GetMaxSpeedFactor(This,pdblFactor)
   5343 #define IWMReaderAdvanced6_IsUsingFastCache(This,pfUsingFastCache) (This)->lpVtbl->IsUsingFastCache(This,pfUsingFastCache)
   5344 #define IWMReaderAdvanced6_AddLogParam(This,wszNameSpace,wszName,wszValue) (This)->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue)
   5345 #define IWMReaderAdvanced6_SendLogParams(This) (This)->lpVtbl->SendLogParams(This)
   5346 #define IWMReaderAdvanced6_CanSaveFileAs(This,pfCanSave) (This)->lpVtbl->CanSaveFileAs(This,pfCanSave)
   5347 #define IWMReaderAdvanced6_CancelSaveFileAs(This) (This)->lpVtbl->CancelSaveFileAs(This)
   5348 #define IWMReaderAdvanced6_GetURL(This,pwszURL,pcchURL) (This)->lpVtbl->GetURL(This,pwszURL,pcchURL)
   5349 /*** IWMReaderAdvanced5 methods ***/
   5350 #define IWMReaderAdvanced6_SetPlayerHook(This,dwOutputNum,pHook) (This)->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook)
   5351 /*** IWMReaderAdvanced6 methods ***/
   5352 #define IWMReaderAdvanced6_SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector) (This)->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector)
   5353 #else
   5354 /*** IUnknown methods ***/
   5355 static FORCEINLINE HRESULT IWMReaderAdvanced6_QueryInterface(IWMReaderAdvanced6* This,REFIID riid,void **ppvObject) {
   5356     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5357 }
   5358 static FORCEINLINE ULONG IWMReaderAdvanced6_AddRef(IWMReaderAdvanced6* This) {
   5359     return This->lpVtbl->AddRef(This);
   5360 }
   5361 static FORCEINLINE ULONG IWMReaderAdvanced6_Release(IWMReaderAdvanced6* This) {
   5362     return This->lpVtbl->Release(This);
   5363 }
   5364 /*** IWMReaderAdvanced methods ***/
   5365 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL fUserClock) {
   5366     return This->lpVtbl->SetUserProvidedClock(This,fUserClock);
   5367 }
   5368 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetUserProvidedClock(IWMReaderAdvanced6* This,WINBOOL *pfUserClock) {
   5369     return This->lpVtbl->GetUserProvidedClock(This,pfUserClock);
   5370 }
   5371 static FORCEINLINE HRESULT IWMReaderAdvanced6_DeliverTime(IWMReaderAdvanced6* This,QWORD cnsTime) {
   5372     return This->lpVtbl->DeliverTime(This,cnsTime);
   5373 }
   5374 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL fSelection) {
   5375     return This->lpVtbl->SetManualStreamSelection(This,fSelection);
   5376 }
   5377 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetManualStreamSelection(IWMReaderAdvanced6* This,WINBOOL *pfSelection) {
   5378     return This->lpVtbl->GetManualStreamSelection(This,pfSelection);
   5379 }
   5380 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetStreamsSelected(IWMReaderAdvanced6* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   5381     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   5382 }
   5383 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStreamSelected(IWMReaderAdvanced6* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   5384     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   5385 }
   5386 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL fGetCallbacks) {
   5387     return This->lpVtbl->SetReceiveSelectionCallbacks(This,fGetCallbacks);
   5388 }
   5389 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveSelectionCallbacks(IWMReaderAdvanced6* This,WINBOOL *pfGetCallbacks) {
   5390     return This->lpVtbl->GetReceiveSelectionCallbacks(This,pfGetCallbacks);
   5391 }
   5392 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fReceiveStreamSamples) {
   5393     return This->lpVtbl->SetReceiveStreamSamples(This,wStreamNum,fReceiveStreamSamples);
   5394 }
   5395 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetReceiveStreamSamples(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL *pfReceiveStreamSamples) {
   5396     return This->lpVtbl->GetReceiveStreamSamples(This,wStreamNum,pfReceiveStreamSamples);
   5397 }
   5398 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL fAllocate) {
   5399     return This->lpVtbl->SetAllocateForOutput(This,dwOutputNum,fAllocate);
   5400 }
   5401 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForOutput(IWMReaderAdvanced6* This,DWORD dwOutputNum,WINBOOL *pfAllocate) {
   5402     return This->lpVtbl->GetAllocateForOutput(This,dwOutputNum,pfAllocate);
   5403 }
   5404 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetAllocateForStream(IWMReaderAdvanced6* This,WORD wStreamNum,WINBOOL fAllocate) {
   5405     return This->lpVtbl->SetAllocateForStream(This,wStreamNum,fAllocate);
   5406 }
   5407 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetAllocateForStream(IWMReaderAdvanced6* This,WORD dwSreamNum,WINBOOL *pfAllocate) {
   5408     return This->lpVtbl->GetAllocateForStream(This,dwSreamNum,pfAllocate);
   5409 }
   5410 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetStatistics(IWMReaderAdvanced6* This,WM_READER_STATISTICS *pStatistics) {
   5411     return This->lpVtbl->GetStatistics(This,pStatistics);
   5412 }
   5413 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetClientInfo(IWMReaderAdvanced6* This,WM_READER_CLIENTINFO *pClientInfo) {
   5414     return This->lpVtbl->SetClientInfo(This,pClientInfo);
   5415 }
   5416 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxOutputSampleSize(IWMReaderAdvanced6* This,DWORD dwOutput,DWORD *pcbMax) {
   5417     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   5418 }
   5419 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxStreamSampleSize(IWMReaderAdvanced6* This,WORD wStream,DWORD *pcbMax) {
   5420     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   5421 }
   5422 static FORCEINLINE HRESULT IWMReaderAdvanced6_NotifyLateDelivery(IWMReaderAdvanced6* This,QWORD cnsLateness) {
   5423     return This->lpVtbl->NotifyLateDelivery(This,cnsLateness);
   5424 }
   5425 /*** IWMReaderAdvanced2 methods ***/
   5426 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE Mode) {
   5427     return This->lpVtbl->SetPlayMode(This,Mode);
   5428 }
   5429 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetPlayMode(IWMReaderAdvanced6* This,WMT_PLAY_MODE *pMode) {
   5430     return This->lpVtbl->GetPlayMode(This,pMode);
   5431 }
   5432 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetBufferProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pcnsBuffering) {
   5433     return This->lpVtbl->GetBufferProgress(This,pdwPercent,pcnsBuffering);
   5434 }
   5435 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetDownloadProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent,QWORD *pqwBytesDownloaded,QWORD *pcnsDownload) {
   5436     return This->lpVtbl->GetDownloadProgress(This,pdwPercent,pqwBytesDownloaded,pcnsDownload);
   5437 }
   5438 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetSaveAsProgress(IWMReaderAdvanced6* This,DWORD *pdwPercent) {
   5439     return This->lpVtbl->GetSaveAsProgress(This,pdwPercent);
   5440 }
   5441 static FORCEINLINE HRESULT IWMReaderAdvanced6_SaveFileAs(IWMReaderAdvanced6* This,const WCHAR *pwszFilename) {
   5442     return This->lpVtbl->SaveFileAs(This,pwszFilename);
   5443 }
   5444 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetProtocolName(IWMReaderAdvanced6* This,WCHAR *pwszProtocol,DWORD *pcchProtocol) {
   5445     return This->lpVtbl->GetProtocolName(This,pwszProtocol,pcchProtocol);
   5446 }
   5447 static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtMarker(IWMReaderAdvanced6* This,WORD wMarkerIndex,QWORD cnsDuration,float fRate,void *pvContext) {
   5448     return This->lpVtbl->StartAtMarker(This,wMarkerIndex,cnsDuration,fRate,pvContext);
   5449 }
   5450 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   5451     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   5452 }
   5453 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetOutputSetting(IWMReaderAdvanced6* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   5454     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   5455 }
   5456 static FORCEINLINE HRESULT IWMReaderAdvanced6_Preroll(IWMReaderAdvanced6* This,QWORD cnsStart,QWORD cnsDuration,float fRate) {
   5457     return This->lpVtbl->Preroll(This,cnsStart,cnsDuration,fRate);
   5458 }
   5459 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetLogClientID(IWMReaderAdvanced6* This,WINBOOL fLogClientID) {
   5460     return This->lpVtbl->SetLogClientID(This,fLogClientID);
   5461 }
   5462 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLogClientID(IWMReaderAdvanced6* This,WINBOOL *pfLogClientID) {
   5463     return This->lpVtbl->GetLogClientID(This,pfLogClientID);
   5464 }
   5465 static FORCEINLINE HRESULT IWMReaderAdvanced6_StopBuffering(IWMReaderAdvanced6* This) {
   5466     return This->lpVtbl->StopBuffering(This);
   5467 }
   5468 static FORCEINLINE HRESULT IWMReaderAdvanced6_OpenStream(IWMReaderAdvanced6* This,IStream *pStream,IWMReaderCallback *pCallback,void *pvContext) {
   5469     return This->lpVtbl->OpenStream(This,pStream,pCallback,pvContext);
   5470 }
   5471 /*** IWMReaderAdvanced3 methods ***/
   5472 static FORCEINLINE HRESULT IWMReaderAdvanced6_StopNetStreaming(IWMReaderAdvanced6* This) {
   5473     return This->lpVtbl->StopNetStreaming(This);
   5474 }
   5475 static FORCEINLINE HRESULT IWMReaderAdvanced6_StartAtPosition(IWMReaderAdvanced6* This,WORD wStreamNum,void *pvOffsetStart,void *pvDuration,WMT_OFFSET_FORMAT dwOffsetFormat,float fRate,void *pvContext) {
   5476     return This->lpVtbl->StartAtPosition(This,wStreamNum,pvOffsetStart,pvDuration,dwOffsetFormat,fRate,pvContext);
   5477 }
   5478 /*** IWMReaderAdvanced4 methods ***/
   5479 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguageCount(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD *pwLanguageCount) {
   5480     return This->lpVtbl->GetLanguageCount(This,dwOutputNum,pwLanguageCount);
   5481 }
   5482 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetLanguage(IWMReaderAdvanced6* This,DWORD dwOutputNum,WORD wLanguage,WCHAR *pwszLanguageString,WORD *pcchLanguageStringLength) {
   5483     return This->lpVtbl->GetLanguage(This,dwOutputNum,wLanguage,pwszLanguageString,pcchLanguageStringLength);
   5484 }
   5485 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetMaxSpeedFactor(IWMReaderAdvanced6* This,double *pdblFactor) {
   5486     return This->lpVtbl->GetMaxSpeedFactor(This,pdblFactor);
   5487 }
   5488 static FORCEINLINE HRESULT IWMReaderAdvanced6_IsUsingFastCache(IWMReaderAdvanced6* This,WINBOOL *pfUsingFastCache) {
   5489     return This->lpVtbl->IsUsingFastCache(This,pfUsingFastCache);
   5490 }
   5491 static FORCEINLINE HRESULT IWMReaderAdvanced6_AddLogParam(IWMReaderAdvanced6* This,LPCWSTR wszNameSpace,LPCWSTR wszName,LPCWSTR wszValue) {
   5492     return This->lpVtbl->AddLogParam(This,wszNameSpace,wszName,wszValue);
   5493 }
   5494 static FORCEINLINE HRESULT IWMReaderAdvanced6_SendLogParams(IWMReaderAdvanced6* This) {
   5495     return This->lpVtbl->SendLogParams(This);
   5496 }
   5497 static FORCEINLINE HRESULT IWMReaderAdvanced6_CanSaveFileAs(IWMReaderAdvanced6* This,WINBOOL *pfCanSave) {
   5498     return This->lpVtbl->CanSaveFileAs(This,pfCanSave);
   5499 }
   5500 static FORCEINLINE HRESULT IWMReaderAdvanced6_CancelSaveFileAs(IWMReaderAdvanced6* This) {
   5501     return This->lpVtbl->CancelSaveFileAs(This);
   5502 }
   5503 static FORCEINLINE HRESULT IWMReaderAdvanced6_GetURL(IWMReaderAdvanced6* This,WCHAR *pwszURL,DWORD *pcchURL) {
   5504     return This->lpVtbl->GetURL(This,pwszURL,pcchURL);
   5505 }
   5506 /*** IWMReaderAdvanced5 methods ***/
   5507 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetPlayerHook(IWMReaderAdvanced6* This,DWORD dwOutputNum,IWMPlayerHook *pHook) {
   5508     return This->lpVtbl->SetPlayerHook(This,dwOutputNum,pHook);
   5509 }
   5510 /*** IWMReaderAdvanced6 methods ***/
   5511 static FORCEINLINE HRESULT IWMReaderAdvanced6_SetProtectStreamSamples(IWMReaderAdvanced6* This,BYTE *pbCertificate,DWORD cbCertificate,DWORD dwCertificateType,DWORD dwFlags,BYTE *pbInitializationVector,DWORD *pcbInitializationVector) {
   5512     return This->lpVtbl->SetProtectStreamSamples(This,pbCertificate,cbCertificate,dwCertificateType,dwFlags,pbInitializationVector,pcbInitializationVector);
   5513 }
   5514 #endif
   5515 #endif
   5516 
   5517 #endif
   5518 
   5519 HRESULT STDMETHODCALLTYPE IWMReaderAdvanced6_SetProtectStreamSamples_Proxy(
   5520     IWMReaderAdvanced6* This,
   5521     BYTE *pbCertificate,
   5522     DWORD cbCertificate,
   5523     DWORD dwCertificateType,
   5524     DWORD dwFlags,
   5525     BYTE *pbInitializationVector,
   5526     DWORD *pcbInitializationVector);
   5527 void __RPC_STUB IWMReaderAdvanced6_SetProtectStreamSamples_Stub(
   5528     IRpcStubBuffer* This,
   5529     IRpcChannelBuffer* pRpcChannelBuffer,
   5530     PRPC_MESSAGE pRpcMessage,
   5531     DWORD* pdwStubPhase);
   5532 
   5533 #endif  /* __IWMReaderAdvanced6_INTERFACE_DEFINED__ */
   5534 
   5535 /*****************************************************************************
   5536  * IWMSyncReader interface
   5537  */
   5538 #ifndef __IWMSyncReader_INTERFACE_DEFINED__
   5539 #define __IWMSyncReader_INTERFACE_DEFINED__
   5540 
   5541 DEFINE_GUID(IID_IWMSyncReader, 0x9397f121, 0x7705, 0x4dc9, 0xb0,0x49, 0x98,0xb6,0x98,0x18,0x84,0x14);
   5542 #if defined(__cplusplus) && !defined(CINTERFACE)
   5543 MIDL_INTERFACE("9397f121-7705-4dc9-b049-98b698188414")
   5544 IWMSyncReader : public IUnknown
   5545 {
   5546     virtual HRESULT STDMETHODCALLTYPE Open(
   5547         const WCHAR *pwszFilename) = 0;
   5548 
   5549     virtual HRESULT STDMETHODCALLTYPE Close(
   5550         ) = 0;
   5551 
   5552     virtual HRESULT STDMETHODCALLTYPE SetRange(
   5553         QWORD cnsStartTime,
   5554         LONGLONG cnsDuration) = 0;
   5555 
   5556     virtual HRESULT STDMETHODCALLTYPE SetRangeByFrame(
   5557         WORD wStreamNum,
   5558         QWORD qwFrameNumber,
   5559         LONGLONG cFramesToRead) = 0;
   5560 
   5561     virtual HRESULT STDMETHODCALLTYPE GetNextSample(
   5562         WORD wStreamNum,
   5563         INSSBuffer **ppSample,
   5564         QWORD *pcnsSampleTime,
   5565         QWORD *pcnsDuration,
   5566         DWORD *pdwFlags,
   5567         DWORD *pdwOutputNum,
   5568         WORD *pwStreamNum) = 0;
   5569 
   5570     virtual HRESULT STDMETHODCALLTYPE SetStreamsSelected(
   5571         WORD cStreamCount,
   5572         WORD *pwStreamNumbers,
   5573         WMT_STREAM_SELECTION *pSelections) = 0;
   5574 
   5575     virtual HRESULT STDMETHODCALLTYPE GetStreamSelected(
   5576         WORD wStreamNum,
   5577         WMT_STREAM_SELECTION *pSelection) = 0;
   5578 
   5579     virtual HRESULT STDMETHODCALLTYPE SetReadStreamSamples(
   5580         WORD wStreamNum,
   5581         WINBOOL fCompressed) = 0;
   5582 
   5583     virtual HRESULT STDMETHODCALLTYPE GetReadStreamSamples(
   5584         WORD wStreamNum,
   5585         WINBOOL *pfCompressed) = 0;
   5586 
   5587     virtual HRESULT STDMETHODCALLTYPE GetOutputSetting(
   5588         DWORD dwOutputNum,
   5589         LPCWSTR pszName,
   5590         WMT_ATTR_DATATYPE *pType,
   5591         BYTE *pValue,
   5592         WORD *pcbLength) = 0;
   5593 
   5594     virtual HRESULT STDMETHODCALLTYPE SetOutputSetting(
   5595         DWORD dwOutputNum,
   5596         LPCWSTR pszName,
   5597         WMT_ATTR_DATATYPE Type,
   5598         const BYTE *pValue,
   5599         WORD cbLength) = 0;
   5600 
   5601     virtual HRESULT STDMETHODCALLTYPE GetOutputCount(
   5602         DWORD *pcOutputs) = 0;
   5603 
   5604     virtual HRESULT STDMETHODCALLTYPE GetOutputProps(
   5605         DWORD dwOutputNum,
   5606         IWMOutputMediaProps **ppOutput) = 0;
   5607 
   5608     virtual HRESULT STDMETHODCALLTYPE SetOutputProps(
   5609         DWORD dwOutputNum,
   5610         IWMOutputMediaProps *pOutput) = 0;
   5611 
   5612     virtual HRESULT STDMETHODCALLTYPE GetOutputFormatCount(
   5613         DWORD dwOutputNum,
   5614         DWORD *pcFormats) = 0;
   5615 
   5616     virtual HRESULT STDMETHODCALLTYPE GetOutputFormat(
   5617         DWORD dwOutputNum,
   5618         DWORD dwFormatNum,
   5619         IWMOutputMediaProps **ppProps) = 0;
   5620 
   5621     virtual HRESULT STDMETHODCALLTYPE GetOutputNumberForStream(
   5622         WORD wStreamNum,
   5623         DWORD *pdwOutputNum) = 0;
   5624 
   5625     virtual HRESULT STDMETHODCALLTYPE GetStreamNumberForOutput(
   5626         DWORD dwOutputNum,
   5627         WORD *pwStreamNum) = 0;
   5628 
   5629     virtual HRESULT STDMETHODCALLTYPE GetMaxOutputSampleSize(
   5630         DWORD dwOutput,
   5631         DWORD *pcbMax) = 0;
   5632 
   5633     virtual HRESULT STDMETHODCALLTYPE GetMaxStreamSampleSize(
   5634         WORD wStream,
   5635         DWORD *pcbMax) = 0;
   5636 
   5637     virtual HRESULT STDMETHODCALLTYPE OpenStream(
   5638         IStream *pStream) = 0;
   5639 
   5640 };
   5641 #ifdef __CRT_UUID_DECL
   5642 __CRT_UUID_DECL(IWMSyncReader, 0x9397f121, 0x7705, 0x4dc9, 0xb0,0x49, 0x98,0xb6,0x98,0x18,0x84,0x14)
   5643 #endif
   5644 #else
   5645 typedef struct IWMSyncReaderVtbl {
   5646     BEGIN_INTERFACE
   5647 
   5648     /*** IUnknown methods ***/
   5649     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   5650         IWMSyncReader* This,
   5651         REFIID riid,
   5652         void **ppvObject);
   5653 
   5654     ULONG (STDMETHODCALLTYPE *AddRef)(
   5655         IWMSyncReader* This);
   5656 
   5657     ULONG (STDMETHODCALLTYPE *Release)(
   5658         IWMSyncReader* This);
   5659 
   5660     /*** IWMSyncReader methods ***/
   5661     HRESULT (STDMETHODCALLTYPE *Open)(
   5662         IWMSyncReader* This,
   5663         const WCHAR *pwszFilename);
   5664 
   5665     HRESULT (STDMETHODCALLTYPE *Close)(
   5666         IWMSyncReader* This);
   5667 
   5668     HRESULT (STDMETHODCALLTYPE *SetRange)(
   5669         IWMSyncReader* This,
   5670         QWORD cnsStartTime,
   5671         LONGLONG cnsDuration);
   5672 
   5673     HRESULT (STDMETHODCALLTYPE *SetRangeByFrame)(
   5674         IWMSyncReader* This,
   5675         WORD wStreamNum,
   5676         QWORD qwFrameNumber,
   5677         LONGLONG cFramesToRead);
   5678 
   5679     HRESULT (STDMETHODCALLTYPE *GetNextSample)(
   5680         IWMSyncReader* This,
   5681         WORD wStreamNum,
   5682         INSSBuffer **ppSample,
   5683         QWORD *pcnsSampleTime,
   5684         QWORD *pcnsDuration,
   5685         DWORD *pdwFlags,
   5686         DWORD *pdwOutputNum,
   5687         WORD *pwStreamNum);
   5688 
   5689     HRESULT (STDMETHODCALLTYPE *SetStreamsSelected)(
   5690         IWMSyncReader* This,
   5691         WORD cStreamCount,
   5692         WORD *pwStreamNumbers,
   5693         WMT_STREAM_SELECTION *pSelections);
   5694 
   5695     HRESULT (STDMETHODCALLTYPE *GetStreamSelected)(
   5696         IWMSyncReader* This,
   5697         WORD wStreamNum,
   5698         WMT_STREAM_SELECTION *pSelection);
   5699 
   5700     HRESULT (STDMETHODCALLTYPE *SetReadStreamSamples)(
   5701         IWMSyncReader* This,
   5702         WORD wStreamNum,
   5703         WINBOOL fCompressed);
   5704 
   5705     HRESULT (STDMETHODCALLTYPE *GetReadStreamSamples)(
   5706         IWMSyncReader* This,
   5707         WORD wStreamNum,
   5708         WINBOOL *pfCompressed);
   5709 
   5710     HRESULT (STDMETHODCALLTYPE *GetOutputSetting)(
   5711         IWMSyncReader* This,
   5712         DWORD dwOutputNum,
   5713         LPCWSTR pszName,
   5714         WMT_ATTR_DATATYPE *pType,
   5715         BYTE *pValue,
   5716         WORD *pcbLength);
   5717 
   5718     HRESULT (STDMETHODCALLTYPE *SetOutputSetting)(
   5719         IWMSyncReader* This,
   5720         DWORD dwOutputNum,
   5721         LPCWSTR pszName,
   5722         WMT_ATTR_DATATYPE Type,
   5723         const BYTE *pValue,
   5724         WORD cbLength);
   5725 
   5726     HRESULT (STDMETHODCALLTYPE *GetOutputCount)(
   5727         IWMSyncReader* This,
   5728         DWORD *pcOutputs);
   5729 
   5730     HRESULT (STDMETHODCALLTYPE *GetOutputProps)(
   5731         IWMSyncReader* This,
   5732         DWORD dwOutputNum,
   5733         IWMOutputMediaProps **ppOutput);
   5734 
   5735     HRESULT (STDMETHODCALLTYPE *SetOutputProps)(
   5736         IWMSyncReader* This,
   5737         DWORD dwOutputNum,
   5738         IWMOutputMediaProps *pOutput);
   5739 
   5740     HRESULT (STDMETHODCALLTYPE *GetOutputFormatCount)(
   5741         IWMSyncReader* This,
   5742         DWORD dwOutputNum,
   5743         DWORD *pcFormats);
   5744 
   5745     HRESULT (STDMETHODCALLTYPE *GetOutputFormat)(
   5746         IWMSyncReader* This,
   5747         DWORD dwOutputNum,
   5748         DWORD dwFormatNum,
   5749         IWMOutputMediaProps **ppProps);
   5750 
   5751     HRESULT (STDMETHODCALLTYPE *GetOutputNumberForStream)(
   5752         IWMSyncReader* This,
   5753         WORD wStreamNum,
   5754         DWORD *pdwOutputNum);
   5755 
   5756     HRESULT (STDMETHODCALLTYPE *GetStreamNumberForOutput)(
   5757         IWMSyncReader* This,
   5758         DWORD dwOutputNum,
   5759         WORD *pwStreamNum);
   5760 
   5761     HRESULT (STDMETHODCALLTYPE *GetMaxOutputSampleSize)(
   5762         IWMSyncReader* This,
   5763         DWORD dwOutput,
   5764         DWORD *pcbMax);
   5765 
   5766     HRESULT (STDMETHODCALLTYPE *GetMaxStreamSampleSize)(
   5767         IWMSyncReader* This,
   5768         WORD wStream,
   5769         DWORD *pcbMax);
   5770 
   5771     HRESULT (STDMETHODCALLTYPE *OpenStream)(
   5772         IWMSyncReader* This,
   5773         IStream *pStream);
   5774 
   5775     END_INTERFACE
   5776 } IWMSyncReaderVtbl;
   5777 interface IWMSyncReader {
   5778     CONST_VTBL IWMSyncReaderVtbl* lpVtbl;
   5779 };
   5780 
   5781 #ifdef COBJMACROS
   5782 #ifndef WIDL_C_INLINE_WRAPPERS
   5783 /*** IUnknown methods ***/
   5784 #define IWMSyncReader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   5785 #define IWMSyncReader_AddRef(This) (This)->lpVtbl->AddRef(This)
   5786 #define IWMSyncReader_Release(This) (This)->lpVtbl->Release(This)
   5787 /*** IWMSyncReader methods ***/
   5788 #define IWMSyncReader_Open(This,pwszFilename) (This)->lpVtbl->Open(This,pwszFilename)
   5789 #define IWMSyncReader_Close(This) (This)->lpVtbl->Close(This)
   5790 #define IWMSyncReader_SetRange(This,cnsStartTime,cnsDuration) (This)->lpVtbl->SetRange(This,cnsStartTime,cnsDuration)
   5791 #define IWMSyncReader_SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead) (This)->lpVtbl->SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead)
   5792 #define IWMSyncReader_GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum) (This)->lpVtbl->GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum)
   5793 #define IWMSyncReader_SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections) (This)->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections)
   5794 #define IWMSyncReader_GetStreamSelected(This,wStreamNum,pSelection) (This)->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection)
   5795 #define IWMSyncReader_SetReadStreamSamples(This,wStreamNum,fCompressed) (This)->lpVtbl->SetReadStreamSamples(This,wStreamNum,fCompressed)
   5796 #define IWMSyncReader_GetReadStreamSamples(This,wStreamNum,pfCompressed) (This)->lpVtbl->GetReadStreamSamples(This,wStreamNum,pfCompressed)
   5797 #define IWMSyncReader_GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength)
   5798 #define IWMSyncReader_SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength)
   5799 #define IWMSyncReader_GetOutputCount(This,pcOutputs) (This)->lpVtbl->GetOutputCount(This,pcOutputs)
   5800 #define IWMSyncReader_GetOutputProps(This,dwOutputNum,ppOutput) (This)->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput)
   5801 #define IWMSyncReader_SetOutputProps(This,dwOutputNum,pOutput) (This)->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput)
   5802 #define IWMSyncReader_GetOutputFormatCount(This,dwOutputNum,pcFormats) (This)->lpVtbl->GetOutputFormatCount(This,dwOutputNum,pcFormats)
   5803 #define IWMSyncReader_GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps) (This)->lpVtbl->GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps)
   5804 #define IWMSyncReader_GetOutputNumberForStream(This,wStreamNum,pdwOutputNum) (This)->lpVtbl->GetOutputNumberForStream(This,wStreamNum,pdwOutputNum)
   5805 #define IWMSyncReader_GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum) (This)->lpVtbl->GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum)
   5806 #define IWMSyncReader_GetMaxOutputSampleSize(This,dwOutput,pcbMax) (This)->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax)
   5807 #define IWMSyncReader_GetMaxStreamSampleSize(This,wStream,pcbMax) (This)->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax)
   5808 #define IWMSyncReader_OpenStream(This,pStream) (This)->lpVtbl->OpenStream(This,pStream)
   5809 #else
   5810 /*** IUnknown methods ***/
   5811 static FORCEINLINE HRESULT IWMSyncReader_QueryInterface(IWMSyncReader* This,REFIID riid,void **ppvObject) {
   5812     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   5813 }
   5814 static FORCEINLINE ULONG IWMSyncReader_AddRef(IWMSyncReader* This) {
   5815     return This->lpVtbl->AddRef(This);
   5816 }
   5817 static FORCEINLINE ULONG IWMSyncReader_Release(IWMSyncReader* This) {
   5818     return This->lpVtbl->Release(This);
   5819 }
   5820 /*** IWMSyncReader methods ***/
   5821 static FORCEINLINE HRESULT IWMSyncReader_Open(IWMSyncReader* This,const WCHAR *pwszFilename) {
   5822     return This->lpVtbl->Open(This,pwszFilename);
   5823 }
   5824 static FORCEINLINE HRESULT IWMSyncReader_Close(IWMSyncReader* This) {
   5825     return This->lpVtbl->Close(This);
   5826 }
   5827 static FORCEINLINE HRESULT IWMSyncReader_SetRange(IWMSyncReader* This,QWORD cnsStartTime,LONGLONG cnsDuration) {
   5828     return This->lpVtbl->SetRange(This,cnsStartTime,cnsDuration);
   5829 }
   5830 static FORCEINLINE HRESULT IWMSyncReader_SetRangeByFrame(IWMSyncReader* This,WORD wStreamNum,QWORD qwFrameNumber,LONGLONG cFramesToRead) {
   5831     return This->lpVtbl->SetRangeByFrame(This,wStreamNum,qwFrameNumber,cFramesToRead);
   5832 }
   5833 static FORCEINLINE HRESULT IWMSyncReader_GetNextSample(IWMSyncReader* This,WORD wStreamNum,INSSBuffer **ppSample,QWORD *pcnsSampleTime,QWORD *pcnsDuration,DWORD *pdwFlags,DWORD *pdwOutputNum,WORD *pwStreamNum) {
   5834     return This->lpVtbl->GetNextSample(This,wStreamNum,ppSample,pcnsSampleTime,pcnsDuration,pdwFlags,pdwOutputNum,pwStreamNum);
   5835 }
   5836 static FORCEINLINE HRESULT IWMSyncReader_SetStreamsSelected(IWMSyncReader* This,WORD cStreamCount,WORD *pwStreamNumbers,WMT_STREAM_SELECTION *pSelections) {
   5837     return This->lpVtbl->SetStreamsSelected(This,cStreamCount,pwStreamNumbers,pSelections);
   5838 }
   5839 static FORCEINLINE HRESULT IWMSyncReader_GetStreamSelected(IWMSyncReader* This,WORD wStreamNum,WMT_STREAM_SELECTION *pSelection) {
   5840     return This->lpVtbl->GetStreamSelected(This,wStreamNum,pSelection);
   5841 }
   5842 static FORCEINLINE HRESULT IWMSyncReader_SetReadStreamSamples(IWMSyncReader* This,WORD wStreamNum,WINBOOL fCompressed) {
   5843     return This->lpVtbl->SetReadStreamSamples(This,wStreamNum,fCompressed);
   5844 }
   5845 static FORCEINLINE HRESULT IWMSyncReader_GetReadStreamSamples(IWMSyncReader* This,WORD wStreamNum,WINBOOL *pfCompressed) {
   5846     return This->lpVtbl->GetReadStreamSamples(This,wStreamNum,pfCompressed);
   5847 }
   5848 static FORCEINLINE HRESULT IWMSyncReader_GetOutputSetting(IWMSyncReader* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   5849     return This->lpVtbl->GetOutputSetting(This,dwOutputNum,pszName,pType,pValue,pcbLength);
   5850 }
   5851 static FORCEINLINE HRESULT IWMSyncReader_SetOutputSetting(IWMSyncReader* This,DWORD dwOutputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   5852     return This->lpVtbl->SetOutputSetting(This,dwOutputNum,pszName,Type,pValue,cbLength);
   5853 }
   5854 static FORCEINLINE HRESULT IWMSyncReader_GetOutputCount(IWMSyncReader* This,DWORD *pcOutputs) {
   5855     return This->lpVtbl->GetOutputCount(This,pcOutputs);
   5856 }
   5857 static FORCEINLINE HRESULT IWMSyncReader_GetOutputProps(IWMSyncReader* This,DWORD dwOutputNum,IWMOutputMediaProps **ppOutput) {
   5858     return This->lpVtbl->GetOutputProps(This,dwOutputNum,ppOutput);
   5859 }
   5860 static FORCEINLINE HRESULT IWMSyncReader_SetOutputProps(IWMSyncReader* This,DWORD dwOutputNum,IWMOutputMediaProps *pOutput) {
   5861     return This->lpVtbl->SetOutputProps(This,dwOutputNum,pOutput);
   5862 }
   5863 static FORCEINLINE HRESULT IWMSyncReader_GetOutputFormatCount(IWMSyncReader* This,DWORD dwOutputNum,DWORD *pcFormats) {
   5864     return This->lpVtbl->GetOutputFormatCount(This,dwOutputNum,pcFormats);
   5865 }
   5866 static FORCEINLINE HRESULT IWMSyncReader_GetOutputFormat(IWMSyncReader* This,DWORD dwOutputNum,DWORD dwFormatNum,IWMOutputMediaProps **ppProps) {
   5867     return This->lpVtbl->GetOutputFormat(This,dwOutputNum,dwFormatNum,ppProps);
   5868 }
   5869 static FORCEINLINE HRESULT IWMSyncReader_GetOutputNumberForStream(IWMSyncReader* This,WORD wStreamNum,DWORD *pdwOutputNum) {
   5870     return This->lpVtbl->GetOutputNumberForStream(This,wStreamNum,pdwOutputNum);
   5871 }
   5872 static FORCEINLINE HRESULT IWMSyncReader_GetStreamNumberForOutput(IWMSyncReader* This,DWORD dwOutputNum,WORD *pwStreamNum) {
   5873     return This->lpVtbl->GetStreamNumberForOutput(This,dwOutputNum,pwStreamNum);
   5874 }
   5875 static FORCEINLINE HRESULT IWMSyncReader_GetMaxOutputSampleSize(IWMSyncReader* This,DWORD dwOutput,DWORD *pcbMax) {
   5876     return This->lpVtbl->GetMaxOutputSampleSize(This,dwOutput,pcbMax);
   5877 }
   5878 static FORCEINLINE HRESULT IWMSyncReader_GetMaxStreamSampleSize(IWMSyncReader* This,WORD wStream,DWORD *pcbMax) {
   5879     return This->lpVtbl->GetMaxStreamSampleSize(This,wStream,pcbMax);
   5880 }
   5881 static FORCEINLINE HRESULT IWMSyncReader_OpenStream(IWMSyncReader* This,IStream *pStream) {
   5882     return This->lpVtbl->OpenStream(This,pStream);
   5883 }
   5884 #endif
   5885 #endif
   5886 
   5887 #endif
   5888 
   5889 HRESULT STDMETHODCALLTYPE IWMSyncReader_Open_Proxy(
   5890     IWMSyncReader* This,
   5891     const WCHAR *pwszFilename);
   5892 void __RPC_STUB IWMSyncReader_Open_Stub(
   5893     IRpcStubBuffer* This,
   5894     IRpcChannelBuffer* pRpcChannelBuffer,
   5895     PRPC_MESSAGE pRpcMessage,
   5896     DWORD* pdwStubPhase);
   5897 HRESULT STDMETHODCALLTYPE IWMSyncReader_Close_Proxy(
   5898     IWMSyncReader* This);
   5899 void __RPC_STUB IWMSyncReader_Close_Stub(
   5900     IRpcStubBuffer* This,
   5901     IRpcChannelBuffer* pRpcChannelBuffer,
   5902     PRPC_MESSAGE pRpcMessage,
   5903     DWORD* pdwStubPhase);
   5904 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetRange_Proxy(
   5905     IWMSyncReader* This,
   5906     QWORD cnsStartTime,
   5907     LONGLONG cnsDuration);
   5908 void __RPC_STUB IWMSyncReader_SetRange_Stub(
   5909     IRpcStubBuffer* This,
   5910     IRpcChannelBuffer* pRpcChannelBuffer,
   5911     PRPC_MESSAGE pRpcMessage,
   5912     DWORD* pdwStubPhase);
   5913 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetRangeByFrame_Proxy(
   5914     IWMSyncReader* This,
   5915     WORD wStreamNum,
   5916     QWORD qwFrameNumber,
   5917     LONGLONG cFramesToRead);
   5918 void __RPC_STUB IWMSyncReader_SetRangeByFrame_Stub(
   5919     IRpcStubBuffer* This,
   5920     IRpcChannelBuffer* pRpcChannelBuffer,
   5921     PRPC_MESSAGE pRpcMessage,
   5922     DWORD* pdwStubPhase);
   5923 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetNextSample_Proxy(
   5924     IWMSyncReader* This,
   5925     WORD wStreamNum,
   5926     INSSBuffer **ppSample,
   5927     QWORD *pcnsSampleTime,
   5928     QWORD *pcnsDuration,
   5929     DWORD *pdwFlags,
   5930     DWORD *pdwOutputNum,
   5931     WORD *pwStreamNum);
   5932 void __RPC_STUB IWMSyncReader_GetNextSample_Stub(
   5933     IRpcStubBuffer* This,
   5934     IRpcChannelBuffer* pRpcChannelBuffer,
   5935     PRPC_MESSAGE pRpcMessage,
   5936     DWORD* pdwStubPhase);
   5937 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetStreamsSelected_Proxy(
   5938     IWMSyncReader* This,
   5939     WORD cStreamCount,
   5940     WORD *pwStreamNumbers,
   5941     WMT_STREAM_SELECTION *pSelections);
   5942 void __RPC_STUB IWMSyncReader_SetStreamsSelected_Stub(
   5943     IRpcStubBuffer* This,
   5944     IRpcChannelBuffer* pRpcChannelBuffer,
   5945     PRPC_MESSAGE pRpcMessage,
   5946     DWORD* pdwStubPhase);
   5947 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetStreamSelected_Proxy(
   5948     IWMSyncReader* This,
   5949     WORD wStreamNum,
   5950     WMT_STREAM_SELECTION *pSelection);
   5951 void __RPC_STUB IWMSyncReader_GetStreamSelected_Stub(
   5952     IRpcStubBuffer* This,
   5953     IRpcChannelBuffer* pRpcChannelBuffer,
   5954     PRPC_MESSAGE pRpcMessage,
   5955     DWORD* pdwStubPhase);
   5956 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetReadStreamSamples_Proxy(
   5957     IWMSyncReader* This,
   5958     WORD wStreamNum,
   5959     WINBOOL fCompressed);
   5960 void __RPC_STUB IWMSyncReader_SetReadStreamSamples_Stub(
   5961     IRpcStubBuffer* This,
   5962     IRpcChannelBuffer* pRpcChannelBuffer,
   5963     PRPC_MESSAGE pRpcMessage,
   5964     DWORD* pdwStubPhase);
   5965 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetReadStreamSamples_Proxy(
   5966     IWMSyncReader* This,
   5967     WORD wStreamNum,
   5968     WINBOOL *pfCompressed);
   5969 void __RPC_STUB IWMSyncReader_GetReadStreamSamples_Stub(
   5970     IRpcStubBuffer* This,
   5971     IRpcChannelBuffer* pRpcChannelBuffer,
   5972     PRPC_MESSAGE pRpcMessage,
   5973     DWORD* pdwStubPhase);
   5974 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputSetting_Proxy(
   5975     IWMSyncReader* This,
   5976     DWORD dwOutputNum,
   5977     LPCWSTR pszName,
   5978     WMT_ATTR_DATATYPE *pType,
   5979     BYTE *pValue,
   5980     WORD *pcbLength);
   5981 void __RPC_STUB IWMSyncReader_GetOutputSetting_Stub(
   5982     IRpcStubBuffer* This,
   5983     IRpcChannelBuffer* pRpcChannelBuffer,
   5984     PRPC_MESSAGE pRpcMessage,
   5985     DWORD* pdwStubPhase);
   5986 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetOutputSetting_Proxy(
   5987     IWMSyncReader* This,
   5988     DWORD dwOutputNum,
   5989     LPCWSTR pszName,
   5990     WMT_ATTR_DATATYPE Type,
   5991     const BYTE *pValue,
   5992     WORD cbLength);
   5993 void __RPC_STUB IWMSyncReader_SetOutputSetting_Stub(
   5994     IRpcStubBuffer* This,
   5995     IRpcChannelBuffer* pRpcChannelBuffer,
   5996     PRPC_MESSAGE pRpcMessage,
   5997     DWORD* pdwStubPhase);
   5998 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputCount_Proxy(
   5999     IWMSyncReader* This,
   6000     DWORD *pcOutputs);
   6001 void __RPC_STUB IWMSyncReader_GetOutputCount_Stub(
   6002     IRpcStubBuffer* This,
   6003     IRpcChannelBuffer* pRpcChannelBuffer,
   6004     PRPC_MESSAGE pRpcMessage,
   6005     DWORD* pdwStubPhase);
   6006 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputProps_Proxy(
   6007     IWMSyncReader* This,
   6008     DWORD dwOutputNum,
   6009     IWMOutputMediaProps **ppOutput);
   6010 void __RPC_STUB IWMSyncReader_GetOutputProps_Stub(
   6011     IRpcStubBuffer* This,
   6012     IRpcChannelBuffer* pRpcChannelBuffer,
   6013     PRPC_MESSAGE pRpcMessage,
   6014     DWORD* pdwStubPhase);
   6015 HRESULT STDMETHODCALLTYPE IWMSyncReader_SetOutputProps_Proxy(
   6016     IWMSyncReader* This,
   6017     DWORD dwOutputNum,
   6018     IWMOutputMediaProps *pOutput);
   6019 void __RPC_STUB IWMSyncReader_SetOutputProps_Stub(
   6020     IRpcStubBuffer* This,
   6021     IRpcChannelBuffer* pRpcChannelBuffer,
   6022     PRPC_MESSAGE pRpcMessage,
   6023     DWORD* pdwStubPhase);
   6024 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputFormatCount_Proxy(
   6025     IWMSyncReader* This,
   6026     DWORD dwOutputNum,
   6027     DWORD *pcFormats);
   6028 void __RPC_STUB IWMSyncReader_GetOutputFormatCount_Stub(
   6029     IRpcStubBuffer* This,
   6030     IRpcChannelBuffer* pRpcChannelBuffer,
   6031     PRPC_MESSAGE pRpcMessage,
   6032     DWORD* pdwStubPhase);
   6033 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputFormat_Proxy(
   6034     IWMSyncReader* This,
   6035     DWORD dwOutputNum,
   6036     DWORD dwFormatNum,
   6037     IWMOutputMediaProps **ppProps);
   6038 void __RPC_STUB IWMSyncReader_GetOutputFormat_Stub(
   6039     IRpcStubBuffer* This,
   6040     IRpcChannelBuffer* pRpcChannelBuffer,
   6041     PRPC_MESSAGE pRpcMessage,
   6042     DWORD* pdwStubPhase);
   6043 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetOutputNumberForStream_Proxy(
   6044     IWMSyncReader* This,
   6045     WORD wStreamNum,
   6046     DWORD *pdwOutputNum);
   6047 void __RPC_STUB IWMSyncReader_GetOutputNumberForStream_Stub(
   6048     IRpcStubBuffer* This,
   6049     IRpcChannelBuffer* pRpcChannelBuffer,
   6050     PRPC_MESSAGE pRpcMessage,
   6051     DWORD* pdwStubPhase);
   6052 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetStreamNumberForOutput_Proxy(
   6053     IWMSyncReader* This,
   6054     DWORD dwOutputNum,
   6055     WORD *pwStreamNum);
   6056 void __RPC_STUB IWMSyncReader_GetStreamNumberForOutput_Stub(
   6057     IRpcStubBuffer* This,
   6058     IRpcChannelBuffer* pRpcChannelBuffer,
   6059     PRPC_MESSAGE pRpcMessage,
   6060     DWORD* pdwStubPhase);
   6061 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetMaxOutputSampleSize_Proxy(
   6062     IWMSyncReader* This,
   6063     DWORD dwOutput,
   6064     DWORD *pcbMax);
   6065 void __RPC_STUB IWMSyncReader_GetMaxOutputSampleSize_Stub(
   6066     IRpcStubBuffer* This,
   6067     IRpcChannelBuffer* pRpcChannelBuffer,
   6068     PRPC_MESSAGE pRpcMessage,
   6069     DWORD* pdwStubPhase);
   6070 HRESULT STDMETHODCALLTYPE IWMSyncReader_GetMaxStreamSampleSize_Proxy(
   6071     IWMSyncReader* This,
   6072     WORD wStream,
   6073     DWORD *pcbMax);
   6074 void __RPC_STUB IWMSyncReader_GetMaxStreamSampleSize_Stub(
   6075     IRpcStubBuffer* This,
   6076     IRpcChannelBuffer* pRpcChannelBuffer,
   6077     PRPC_MESSAGE pRpcMessage,
   6078     DWORD* pdwStubPhase);
   6079 HRESULT STDMETHODCALLTYPE IWMSyncReader_OpenStream_Proxy(
   6080     IWMSyncReader* This,
   6081     IStream *pStream);
   6082 void __RPC_STUB IWMSyncReader_OpenStream_Stub(
   6083     IRpcStubBuffer* This,
   6084     IRpcChannelBuffer* pRpcChannelBuffer,
   6085     PRPC_MESSAGE pRpcMessage,
   6086     DWORD* pdwStubPhase);
   6087 
   6088 #endif  /* __IWMSyncReader_INTERFACE_DEFINED__ */
   6089 
   6090 /*****************************************************************************
   6091  * IWMInputMediaProps interface
   6092  */
   6093 #ifndef __IWMInputMediaProps_INTERFACE_DEFINED__
   6094 #define __IWMInputMediaProps_INTERFACE_DEFINED__
   6095 
   6096 DEFINE_GUID(IID_IWMInputMediaProps, 0x96406bd5, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   6097 #if defined(__cplusplus) && !defined(CINTERFACE)
   6098 MIDL_INTERFACE("96406bd5-2b2b-11d3-b36b-00c04f6108ff")
   6099 IWMInputMediaProps : public IWMMediaProps
   6100 {
   6101     virtual HRESULT STDMETHODCALLTYPE GetConnectionName(
   6102         WCHAR *pwszName,
   6103         WORD *pcchName) = 0;
   6104 
   6105     virtual HRESULT STDMETHODCALLTYPE GetGroupName(
   6106         WCHAR *pwszName,
   6107         WORD *pcchName) = 0;
   6108 
   6109 };
   6110 #ifdef __CRT_UUID_DECL
   6111 __CRT_UUID_DECL(IWMInputMediaProps, 0x96406bd5, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   6112 #endif
   6113 #else
   6114 typedef struct IWMInputMediaPropsVtbl {
   6115     BEGIN_INTERFACE
   6116 
   6117     /*** IUnknown methods ***/
   6118     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6119         IWMInputMediaProps* This,
   6120         REFIID riid,
   6121         void **ppvObject);
   6122 
   6123     ULONG (STDMETHODCALLTYPE *AddRef)(
   6124         IWMInputMediaProps* This);
   6125 
   6126     ULONG (STDMETHODCALLTYPE *Release)(
   6127         IWMInputMediaProps* This);
   6128 
   6129     /*** IWMMediaProps methods ***/
   6130     HRESULT (STDMETHODCALLTYPE *GetType)(
   6131         IWMInputMediaProps* This,
   6132         GUID *pguidType);
   6133 
   6134     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
   6135         IWMInputMediaProps* This,
   6136         WM_MEDIA_TYPE *pType,
   6137         DWORD *pcbType);
   6138 
   6139     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
   6140         IWMInputMediaProps* This,
   6141         WM_MEDIA_TYPE *pType);
   6142 
   6143     /*** IWMInputMediaProps methods ***/
   6144     HRESULT (STDMETHODCALLTYPE *GetConnectionName)(
   6145         IWMInputMediaProps* This,
   6146         WCHAR *pwszName,
   6147         WORD *pcchName);
   6148 
   6149     HRESULT (STDMETHODCALLTYPE *GetGroupName)(
   6150         IWMInputMediaProps* This,
   6151         WCHAR *pwszName,
   6152         WORD *pcchName);
   6153 
   6154     END_INTERFACE
   6155 } IWMInputMediaPropsVtbl;
   6156 interface IWMInputMediaProps {
   6157     CONST_VTBL IWMInputMediaPropsVtbl* lpVtbl;
   6158 };
   6159 
   6160 #ifdef COBJMACROS
   6161 #ifndef WIDL_C_INLINE_WRAPPERS
   6162 /*** IUnknown methods ***/
   6163 #define IWMInputMediaProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6164 #define IWMInputMediaProps_AddRef(This) (This)->lpVtbl->AddRef(This)
   6165 #define IWMInputMediaProps_Release(This) (This)->lpVtbl->Release(This)
   6166 /*** IWMMediaProps methods ***/
   6167 #define IWMInputMediaProps_GetType(This,pguidType) (This)->lpVtbl->GetType(This,pguidType)
   6168 #define IWMInputMediaProps_GetMediaType(This,pType,pcbType) (This)->lpVtbl->GetMediaType(This,pType,pcbType)
   6169 #define IWMInputMediaProps_SetMediaType(This,pType) (This)->lpVtbl->SetMediaType(This,pType)
   6170 /*** IWMInputMediaProps methods ***/
   6171 #define IWMInputMediaProps_GetConnectionName(This,pwszName,pcchName) (This)->lpVtbl->GetConnectionName(This,pwszName,pcchName)
   6172 #define IWMInputMediaProps_GetGroupName(This,pwszName,pcchName) (This)->lpVtbl->GetGroupName(This,pwszName,pcchName)
   6173 #else
   6174 /*** IUnknown methods ***/
   6175 static FORCEINLINE HRESULT IWMInputMediaProps_QueryInterface(IWMInputMediaProps* This,REFIID riid,void **ppvObject) {
   6176     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6177 }
   6178 static FORCEINLINE ULONG IWMInputMediaProps_AddRef(IWMInputMediaProps* This) {
   6179     return This->lpVtbl->AddRef(This);
   6180 }
   6181 static FORCEINLINE ULONG IWMInputMediaProps_Release(IWMInputMediaProps* This) {
   6182     return This->lpVtbl->Release(This);
   6183 }
   6184 /*** IWMMediaProps methods ***/
   6185 static FORCEINLINE HRESULT IWMInputMediaProps_GetType(IWMInputMediaProps* This,GUID *pguidType) {
   6186     return This->lpVtbl->GetType(This,pguidType);
   6187 }
   6188 static FORCEINLINE HRESULT IWMInputMediaProps_GetMediaType(IWMInputMediaProps* This,WM_MEDIA_TYPE *pType,DWORD *pcbType) {
   6189     return This->lpVtbl->GetMediaType(This,pType,pcbType);
   6190 }
   6191 static FORCEINLINE HRESULT IWMInputMediaProps_SetMediaType(IWMInputMediaProps* This,WM_MEDIA_TYPE *pType) {
   6192     return This->lpVtbl->SetMediaType(This,pType);
   6193 }
   6194 /*** IWMInputMediaProps methods ***/
   6195 static FORCEINLINE HRESULT IWMInputMediaProps_GetConnectionName(IWMInputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
   6196     return This->lpVtbl->GetConnectionName(This,pwszName,pcchName);
   6197 }
   6198 static FORCEINLINE HRESULT IWMInputMediaProps_GetGroupName(IWMInputMediaProps* This,WCHAR *pwszName,WORD *pcchName) {
   6199     return This->lpVtbl->GetGroupName(This,pwszName,pcchName);
   6200 }
   6201 #endif
   6202 #endif
   6203 
   6204 #endif
   6205 
   6206 HRESULT STDMETHODCALLTYPE IWMInputMediaProps_GetConnectionName_Proxy(
   6207     IWMInputMediaProps* This,
   6208     WCHAR *pwszName,
   6209     WORD *pcchName);
   6210 void __RPC_STUB IWMInputMediaProps_GetConnectionName_Stub(
   6211     IRpcStubBuffer* This,
   6212     IRpcChannelBuffer* pRpcChannelBuffer,
   6213     PRPC_MESSAGE pRpcMessage,
   6214     DWORD* pdwStubPhase);
   6215 HRESULT STDMETHODCALLTYPE IWMInputMediaProps_GetGroupName_Proxy(
   6216     IWMInputMediaProps* This,
   6217     WCHAR *pwszName,
   6218     WORD *pcchName);
   6219 void __RPC_STUB IWMInputMediaProps_GetGroupName_Stub(
   6220     IRpcStubBuffer* This,
   6221     IRpcChannelBuffer* pRpcChannelBuffer,
   6222     PRPC_MESSAGE pRpcMessage,
   6223     DWORD* pdwStubPhase);
   6224 
   6225 #endif  /* __IWMInputMediaProps_INTERFACE_DEFINED__ */
   6226 
   6227 /*****************************************************************************
   6228  * IWMWriterSink interface
   6229  */
   6230 #ifndef __IWMWriterSink_INTERFACE_DEFINED__
   6231 #define __IWMWriterSink_INTERFACE_DEFINED__
   6232 
   6233 DEFINE_GUID(IID_IWMWriterSink, 0x96406be4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   6234 #if defined(__cplusplus) && !defined(CINTERFACE)
   6235 MIDL_INTERFACE("96406be4-2b2b-11d3-b36b-00c04f6108ff")
   6236 IWMWriterSink : public IUnknown
   6237 {
   6238     virtual HRESULT STDMETHODCALLTYPE OnHeader(
   6239         INSSBuffer *pHeader) = 0;
   6240 
   6241     virtual HRESULT STDMETHODCALLTYPE IsRealTime(
   6242         WINBOOL *pfRealTime) = 0;
   6243 
   6244     virtual HRESULT STDMETHODCALLTYPE AllocateDataUnit(
   6245         DWORD cbDataUnit,
   6246         INSSBuffer **ppDataUnit) = 0;
   6247 
   6248     virtual HRESULT STDMETHODCALLTYPE OnDataUnit(
   6249         INSSBuffer *pDataUnit) = 0;
   6250 
   6251     virtual HRESULT STDMETHODCALLTYPE OnEndWriting(
   6252         ) = 0;
   6253 
   6254 };
   6255 #ifdef __CRT_UUID_DECL
   6256 __CRT_UUID_DECL(IWMWriterSink, 0x96406be4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   6257 #endif
   6258 #else
   6259 typedef struct IWMWriterSinkVtbl {
   6260     BEGIN_INTERFACE
   6261 
   6262     /*** IUnknown methods ***/
   6263     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6264         IWMWriterSink* This,
   6265         REFIID riid,
   6266         void **ppvObject);
   6267 
   6268     ULONG (STDMETHODCALLTYPE *AddRef)(
   6269         IWMWriterSink* This);
   6270 
   6271     ULONG (STDMETHODCALLTYPE *Release)(
   6272         IWMWriterSink* This);
   6273 
   6274     /*** IWMWriterSink methods ***/
   6275     HRESULT (STDMETHODCALLTYPE *OnHeader)(
   6276         IWMWriterSink* This,
   6277         INSSBuffer *pHeader);
   6278 
   6279     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
   6280         IWMWriterSink* This,
   6281         WINBOOL *pfRealTime);
   6282 
   6283     HRESULT (STDMETHODCALLTYPE *AllocateDataUnit)(
   6284         IWMWriterSink* This,
   6285         DWORD cbDataUnit,
   6286         INSSBuffer **ppDataUnit);
   6287 
   6288     HRESULT (STDMETHODCALLTYPE *OnDataUnit)(
   6289         IWMWriterSink* This,
   6290         INSSBuffer *pDataUnit);
   6291 
   6292     HRESULT (STDMETHODCALLTYPE *OnEndWriting)(
   6293         IWMWriterSink* This);
   6294 
   6295     END_INTERFACE
   6296 } IWMWriterSinkVtbl;
   6297 interface IWMWriterSink {
   6298     CONST_VTBL IWMWriterSinkVtbl* lpVtbl;
   6299 };
   6300 
   6301 #ifdef COBJMACROS
   6302 #ifndef WIDL_C_INLINE_WRAPPERS
   6303 /*** IUnknown methods ***/
   6304 #define IWMWriterSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6305 #define IWMWriterSink_AddRef(This) (This)->lpVtbl->AddRef(This)
   6306 #define IWMWriterSink_Release(This) (This)->lpVtbl->Release(This)
   6307 /*** IWMWriterSink methods ***/
   6308 #define IWMWriterSink_OnHeader(This,pHeader) (This)->lpVtbl->OnHeader(This,pHeader)
   6309 #define IWMWriterSink_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
   6310 #define IWMWriterSink_AllocateDataUnit(This,cbDataUnit,ppDataUnit) (This)->lpVtbl->AllocateDataUnit(This,cbDataUnit,ppDataUnit)
   6311 #define IWMWriterSink_OnDataUnit(This,pDataUnit) (This)->lpVtbl->OnDataUnit(This,pDataUnit)
   6312 #define IWMWriterSink_OnEndWriting(This) (This)->lpVtbl->OnEndWriting(This)
   6313 #else
   6314 /*** IUnknown methods ***/
   6315 static FORCEINLINE HRESULT IWMWriterSink_QueryInterface(IWMWriterSink* This,REFIID riid,void **ppvObject) {
   6316     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6317 }
   6318 static FORCEINLINE ULONG IWMWriterSink_AddRef(IWMWriterSink* This) {
   6319     return This->lpVtbl->AddRef(This);
   6320 }
   6321 static FORCEINLINE ULONG IWMWriterSink_Release(IWMWriterSink* This) {
   6322     return This->lpVtbl->Release(This);
   6323 }
   6324 /*** IWMWriterSink methods ***/
   6325 static FORCEINLINE HRESULT IWMWriterSink_OnHeader(IWMWriterSink* This,INSSBuffer *pHeader) {
   6326     return This->lpVtbl->OnHeader(This,pHeader);
   6327 }
   6328 static FORCEINLINE HRESULT IWMWriterSink_IsRealTime(IWMWriterSink* This,WINBOOL *pfRealTime) {
   6329     return This->lpVtbl->IsRealTime(This,pfRealTime);
   6330 }
   6331 static FORCEINLINE HRESULT IWMWriterSink_AllocateDataUnit(IWMWriterSink* This,DWORD cbDataUnit,INSSBuffer **ppDataUnit) {
   6332     return This->lpVtbl->AllocateDataUnit(This,cbDataUnit,ppDataUnit);
   6333 }
   6334 static FORCEINLINE HRESULT IWMWriterSink_OnDataUnit(IWMWriterSink* This,INSSBuffer *pDataUnit) {
   6335     return This->lpVtbl->OnDataUnit(This,pDataUnit);
   6336 }
   6337 static FORCEINLINE HRESULT IWMWriterSink_OnEndWriting(IWMWriterSink* This) {
   6338     return This->lpVtbl->OnEndWriting(This);
   6339 }
   6340 #endif
   6341 #endif
   6342 
   6343 #endif
   6344 
   6345 HRESULT STDMETHODCALLTYPE IWMWriterSink_OnHeader_Proxy(
   6346     IWMWriterSink* This,
   6347     INSSBuffer *pHeader);
   6348 void __RPC_STUB IWMWriterSink_OnHeader_Stub(
   6349     IRpcStubBuffer* This,
   6350     IRpcChannelBuffer* pRpcChannelBuffer,
   6351     PRPC_MESSAGE pRpcMessage,
   6352     DWORD* pdwStubPhase);
   6353 HRESULT STDMETHODCALLTYPE IWMWriterSink_IsRealTime_Proxy(
   6354     IWMWriterSink* This,
   6355     WINBOOL *pfRealTime);
   6356 void __RPC_STUB IWMWriterSink_IsRealTime_Stub(
   6357     IRpcStubBuffer* This,
   6358     IRpcChannelBuffer* pRpcChannelBuffer,
   6359     PRPC_MESSAGE pRpcMessage,
   6360     DWORD* pdwStubPhase);
   6361 HRESULT STDMETHODCALLTYPE IWMWriterSink_AllocateDataUnit_Proxy(
   6362     IWMWriterSink* This,
   6363     DWORD cbDataUnit,
   6364     INSSBuffer **ppDataUnit);
   6365 void __RPC_STUB IWMWriterSink_AllocateDataUnit_Stub(
   6366     IRpcStubBuffer* This,
   6367     IRpcChannelBuffer* pRpcChannelBuffer,
   6368     PRPC_MESSAGE pRpcMessage,
   6369     DWORD* pdwStubPhase);
   6370 HRESULT STDMETHODCALLTYPE IWMWriterSink_OnDataUnit_Proxy(
   6371     IWMWriterSink* This,
   6372     INSSBuffer *pDataUnit);
   6373 void __RPC_STUB IWMWriterSink_OnDataUnit_Stub(
   6374     IRpcStubBuffer* This,
   6375     IRpcChannelBuffer* pRpcChannelBuffer,
   6376     PRPC_MESSAGE pRpcMessage,
   6377     DWORD* pdwStubPhase);
   6378 HRESULT STDMETHODCALLTYPE IWMWriterSink_OnEndWriting_Proxy(
   6379     IWMWriterSink* This);
   6380 void __RPC_STUB IWMWriterSink_OnEndWriting_Stub(
   6381     IRpcStubBuffer* This,
   6382     IRpcChannelBuffer* pRpcChannelBuffer,
   6383     PRPC_MESSAGE pRpcMessage,
   6384     DWORD* pdwStubPhase);
   6385 
   6386 #endif  /* __IWMWriterSink_INTERFACE_DEFINED__ */
   6387 
   6388 /*****************************************************************************
   6389  * IWMWriter interface
   6390  */
   6391 #ifndef __IWMWriter_INTERFACE_DEFINED__
   6392 #define __IWMWriter_INTERFACE_DEFINED__
   6393 
   6394 DEFINE_GUID(IID_IWMWriter, 0x96406bd4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   6395 #if defined(__cplusplus) && !defined(CINTERFACE)
   6396 MIDL_INTERFACE("96406bd4-2b2b-11d3-b36b-00c04f6108ff")
   6397 IWMWriter : public IUnknown
   6398 {
   6399     virtual HRESULT STDMETHODCALLTYPE SetProfileByID(
   6400         REFGUID guidProfile) = 0;
   6401 
   6402     virtual HRESULT STDMETHODCALLTYPE SetProfile(
   6403         IWMProfile *pProfile) = 0;
   6404 
   6405     virtual HRESULT STDMETHODCALLTYPE SetOutputFilename(
   6406         const WCHAR *pwszFilename) = 0;
   6407 
   6408     virtual HRESULT STDMETHODCALLTYPE GetInputCount(
   6409         DWORD *pcInputs) = 0;
   6410 
   6411     virtual HRESULT STDMETHODCALLTYPE GetInputProps(
   6412         DWORD dwInputNum,
   6413         IWMInputMediaProps **ppInput) = 0;
   6414 
   6415     virtual HRESULT STDMETHODCALLTYPE SetInputProps(
   6416         DWORD dwInputNum,
   6417         IWMInputMediaProps *pInput) = 0;
   6418 
   6419     virtual HRESULT STDMETHODCALLTYPE GetInputFormatCount(
   6420         DWORD dwInputNumber,
   6421         DWORD *pcFormats) = 0;
   6422 
   6423     virtual HRESULT STDMETHODCALLTYPE GetInputFormat(
   6424         DWORD dwInputNumber,
   6425         DWORD dwFormatNumber,
   6426         IWMInputMediaProps **pProps) = 0;
   6427 
   6428     virtual HRESULT STDMETHODCALLTYPE BeginWriting(
   6429         ) = 0;
   6430 
   6431     virtual HRESULT STDMETHODCALLTYPE EndWriting(
   6432         ) = 0;
   6433 
   6434     virtual HRESULT STDMETHODCALLTYPE AllocateSample(
   6435         DWORD dwSampleSize,
   6436         INSSBuffer **ppSample) = 0;
   6437 
   6438     virtual HRESULT STDMETHODCALLTYPE WriteSample(
   6439         DWORD dwInputNum,
   6440         QWORD cnsSampleTime,
   6441         DWORD dwFlags,
   6442         INSSBuffer *pSample) = 0;
   6443 
   6444     virtual HRESULT STDMETHODCALLTYPE Flush(
   6445         ) = 0;
   6446 
   6447 };
   6448 #ifdef __CRT_UUID_DECL
   6449 __CRT_UUID_DECL(IWMWriter, 0x96406bd4, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   6450 #endif
   6451 #else
   6452 typedef struct IWMWriterVtbl {
   6453     BEGIN_INTERFACE
   6454 
   6455     /*** IUnknown methods ***/
   6456     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6457         IWMWriter* This,
   6458         REFIID riid,
   6459         void **ppvObject);
   6460 
   6461     ULONG (STDMETHODCALLTYPE *AddRef)(
   6462         IWMWriter* This);
   6463 
   6464     ULONG (STDMETHODCALLTYPE *Release)(
   6465         IWMWriter* This);
   6466 
   6467     /*** IWMWriter methods ***/
   6468     HRESULT (STDMETHODCALLTYPE *SetProfileByID)(
   6469         IWMWriter* This,
   6470         REFGUID guidProfile);
   6471 
   6472     HRESULT (STDMETHODCALLTYPE *SetProfile)(
   6473         IWMWriter* This,
   6474         IWMProfile *pProfile);
   6475 
   6476     HRESULT (STDMETHODCALLTYPE *SetOutputFilename)(
   6477         IWMWriter* This,
   6478         const WCHAR *pwszFilename);
   6479 
   6480     HRESULT (STDMETHODCALLTYPE *GetInputCount)(
   6481         IWMWriter* This,
   6482         DWORD *pcInputs);
   6483 
   6484     HRESULT (STDMETHODCALLTYPE *GetInputProps)(
   6485         IWMWriter* This,
   6486         DWORD dwInputNum,
   6487         IWMInputMediaProps **ppInput);
   6488 
   6489     HRESULT (STDMETHODCALLTYPE *SetInputProps)(
   6490         IWMWriter* This,
   6491         DWORD dwInputNum,
   6492         IWMInputMediaProps *pInput);
   6493 
   6494     HRESULT (STDMETHODCALLTYPE *GetInputFormatCount)(
   6495         IWMWriter* This,
   6496         DWORD dwInputNumber,
   6497         DWORD *pcFormats);
   6498 
   6499     HRESULT (STDMETHODCALLTYPE *GetInputFormat)(
   6500         IWMWriter* This,
   6501         DWORD dwInputNumber,
   6502         DWORD dwFormatNumber,
   6503         IWMInputMediaProps **pProps);
   6504 
   6505     HRESULT (STDMETHODCALLTYPE *BeginWriting)(
   6506         IWMWriter* This);
   6507 
   6508     HRESULT (STDMETHODCALLTYPE *EndWriting)(
   6509         IWMWriter* This);
   6510 
   6511     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
   6512         IWMWriter* This,
   6513         DWORD dwSampleSize,
   6514         INSSBuffer **ppSample);
   6515 
   6516     HRESULT (STDMETHODCALLTYPE *WriteSample)(
   6517         IWMWriter* This,
   6518         DWORD dwInputNum,
   6519         QWORD cnsSampleTime,
   6520         DWORD dwFlags,
   6521         INSSBuffer *pSample);
   6522 
   6523     HRESULT (STDMETHODCALLTYPE *Flush)(
   6524         IWMWriter* This);
   6525 
   6526     END_INTERFACE
   6527 } IWMWriterVtbl;
   6528 interface IWMWriter {
   6529     CONST_VTBL IWMWriterVtbl* lpVtbl;
   6530 };
   6531 
   6532 #ifdef COBJMACROS
   6533 #ifndef WIDL_C_INLINE_WRAPPERS
   6534 /*** IUnknown methods ***/
   6535 #define IWMWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6536 #define IWMWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
   6537 #define IWMWriter_Release(This) (This)->lpVtbl->Release(This)
   6538 /*** IWMWriter methods ***/
   6539 #define IWMWriter_SetProfileByID(This,guidProfile) (This)->lpVtbl->SetProfileByID(This,guidProfile)
   6540 #define IWMWriter_SetProfile(This,pProfile) (This)->lpVtbl->SetProfile(This,pProfile)
   6541 #define IWMWriter_SetOutputFilename(This,pwszFilename) (This)->lpVtbl->SetOutputFilename(This,pwszFilename)
   6542 #define IWMWriter_GetInputCount(This,pcInputs) (This)->lpVtbl->GetInputCount(This,pcInputs)
   6543 #define IWMWriter_GetInputProps(This,dwInputNum,ppInput) (This)->lpVtbl->GetInputProps(This,dwInputNum,ppInput)
   6544 #define IWMWriter_SetInputProps(This,dwInputNum,pInput) (This)->lpVtbl->SetInputProps(This,dwInputNum,pInput)
   6545 #define IWMWriter_GetInputFormatCount(This,dwInputNumber,pcFormats) (This)->lpVtbl->GetInputFormatCount(This,dwInputNumber,pcFormats)
   6546 #define IWMWriter_GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps) (This)->lpVtbl->GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps)
   6547 #define IWMWriter_BeginWriting(This) (This)->lpVtbl->BeginWriting(This)
   6548 #define IWMWriter_EndWriting(This) (This)->lpVtbl->EndWriting(This)
   6549 #define IWMWriter_AllocateSample(This,dwSampleSize,ppSample) (This)->lpVtbl->AllocateSample(This,dwSampleSize,ppSample)
   6550 #define IWMWriter_WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample) (This)->lpVtbl->WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample)
   6551 #define IWMWriter_Flush(This) (This)->lpVtbl->Flush(This)
   6552 #else
   6553 /*** IUnknown methods ***/
   6554 static FORCEINLINE HRESULT IWMWriter_QueryInterface(IWMWriter* This,REFIID riid,void **ppvObject) {
   6555     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6556 }
   6557 static FORCEINLINE ULONG IWMWriter_AddRef(IWMWriter* This) {
   6558     return This->lpVtbl->AddRef(This);
   6559 }
   6560 static FORCEINLINE ULONG IWMWriter_Release(IWMWriter* This) {
   6561     return This->lpVtbl->Release(This);
   6562 }
   6563 /*** IWMWriter methods ***/
   6564 static FORCEINLINE HRESULT IWMWriter_SetProfileByID(IWMWriter* This,REFGUID guidProfile) {
   6565     return This->lpVtbl->SetProfileByID(This,guidProfile);
   6566 }
   6567 static FORCEINLINE HRESULT IWMWriter_SetProfile(IWMWriter* This,IWMProfile *pProfile) {
   6568     return This->lpVtbl->SetProfile(This,pProfile);
   6569 }
   6570 static FORCEINLINE HRESULT IWMWriter_SetOutputFilename(IWMWriter* This,const WCHAR *pwszFilename) {
   6571     return This->lpVtbl->SetOutputFilename(This,pwszFilename);
   6572 }
   6573 static FORCEINLINE HRESULT IWMWriter_GetInputCount(IWMWriter* This,DWORD *pcInputs) {
   6574     return This->lpVtbl->GetInputCount(This,pcInputs);
   6575 }
   6576 static FORCEINLINE HRESULT IWMWriter_GetInputProps(IWMWriter* This,DWORD dwInputNum,IWMInputMediaProps **ppInput) {
   6577     return This->lpVtbl->GetInputProps(This,dwInputNum,ppInput);
   6578 }
   6579 static FORCEINLINE HRESULT IWMWriter_SetInputProps(IWMWriter* This,DWORD dwInputNum,IWMInputMediaProps *pInput) {
   6580     return This->lpVtbl->SetInputProps(This,dwInputNum,pInput);
   6581 }
   6582 static FORCEINLINE HRESULT IWMWriter_GetInputFormatCount(IWMWriter* This,DWORD dwInputNumber,DWORD *pcFormats) {
   6583     return This->lpVtbl->GetInputFormatCount(This,dwInputNumber,pcFormats);
   6584 }
   6585 static FORCEINLINE HRESULT IWMWriter_GetInputFormat(IWMWriter* This,DWORD dwInputNumber,DWORD dwFormatNumber,IWMInputMediaProps **pProps) {
   6586     return This->lpVtbl->GetInputFormat(This,dwInputNumber,dwFormatNumber,pProps);
   6587 }
   6588 static FORCEINLINE HRESULT IWMWriter_BeginWriting(IWMWriter* This) {
   6589     return This->lpVtbl->BeginWriting(This);
   6590 }
   6591 static FORCEINLINE HRESULT IWMWriter_EndWriting(IWMWriter* This) {
   6592     return This->lpVtbl->EndWriting(This);
   6593 }
   6594 static FORCEINLINE HRESULT IWMWriter_AllocateSample(IWMWriter* This,DWORD dwSampleSize,INSSBuffer **ppSample) {
   6595     return This->lpVtbl->AllocateSample(This,dwSampleSize,ppSample);
   6596 }
   6597 static FORCEINLINE HRESULT IWMWriter_WriteSample(IWMWriter* This,DWORD dwInputNum,QWORD cnsSampleTime,DWORD dwFlags,INSSBuffer *pSample) {
   6598     return This->lpVtbl->WriteSample(This,dwInputNum,cnsSampleTime,dwFlags,pSample);
   6599 }
   6600 static FORCEINLINE HRESULT IWMWriter_Flush(IWMWriter* This) {
   6601     return This->lpVtbl->Flush(This);
   6602 }
   6603 #endif
   6604 #endif
   6605 
   6606 #endif
   6607 
   6608 HRESULT STDMETHODCALLTYPE IWMWriter_SetProfileByID_Proxy(
   6609     IWMWriter* This,
   6610     REFGUID guidProfile);
   6611 void __RPC_STUB IWMWriter_SetProfileByID_Stub(
   6612     IRpcStubBuffer* This,
   6613     IRpcChannelBuffer* pRpcChannelBuffer,
   6614     PRPC_MESSAGE pRpcMessage,
   6615     DWORD* pdwStubPhase);
   6616 HRESULT STDMETHODCALLTYPE IWMWriter_SetProfile_Proxy(
   6617     IWMWriter* This,
   6618     IWMProfile *pProfile);
   6619 void __RPC_STUB IWMWriter_SetProfile_Stub(
   6620     IRpcStubBuffer* This,
   6621     IRpcChannelBuffer* pRpcChannelBuffer,
   6622     PRPC_MESSAGE pRpcMessage,
   6623     DWORD* pdwStubPhase);
   6624 HRESULT STDMETHODCALLTYPE IWMWriter_SetOutputFilename_Proxy(
   6625     IWMWriter* This,
   6626     const WCHAR *pwszFilename);
   6627 void __RPC_STUB IWMWriter_SetOutputFilename_Stub(
   6628     IRpcStubBuffer* This,
   6629     IRpcChannelBuffer* pRpcChannelBuffer,
   6630     PRPC_MESSAGE pRpcMessage,
   6631     DWORD* pdwStubPhase);
   6632 HRESULT STDMETHODCALLTYPE IWMWriter_GetInputCount_Proxy(
   6633     IWMWriter* This,
   6634     DWORD *pcInputs);
   6635 void __RPC_STUB IWMWriter_GetInputCount_Stub(
   6636     IRpcStubBuffer* This,
   6637     IRpcChannelBuffer* pRpcChannelBuffer,
   6638     PRPC_MESSAGE pRpcMessage,
   6639     DWORD* pdwStubPhase);
   6640 HRESULT STDMETHODCALLTYPE IWMWriter_GetInputProps_Proxy(
   6641     IWMWriter* This,
   6642     DWORD dwInputNum,
   6643     IWMInputMediaProps **ppInput);
   6644 void __RPC_STUB IWMWriter_GetInputProps_Stub(
   6645     IRpcStubBuffer* This,
   6646     IRpcChannelBuffer* pRpcChannelBuffer,
   6647     PRPC_MESSAGE pRpcMessage,
   6648     DWORD* pdwStubPhase);
   6649 HRESULT STDMETHODCALLTYPE IWMWriter_SetInputProps_Proxy(
   6650     IWMWriter* This,
   6651     DWORD dwInputNum,
   6652     IWMInputMediaProps *pInput);
   6653 void __RPC_STUB IWMWriter_SetInputProps_Stub(
   6654     IRpcStubBuffer* This,
   6655     IRpcChannelBuffer* pRpcChannelBuffer,
   6656     PRPC_MESSAGE pRpcMessage,
   6657     DWORD* pdwStubPhase);
   6658 HRESULT STDMETHODCALLTYPE IWMWriter_GetInputFormatCount_Proxy(
   6659     IWMWriter* This,
   6660     DWORD dwInputNumber,
   6661     DWORD *pcFormats);
   6662 void __RPC_STUB IWMWriter_GetInputFormatCount_Stub(
   6663     IRpcStubBuffer* This,
   6664     IRpcChannelBuffer* pRpcChannelBuffer,
   6665     PRPC_MESSAGE pRpcMessage,
   6666     DWORD* pdwStubPhase);
   6667 HRESULT STDMETHODCALLTYPE IWMWriter_GetInputFormat_Proxy(
   6668     IWMWriter* This,
   6669     DWORD dwInputNumber,
   6670     DWORD dwFormatNumber,
   6671     IWMInputMediaProps **pProps);
   6672 void __RPC_STUB IWMWriter_GetInputFormat_Stub(
   6673     IRpcStubBuffer* This,
   6674     IRpcChannelBuffer* pRpcChannelBuffer,
   6675     PRPC_MESSAGE pRpcMessage,
   6676     DWORD* pdwStubPhase);
   6677 HRESULT STDMETHODCALLTYPE IWMWriter_BeginWriting_Proxy(
   6678     IWMWriter* This);
   6679 void __RPC_STUB IWMWriter_BeginWriting_Stub(
   6680     IRpcStubBuffer* This,
   6681     IRpcChannelBuffer* pRpcChannelBuffer,
   6682     PRPC_MESSAGE pRpcMessage,
   6683     DWORD* pdwStubPhase);
   6684 HRESULT STDMETHODCALLTYPE IWMWriter_EndWriting_Proxy(
   6685     IWMWriter* This);
   6686 void __RPC_STUB IWMWriter_EndWriting_Stub(
   6687     IRpcStubBuffer* This,
   6688     IRpcChannelBuffer* pRpcChannelBuffer,
   6689     PRPC_MESSAGE pRpcMessage,
   6690     DWORD* pdwStubPhase);
   6691 HRESULT STDMETHODCALLTYPE IWMWriter_AllocateSample_Proxy(
   6692     IWMWriter* This,
   6693     DWORD dwSampleSize,
   6694     INSSBuffer **ppSample);
   6695 void __RPC_STUB IWMWriter_AllocateSample_Stub(
   6696     IRpcStubBuffer* This,
   6697     IRpcChannelBuffer* pRpcChannelBuffer,
   6698     PRPC_MESSAGE pRpcMessage,
   6699     DWORD* pdwStubPhase);
   6700 HRESULT STDMETHODCALLTYPE IWMWriter_WriteSample_Proxy(
   6701     IWMWriter* This,
   6702     DWORD dwInputNum,
   6703     QWORD cnsSampleTime,
   6704     DWORD dwFlags,
   6705     INSSBuffer *pSample);
   6706 void __RPC_STUB IWMWriter_WriteSample_Stub(
   6707     IRpcStubBuffer* This,
   6708     IRpcChannelBuffer* pRpcChannelBuffer,
   6709     PRPC_MESSAGE pRpcMessage,
   6710     DWORD* pdwStubPhase);
   6711 HRESULT STDMETHODCALLTYPE IWMWriter_Flush_Proxy(
   6712     IWMWriter* This);
   6713 void __RPC_STUB IWMWriter_Flush_Stub(
   6714     IRpcStubBuffer* This,
   6715     IRpcChannelBuffer* pRpcChannelBuffer,
   6716     PRPC_MESSAGE pRpcMessage,
   6717     DWORD* pdwStubPhase);
   6718 
   6719 #endif  /* __IWMWriter_INTERFACE_DEFINED__ */
   6720 
   6721 /*****************************************************************************
   6722  * IWMWriterAdvanced interface
   6723  */
   6724 #ifndef __IWMWriterAdvanced_INTERFACE_DEFINED__
   6725 #define __IWMWriterAdvanced_INTERFACE_DEFINED__
   6726 
   6727 DEFINE_GUID(IID_IWMWriterAdvanced, 0x96406be3, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
   6728 #if defined(__cplusplus) && !defined(CINTERFACE)
   6729 MIDL_INTERFACE("96406be3-2b2b-11d3-b36b-00c04f6108ff")
   6730 IWMWriterAdvanced : public IUnknown
   6731 {
   6732     virtual HRESULT STDMETHODCALLTYPE GetSinkCount(
   6733         DWORD *pcSinks) = 0;
   6734 
   6735     virtual HRESULT STDMETHODCALLTYPE GetSink(
   6736         DWORD dwSinkNum,
   6737         IWMWriterSink **ppSink) = 0;
   6738 
   6739     virtual HRESULT STDMETHODCALLTYPE AddSink(
   6740         IWMWriterSink *pSink) = 0;
   6741 
   6742     virtual HRESULT STDMETHODCALLTYPE RemoveSink(
   6743         IWMWriterSink *pSink) = 0;
   6744 
   6745     virtual HRESULT STDMETHODCALLTYPE WriteStreamSample(
   6746         WORD wStreamNum,
   6747         QWORD cnsSampleTime,
   6748         DWORD msSampleSendTime,
   6749         QWORD cnsSampleDuration,
   6750         DWORD dwFlags,
   6751         INSSBuffer *pSample) = 0;
   6752 
   6753     virtual HRESULT STDMETHODCALLTYPE SetLiveSource(
   6754         WINBOOL fIsLiveSource) = 0;
   6755 
   6756     virtual HRESULT STDMETHODCALLTYPE IsRealTime(
   6757         WINBOOL *pfRealTime) = 0;
   6758 
   6759     virtual HRESULT STDMETHODCALLTYPE GetWriterTime(
   6760         QWORD *pCurrentTime) = 0;
   6761 
   6762     virtual HRESULT STDMETHODCALLTYPE GetStatistics(
   6763         WORD wStreamNum,
   6764         WM_WRITER_STATISTICS *pStats) = 0;
   6765 
   6766     virtual HRESULT STDMETHODCALLTYPE SetSyncTolerance(
   6767         DWORD msWindow) = 0;
   6768 
   6769     virtual HRESULT STDMETHODCALLTYPE GetSyncTolerance(
   6770         DWORD *pmsWindow) = 0;
   6771 
   6772 };
   6773 #ifdef __CRT_UUID_DECL
   6774 __CRT_UUID_DECL(IWMWriterAdvanced, 0x96406be3, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
   6775 #endif
   6776 #else
   6777 typedef struct IWMWriterAdvancedVtbl {
   6778     BEGIN_INTERFACE
   6779 
   6780     /*** IUnknown methods ***/
   6781     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   6782         IWMWriterAdvanced* This,
   6783         REFIID riid,
   6784         void **ppvObject);
   6785 
   6786     ULONG (STDMETHODCALLTYPE *AddRef)(
   6787         IWMWriterAdvanced* This);
   6788 
   6789     ULONG (STDMETHODCALLTYPE *Release)(
   6790         IWMWriterAdvanced* This);
   6791 
   6792     /*** IWMWriterAdvanced methods ***/
   6793     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
   6794         IWMWriterAdvanced* This,
   6795         DWORD *pcSinks);
   6796 
   6797     HRESULT (STDMETHODCALLTYPE *GetSink)(
   6798         IWMWriterAdvanced* This,
   6799         DWORD dwSinkNum,
   6800         IWMWriterSink **ppSink);
   6801 
   6802     HRESULT (STDMETHODCALLTYPE *AddSink)(
   6803         IWMWriterAdvanced* This,
   6804         IWMWriterSink *pSink);
   6805 
   6806     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
   6807         IWMWriterAdvanced* This,
   6808         IWMWriterSink *pSink);
   6809 
   6810     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
   6811         IWMWriterAdvanced* This,
   6812         WORD wStreamNum,
   6813         QWORD cnsSampleTime,
   6814         DWORD msSampleSendTime,
   6815         QWORD cnsSampleDuration,
   6816         DWORD dwFlags,
   6817         INSSBuffer *pSample);
   6818 
   6819     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
   6820         IWMWriterAdvanced* This,
   6821         WINBOOL fIsLiveSource);
   6822 
   6823     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
   6824         IWMWriterAdvanced* This,
   6825         WINBOOL *pfRealTime);
   6826 
   6827     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
   6828         IWMWriterAdvanced* This,
   6829         QWORD *pCurrentTime);
   6830 
   6831     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   6832         IWMWriterAdvanced* This,
   6833         WORD wStreamNum,
   6834         WM_WRITER_STATISTICS *pStats);
   6835 
   6836     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
   6837         IWMWriterAdvanced* This,
   6838         DWORD msWindow);
   6839 
   6840     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
   6841         IWMWriterAdvanced* This,
   6842         DWORD *pmsWindow);
   6843 
   6844     END_INTERFACE
   6845 } IWMWriterAdvancedVtbl;
   6846 interface IWMWriterAdvanced {
   6847     CONST_VTBL IWMWriterAdvancedVtbl* lpVtbl;
   6848 };
   6849 
   6850 #ifdef COBJMACROS
   6851 #ifndef WIDL_C_INLINE_WRAPPERS
   6852 /*** IUnknown methods ***/
   6853 #define IWMWriterAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   6854 #define IWMWriterAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
   6855 #define IWMWriterAdvanced_Release(This) (This)->lpVtbl->Release(This)
   6856 /*** IWMWriterAdvanced methods ***/
   6857 #define IWMWriterAdvanced_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
   6858 #define IWMWriterAdvanced_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
   6859 #define IWMWriterAdvanced_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
   6860 #define IWMWriterAdvanced_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
   6861 #define IWMWriterAdvanced_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
   6862 #define IWMWriterAdvanced_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
   6863 #define IWMWriterAdvanced_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
   6864 #define IWMWriterAdvanced_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
   6865 #define IWMWriterAdvanced_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
   6866 #define IWMWriterAdvanced_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
   6867 #define IWMWriterAdvanced_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
   6868 #else
   6869 /*** IUnknown methods ***/
   6870 static FORCEINLINE HRESULT IWMWriterAdvanced_QueryInterface(IWMWriterAdvanced* This,REFIID riid,void **ppvObject) {
   6871     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   6872 }
   6873 static FORCEINLINE ULONG IWMWriterAdvanced_AddRef(IWMWriterAdvanced* This) {
   6874     return This->lpVtbl->AddRef(This);
   6875 }
   6876 static FORCEINLINE ULONG IWMWriterAdvanced_Release(IWMWriterAdvanced* This) {
   6877     return This->lpVtbl->Release(This);
   6878 }
   6879 /*** IWMWriterAdvanced methods ***/
   6880 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSinkCount(IWMWriterAdvanced* This,DWORD *pcSinks) {
   6881     return This->lpVtbl->GetSinkCount(This,pcSinks);
   6882 }
   6883 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSink(IWMWriterAdvanced* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
   6884     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
   6885 }
   6886 static FORCEINLINE HRESULT IWMWriterAdvanced_AddSink(IWMWriterAdvanced* This,IWMWriterSink *pSink) {
   6887     return This->lpVtbl->AddSink(This,pSink);
   6888 }
   6889 static FORCEINLINE HRESULT IWMWriterAdvanced_RemoveSink(IWMWriterAdvanced* This,IWMWriterSink *pSink) {
   6890     return This->lpVtbl->RemoveSink(This,pSink);
   6891 }
   6892 static FORCEINLINE HRESULT IWMWriterAdvanced_WriteStreamSample(IWMWriterAdvanced* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
   6893     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
   6894 }
   6895 static FORCEINLINE HRESULT IWMWriterAdvanced_SetLiveSource(IWMWriterAdvanced* This,WINBOOL fIsLiveSource) {
   6896     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
   6897 }
   6898 static FORCEINLINE HRESULT IWMWriterAdvanced_IsRealTime(IWMWriterAdvanced* This,WINBOOL *pfRealTime) {
   6899     return This->lpVtbl->IsRealTime(This,pfRealTime);
   6900 }
   6901 static FORCEINLINE HRESULT IWMWriterAdvanced_GetWriterTime(IWMWriterAdvanced* This,QWORD *pCurrentTime) {
   6902     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
   6903 }
   6904 static FORCEINLINE HRESULT IWMWriterAdvanced_GetStatistics(IWMWriterAdvanced* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
   6905     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
   6906 }
   6907 static FORCEINLINE HRESULT IWMWriterAdvanced_SetSyncTolerance(IWMWriterAdvanced* This,DWORD msWindow) {
   6908     return This->lpVtbl->SetSyncTolerance(This,msWindow);
   6909 }
   6910 static FORCEINLINE HRESULT IWMWriterAdvanced_GetSyncTolerance(IWMWriterAdvanced* This,DWORD *pmsWindow) {
   6911     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
   6912 }
   6913 #endif
   6914 #endif
   6915 
   6916 #endif
   6917 
   6918 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_GetSinkCount_Proxy(
   6919     IWMWriterAdvanced* This,
   6920     DWORD *pcSinks);
   6921 void __RPC_STUB IWMWriterAdvanced_GetSinkCount_Stub(
   6922     IRpcStubBuffer* This,
   6923     IRpcChannelBuffer* pRpcChannelBuffer,
   6924     PRPC_MESSAGE pRpcMessage,
   6925     DWORD* pdwStubPhase);
   6926 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_GetSink_Proxy(
   6927     IWMWriterAdvanced* This,
   6928     DWORD dwSinkNum,
   6929     IWMWriterSink **ppSink);
   6930 void __RPC_STUB IWMWriterAdvanced_GetSink_Stub(
   6931     IRpcStubBuffer* This,
   6932     IRpcChannelBuffer* pRpcChannelBuffer,
   6933     PRPC_MESSAGE pRpcMessage,
   6934     DWORD* pdwStubPhase);
   6935 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_AddSink_Proxy(
   6936     IWMWriterAdvanced* This,
   6937     IWMWriterSink *pSink);
   6938 void __RPC_STUB IWMWriterAdvanced_AddSink_Stub(
   6939     IRpcStubBuffer* This,
   6940     IRpcChannelBuffer* pRpcChannelBuffer,
   6941     PRPC_MESSAGE pRpcMessage,
   6942     DWORD* pdwStubPhase);
   6943 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_RemoveSink_Proxy(
   6944     IWMWriterAdvanced* This,
   6945     IWMWriterSink *pSink);
   6946 void __RPC_STUB IWMWriterAdvanced_RemoveSink_Stub(
   6947     IRpcStubBuffer* This,
   6948     IRpcChannelBuffer* pRpcChannelBuffer,
   6949     PRPC_MESSAGE pRpcMessage,
   6950     DWORD* pdwStubPhase);
   6951 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_WriteStreamSample_Proxy(
   6952     IWMWriterAdvanced* This,
   6953     WORD wStreamNum,
   6954     QWORD cnsSampleTime,
   6955     DWORD msSampleSendTime,
   6956     QWORD cnsSampleDuration,
   6957     DWORD dwFlags,
   6958     INSSBuffer *pSample);
   6959 void __RPC_STUB IWMWriterAdvanced_WriteStreamSample_Stub(
   6960     IRpcStubBuffer* This,
   6961     IRpcChannelBuffer* pRpcChannelBuffer,
   6962     PRPC_MESSAGE pRpcMessage,
   6963     DWORD* pdwStubPhase);
   6964 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_SetLiveSource_Proxy(
   6965     IWMWriterAdvanced* This,
   6966     WINBOOL fIsLiveSource);
   6967 void __RPC_STUB IWMWriterAdvanced_SetLiveSource_Stub(
   6968     IRpcStubBuffer* This,
   6969     IRpcChannelBuffer* pRpcChannelBuffer,
   6970     PRPC_MESSAGE pRpcMessage,
   6971     DWORD* pdwStubPhase);
   6972 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_IsRealTime_Proxy(
   6973     IWMWriterAdvanced* This,
   6974     WINBOOL *pfRealTime);
   6975 void __RPC_STUB IWMWriterAdvanced_IsRealTime_Stub(
   6976     IRpcStubBuffer* This,
   6977     IRpcChannelBuffer* pRpcChannelBuffer,
   6978     PRPC_MESSAGE pRpcMessage,
   6979     DWORD* pdwStubPhase);
   6980 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_GetWriterTime_Proxy(
   6981     IWMWriterAdvanced* This,
   6982     QWORD *pCurrentTime);
   6983 void __RPC_STUB IWMWriterAdvanced_GetWriterTime_Stub(
   6984     IRpcStubBuffer* This,
   6985     IRpcChannelBuffer* pRpcChannelBuffer,
   6986     PRPC_MESSAGE pRpcMessage,
   6987     DWORD* pdwStubPhase);
   6988 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_GetStatistics_Proxy(
   6989     IWMWriterAdvanced* This,
   6990     WORD wStreamNum,
   6991     WM_WRITER_STATISTICS *pStats);
   6992 void __RPC_STUB IWMWriterAdvanced_GetStatistics_Stub(
   6993     IRpcStubBuffer* This,
   6994     IRpcChannelBuffer* pRpcChannelBuffer,
   6995     PRPC_MESSAGE pRpcMessage,
   6996     DWORD* pdwStubPhase);
   6997 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_SetSyncTolerance_Proxy(
   6998     IWMWriterAdvanced* This,
   6999     DWORD msWindow);
   7000 void __RPC_STUB IWMWriterAdvanced_SetSyncTolerance_Stub(
   7001     IRpcStubBuffer* This,
   7002     IRpcChannelBuffer* pRpcChannelBuffer,
   7003     PRPC_MESSAGE pRpcMessage,
   7004     DWORD* pdwStubPhase);
   7005 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced_GetSyncTolerance_Proxy(
   7006     IWMWriterAdvanced* This,
   7007     DWORD *pmsWindow);
   7008 void __RPC_STUB IWMWriterAdvanced_GetSyncTolerance_Stub(
   7009     IRpcStubBuffer* This,
   7010     IRpcChannelBuffer* pRpcChannelBuffer,
   7011     PRPC_MESSAGE pRpcMessage,
   7012     DWORD* pdwStubPhase);
   7013 
   7014 #endif  /* __IWMWriterAdvanced_INTERFACE_DEFINED__ */
   7015 
   7016 /*****************************************************************************
   7017  * IWMWriterAdvanced2 interface
   7018  */
   7019 #ifndef __IWMWriterAdvanced2_INTERFACE_DEFINED__
   7020 #define __IWMWriterAdvanced2_INTERFACE_DEFINED__
   7021 
   7022 DEFINE_GUID(IID_IWMWriterAdvanced2, 0x962dc1ec, 0xc046, 0x4db8, 0x9c,0xc7, 0x26,0xce,0xae,0x50,0x08,0x17);
   7023 #if defined(__cplusplus) && !defined(CINTERFACE)
   7024 MIDL_INTERFACE("962dc1ec-c046-4db8-9cc7-26ceae500817")
   7025 IWMWriterAdvanced2 : public IWMWriterAdvanced
   7026 {
   7027     virtual HRESULT STDMETHODCALLTYPE GetInputSetting(
   7028         DWORD dwInputNum,
   7029         LPCWSTR pszName,
   7030         WMT_ATTR_DATATYPE *pType,
   7031         BYTE *pValue,
   7032         WORD *pcbLength) = 0;
   7033 
   7034     virtual HRESULT STDMETHODCALLTYPE SetInputSetting(
   7035         DWORD dwInputNum,
   7036         LPCWSTR pszName,
   7037         WMT_ATTR_DATATYPE Type,
   7038         const BYTE *pValue,
   7039         WORD cbLength) = 0;
   7040 
   7041 };
   7042 #ifdef __CRT_UUID_DECL
   7043 __CRT_UUID_DECL(IWMWriterAdvanced2, 0x962dc1ec, 0xc046, 0x4db8, 0x9c,0xc7, 0x26,0xce,0xae,0x50,0x08,0x17)
   7044 #endif
   7045 #else
   7046 typedef struct IWMWriterAdvanced2Vtbl {
   7047     BEGIN_INTERFACE
   7048 
   7049     /*** IUnknown methods ***/
   7050     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   7051         IWMWriterAdvanced2* This,
   7052         REFIID riid,
   7053         void **ppvObject);
   7054 
   7055     ULONG (STDMETHODCALLTYPE *AddRef)(
   7056         IWMWriterAdvanced2* This);
   7057 
   7058     ULONG (STDMETHODCALLTYPE *Release)(
   7059         IWMWriterAdvanced2* This);
   7060 
   7061     /*** IWMWriterAdvanced methods ***/
   7062     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
   7063         IWMWriterAdvanced2* This,
   7064         DWORD *pcSinks);
   7065 
   7066     HRESULT (STDMETHODCALLTYPE *GetSink)(
   7067         IWMWriterAdvanced2* This,
   7068         DWORD dwSinkNum,
   7069         IWMWriterSink **ppSink);
   7070 
   7071     HRESULT (STDMETHODCALLTYPE *AddSink)(
   7072         IWMWriterAdvanced2* This,
   7073         IWMWriterSink *pSink);
   7074 
   7075     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
   7076         IWMWriterAdvanced2* This,
   7077         IWMWriterSink *pSink);
   7078 
   7079     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
   7080         IWMWriterAdvanced2* This,
   7081         WORD wStreamNum,
   7082         QWORD cnsSampleTime,
   7083         DWORD msSampleSendTime,
   7084         QWORD cnsSampleDuration,
   7085         DWORD dwFlags,
   7086         INSSBuffer *pSample);
   7087 
   7088     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
   7089         IWMWriterAdvanced2* This,
   7090         WINBOOL fIsLiveSource);
   7091 
   7092     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
   7093         IWMWriterAdvanced2* This,
   7094         WINBOOL *pfRealTime);
   7095 
   7096     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
   7097         IWMWriterAdvanced2* This,
   7098         QWORD *pCurrentTime);
   7099 
   7100     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   7101         IWMWriterAdvanced2* This,
   7102         WORD wStreamNum,
   7103         WM_WRITER_STATISTICS *pStats);
   7104 
   7105     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
   7106         IWMWriterAdvanced2* This,
   7107         DWORD msWindow);
   7108 
   7109     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
   7110         IWMWriterAdvanced2* This,
   7111         DWORD *pmsWindow);
   7112 
   7113     /*** IWMWriterAdvanced2 methods ***/
   7114     HRESULT (STDMETHODCALLTYPE *GetInputSetting)(
   7115         IWMWriterAdvanced2* This,
   7116         DWORD dwInputNum,
   7117         LPCWSTR pszName,
   7118         WMT_ATTR_DATATYPE *pType,
   7119         BYTE *pValue,
   7120         WORD *pcbLength);
   7121 
   7122     HRESULT (STDMETHODCALLTYPE *SetInputSetting)(
   7123         IWMWriterAdvanced2* This,
   7124         DWORD dwInputNum,
   7125         LPCWSTR pszName,
   7126         WMT_ATTR_DATATYPE Type,
   7127         const BYTE *pValue,
   7128         WORD cbLength);
   7129 
   7130     END_INTERFACE
   7131 } IWMWriterAdvanced2Vtbl;
   7132 interface IWMWriterAdvanced2 {
   7133     CONST_VTBL IWMWriterAdvanced2Vtbl* lpVtbl;
   7134 };
   7135 
   7136 #ifdef COBJMACROS
   7137 #ifndef WIDL_C_INLINE_WRAPPERS
   7138 /*** IUnknown methods ***/
   7139 #define IWMWriterAdvanced2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   7140 #define IWMWriterAdvanced2_AddRef(This) (This)->lpVtbl->AddRef(This)
   7141 #define IWMWriterAdvanced2_Release(This) (This)->lpVtbl->Release(This)
   7142 /*** IWMWriterAdvanced methods ***/
   7143 #define IWMWriterAdvanced2_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
   7144 #define IWMWriterAdvanced2_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
   7145 #define IWMWriterAdvanced2_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
   7146 #define IWMWriterAdvanced2_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
   7147 #define IWMWriterAdvanced2_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
   7148 #define IWMWriterAdvanced2_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
   7149 #define IWMWriterAdvanced2_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
   7150 #define IWMWriterAdvanced2_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
   7151 #define IWMWriterAdvanced2_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
   7152 #define IWMWriterAdvanced2_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
   7153 #define IWMWriterAdvanced2_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
   7154 /*** IWMWriterAdvanced2 methods ***/
   7155 #define IWMWriterAdvanced2_GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength)
   7156 #define IWMWriterAdvanced2_SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength)
   7157 #else
   7158 /*** IUnknown methods ***/
   7159 static FORCEINLINE HRESULT IWMWriterAdvanced2_QueryInterface(IWMWriterAdvanced2* This,REFIID riid,void **ppvObject) {
   7160     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   7161 }
   7162 static FORCEINLINE ULONG IWMWriterAdvanced2_AddRef(IWMWriterAdvanced2* This) {
   7163     return This->lpVtbl->AddRef(This);
   7164 }
   7165 static FORCEINLINE ULONG IWMWriterAdvanced2_Release(IWMWriterAdvanced2* This) {
   7166     return This->lpVtbl->Release(This);
   7167 }
   7168 /*** IWMWriterAdvanced methods ***/
   7169 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSinkCount(IWMWriterAdvanced2* This,DWORD *pcSinks) {
   7170     return This->lpVtbl->GetSinkCount(This,pcSinks);
   7171 }
   7172 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSink(IWMWriterAdvanced2* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
   7173     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
   7174 }
   7175 static FORCEINLINE HRESULT IWMWriterAdvanced2_AddSink(IWMWriterAdvanced2* This,IWMWriterSink *pSink) {
   7176     return This->lpVtbl->AddSink(This,pSink);
   7177 }
   7178 static FORCEINLINE HRESULT IWMWriterAdvanced2_RemoveSink(IWMWriterAdvanced2* This,IWMWriterSink *pSink) {
   7179     return This->lpVtbl->RemoveSink(This,pSink);
   7180 }
   7181 static FORCEINLINE HRESULT IWMWriterAdvanced2_WriteStreamSample(IWMWriterAdvanced2* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
   7182     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
   7183 }
   7184 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetLiveSource(IWMWriterAdvanced2* This,WINBOOL fIsLiveSource) {
   7185     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
   7186 }
   7187 static FORCEINLINE HRESULT IWMWriterAdvanced2_IsRealTime(IWMWriterAdvanced2* This,WINBOOL *pfRealTime) {
   7188     return This->lpVtbl->IsRealTime(This,pfRealTime);
   7189 }
   7190 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetWriterTime(IWMWriterAdvanced2* This,QWORD *pCurrentTime) {
   7191     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
   7192 }
   7193 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetStatistics(IWMWriterAdvanced2* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
   7194     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
   7195 }
   7196 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetSyncTolerance(IWMWriterAdvanced2* This,DWORD msWindow) {
   7197     return This->lpVtbl->SetSyncTolerance(This,msWindow);
   7198 }
   7199 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetSyncTolerance(IWMWriterAdvanced2* This,DWORD *pmsWindow) {
   7200     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
   7201 }
   7202 /*** IWMWriterAdvanced2 methods ***/
   7203 static FORCEINLINE HRESULT IWMWriterAdvanced2_GetInputSetting(IWMWriterAdvanced2* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   7204     return This->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength);
   7205 }
   7206 static FORCEINLINE HRESULT IWMWriterAdvanced2_SetInputSetting(IWMWriterAdvanced2* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   7207     return This->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength);
   7208 }
   7209 #endif
   7210 #endif
   7211 
   7212 #endif
   7213 
   7214 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced2_GetInputSetting_Proxy(
   7215     IWMWriterAdvanced2* This,
   7216     DWORD dwInputNum,
   7217     LPCWSTR pszName,
   7218     WMT_ATTR_DATATYPE *pType,
   7219     BYTE *pValue,
   7220     WORD *pcbLength);
   7221 void __RPC_STUB IWMWriterAdvanced2_GetInputSetting_Stub(
   7222     IRpcStubBuffer* This,
   7223     IRpcChannelBuffer* pRpcChannelBuffer,
   7224     PRPC_MESSAGE pRpcMessage,
   7225     DWORD* pdwStubPhase);
   7226 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced2_SetInputSetting_Proxy(
   7227     IWMWriterAdvanced2* This,
   7228     DWORD dwInputNum,
   7229     LPCWSTR pszName,
   7230     WMT_ATTR_DATATYPE Type,
   7231     const BYTE *pValue,
   7232     WORD cbLength);
   7233 void __RPC_STUB IWMWriterAdvanced2_SetInputSetting_Stub(
   7234     IRpcStubBuffer* This,
   7235     IRpcChannelBuffer* pRpcChannelBuffer,
   7236     PRPC_MESSAGE pRpcMessage,
   7237     DWORD* pdwStubPhase);
   7238 
   7239 #endif  /* __IWMWriterAdvanced2_INTERFACE_DEFINED__ */
   7240 
   7241 /*****************************************************************************
   7242  * IWMWriterAdvanced3 interface
   7243  */
   7244 #ifndef __IWMWriterAdvanced3_INTERFACE_DEFINED__
   7245 #define __IWMWriterAdvanced3_INTERFACE_DEFINED__
   7246 
   7247 DEFINE_GUID(IID_IWMWriterAdvanced3, 0x2cd6492d, 0x7c37, 0x4e76, 0x9d,0x3b, 0x59,0x26,0x11,0x83,0xa2,0x2e);
   7248 #if defined(__cplusplus) && !defined(CINTERFACE)
   7249 MIDL_INTERFACE("2cd6492d-7c37-4e76-9d3b-59261183a22e")
   7250 IWMWriterAdvanced3 : public IWMWriterAdvanced2
   7251 {
   7252     virtual HRESULT STDMETHODCALLTYPE GetStatisticsEx(
   7253         WORD wStreamNum,
   7254         WM_WRITER_STATISTICS_EX *pStats) = 0;
   7255 
   7256     virtual HRESULT STDMETHODCALLTYPE SetNonBlocking(
   7257         ) = 0;
   7258 
   7259 };
   7260 #ifdef __CRT_UUID_DECL
   7261 __CRT_UUID_DECL(IWMWriterAdvanced3, 0x2cd6492d, 0x7c37, 0x4e76, 0x9d,0x3b, 0x59,0x26,0x11,0x83,0xa2,0x2e)
   7262 #endif
   7263 #else
   7264 typedef struct IWMWriterAdvanced3Vtbl {
   7265     BEGIN_INTERFACE
   7266 
   7267     /*** IUnknown methods ***/
   7268     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   7269         IWMWriterAdvanced3* This,
   7270         REFIID riid,
   7271         void **ppvObject);
   7272 
   7273     ULONG (STDMETHODCALLTYPE *AddRef)(
   7274         IWMWriterAdvanced3* This);
   7275 
   7276     ULONG (STDMETHODCALLTYPE *Release)(
   7277         IWMWriterAdvanced3* This);
   7278 
   7279     /*** IWMWriterAdvanced methods ***/
   7280     HRESULT (STDMETHODCALLTYPE *GetSinkCount)(
   7281         IWMWriterAdvanced3* This,
   7282         DWORD *pcSinks);
   7283 
   7284     HRESULT (STDMETHODCALLTYPE *GetSink)(
   7285         IWMWriterAdvanced3* This,
   7286         DWORD dwSinkNum,
   7287         IWMWriterSink **ppSink);
   7288 
   7289     HRESULT (STDMETHODCALLTYPE *AddSink)(
   7290         IWMWriterAdvanced3* This,
   7291         IWMWriterSink *pSink);
   7292 
   7293     HRESULT (STDMETHODCALLTYPE *RemoveSink)(
   7294         IWMWriterAdvanced3* This,
   7295         IWMWriterSink *pSink);
   7296 
   7297     HRESULT (STDMETHODCALLTYPE *WriteStreamSample)(
   7298         IWMWriterAdvanced3* This,
   7299         WORD wStreamNum,
   7300         QWORD cnsSampleTime,
   7301         DWORD msSampleSendTime,
   7302         QWORD cnsSampleDuration,
   7303         DWORD dwFlags,
   7304         INSSBuffer *pSample);
   7305 
   7306     HRESULT (STDMETHODCALLTYPE *SetLiveSource)(
   7307         IWMWriterAdvanced3* This,
   7308         WINBOOL fIsLiveSource);
   7309 
   7310     HRESULT (STDMETHODCALLTYPE *IsRealTime)(
   7311         IWMWriterAdvanced3* This,
   7312         WINBOOL *pfRealTime);
   7313 
   7314     HRESULT (STDMETHODCALLTYPE *GetWriterTime)(
   7315         IWMWriterAdvanced3* This,
   7316         QWORD *pCurrentTime);
   7317 
   7318     HRESULT (STDMETHODCALLTYPE *GetStatistics)(
   7319         IWMWriterAdvanced3* This,
   7320         WORD wStreamNum,
   7321         WM_WRITER_STATISTICS *pStats);
   7322 
   7323     HRESULT (STDMETHODCALLTYPE *SetSyncTolerance)(
   7324         IWMWriterAdvanced3* This,
   7325         DWORD msWindow);
   7326 
   7327     HRESULT (STDMETHODCALLTYPE *GetSyncTolerance)(
   7328         IWMWriterAdvanced3* This,
   7329         DWORD *pmsWindow);
   7330 
   7331     /*** IWMWriterAdvanced2 methods ***/
   7332     HRESULT (STDMETHODCALLTYPE *GetInputSetting)(
   7333         IWMWriterAdvanced3* This,
   7334         DWORD dwInputNum,
   7335         LPCWSTR pszName,
   7336         WMT_ATTR_DATATYPE *pType,
   7337         BYTE *pValue,
   7338         WORD *pcbLength);
   7339 
   7340     HRESULT (STDMETHODCALLTYPE *SetInputSetting)(
   7341         IWMWriterAdvanced3* This,
   7342         DWORD dwInputNum,
   7343         LPCWSTR pszName,
   7344         WMT_ATTR_DATATYPE Type,
   7345         const BYTE *pValue,
   7346         WORD cbLength);
   7347 
   7348     /*** IWMWriterAdvanced3 methods ***/
   7349     HRESULT (STDMETHODCALLTYPE *GetStatisticsEx)(
   7350         IWMWriterAdvanced3* This,
   7351         WORD wStreamNum,
   7352         WM_WRITER_STATISTICS_EX *pStats);
   7353 
   7354     HRESULT (STDMETHODCALLTYPE *SetNonBlocking)(
   7355         IWMWriterAdvanced3* This);
   7356 
   7357     END_INTERFACE
   7358 } IWMWriterAdvanced3Vtbl;
   7359 interface IWMWriterAdvanced3 {
   7360     CONST_VTBL IWMWriterAdvanced3Vtbl* lpVtbl;
   7361 };
   7362 
   7363 #ifdef COBJMACROS
   7364 #ifndef WIDL_C_INLINE_WRAPPERS
   7365 /*** IUnknown methods ***/
   7366 #define IWMWriterAdvanced3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   7367 #define IWMWriterAdvanced3_AddRef(This) (This)->lpVtbl->AddRef(This)
   7368 #define IWMWriterAdvanced3_Release(This) (This)->lpVtbl->Release(This)
   7369 /*** IWMWriterAdvanced methods ***/
   7370 #define IWMWriterAdvanced3_GetSinkCount(This,pcSinks) (This)->lpVtbl->GetSinkCount(This,pcSinks)
   7371 #define IWMWriterAdvanced3_GetSink(This,dwSinkNum,ppSink) (This)->lpVtbl->GetSink(This,dwSinkNum,ppSink)
   7372 #define IWMWriterAdvanced3_AddSink(This,pSink) (This)->lpVtbl->AddSink(This,pSink)
   7373 #define IWMWriterAdvanced3_RemoveSink(This,pSink) (This)->lpVtbl->RemoveSink(This,pSink)
   7374 #define IWMWriterAdvanced3_WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample) (This)->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample)
   7375 #define IWMWriterAdvanced3_SetLiveSource(This,fIsLiveSource) (This)->lpVtbl->SetLiveSource(This,fIsLiveSource)
   7376 #define IWMWriterAdvanced3_IsRealTime(This,pfRealTime) (This)->lpVtbl->IsRealTime(This,pfRealTime)
   7377 #define IWMWriterAdvanced3_GetWriterTime(This,pCurrentTime) (This)->lpVtbl->GetWriterTime(This,pCurrentTime)
   7378 #define IWMWriterAdvanced3_GetStatistics(This,wStreamNum,pStats) (This)->lpVtbl->GetStatistics(This,wStreamNum,pStats)
   7379 #define IWMWriterAdvanced3_SetSyncTolerance(This,msWindow) (This)->lpVtbl->SetSyncTolerance(This,msWindow)
   7380 #define IWMWriterAdvanced3_GetSyncTolerance(This,pmsWindow) (This)->lpVtbl->GetSyncTolerance(This,pmsWindow)
   7381 /*** IWMWriterAdvanced2 methods ***/
   7382 #define IWMWriterAdvanced3_GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength) (This)->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength)
   7383 #define IWMWriterAdvanced3_SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength) (This)->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength)
   7384 /*** IWMWriterAdvanced3 methods ***/
   7385 #define IWMWriterAdvanced3_GetStatisticsEx(This,wStreamNum,pStats) (This)->lpVtbl->GetStatisticsEx(This,wStreamNum,pStats)
   7386 #define IWMWriterAdvanced3_SetNonBlocking(This) (This)->lpVtbl->SetNonBlocking(This)
   7387 #else
   7388 /*** IUnknown methods ***/
   7389 static FORCEINLINE HRESULT IWMWriterAdvanced3_QueryInterface(IWMWriterAdvanced3* This,REFIID riid,void **ppvObject) {
   7390     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   7391 }
   7392 static FORCEINLINE ULONG IWMWriterAdvanced3_AddRef(IWMWriterAdvanced3* This) {
   7393     return This->lpVtbl->AddRef(This);
   7394 }
   7395 static FORCEINLINE ULONG IWMWriterAdvanced3_Release(IWMWriterAdvanced3* This) {
   7396     return This->lpVtbl->Release(This);
   7397 }
   7398 /*** IWMWriterAdvanced methods ***/
   7399 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSinkCount(IWMWriterAdvanced3* This,DWORD *pcSinks) {
   7400     return This->lpVtbl->GetSinkCount(This,pcSinks);
   7401 }
   7402 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSink(IWMWriterAdvanced3* This,DWORD dwSinkNum,IWMWriterSink **ppSink) {
   7403     return This->lpVtbl->GetSink(This,dwSinkNum,ppSink);
   7404 }
   7405 static FORCEINLINE HRESULT IWMWriterAdvanced3_AddSink(IWMWriterAdvanced3* This,IWMWriterSink *pSink) {
   7406     return This->lpVtbl->AddSink(This,pSink);
   7407 }
   7408 static FORCEINLINE HRESULT IWMWriterAdvanced3_RemoveSink(IWMWriterAdvanced3* This,IWMWriterSink *pSink) {
   7409     return This->lpVtbl->RemoveSink(This,pSink);
   7410 }
   7411 static FORCEINLINE HRESULT IWMWriterAdvanced3_WriteStreamSample(IWMWriterAdvanced3* This,WORD wStreamNum,QWORD cnsSampleTime,DWORD msSampleSendTime,QWORD cnsSampleDuration,DWORD dwFlags,INSSBuffer *pSample) {
   7412     return This->lpVtbl->WriteStreamSample(This,wStreamNum,cnsSampleTime,msSampleSendTime,cnsSampleDuration,dwFlags,pSample);
   7413 }
   7414 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetLiveSource(IWMWriterAdvanced3* This,WINBOOL fIsLiveSource) {
   7415     return This->lpVtbl->SetLiveSource(This,fIsLiveSource);
   7416 }
   7417 static FORCEINLINE HRESULT IWMWriterAdvanced3_IsRealTime(IWMWriterAdvanced3* This,WINBOOL *pfRealTime) {
   7418     return This->lpVtbl->IsRealTime(This,pfRealTime);
   7419 }
   7420 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetWriterTime(IWMWriterAdvanced3* This,QWORD *pCurrentTime) {
   7421     return This->lpVtbl->GetWriterTime(This,pCurrentTime);
   7422 }
   7423 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetStatistics(IWMWriterAdvanced3* This,WORD wStreamNum,WM_WRITER_STATISTICS *pStats) {
   7424     return This->lpVtbl->GetStatistics(This,wStreamNum,pStats);
   7425 }
   7426 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetSyncTolerance(IWMWriterAdvanced3* This,DWORD msWindow) {
   7427     return This->lpVtbl->SetSyncTolerance(This,msWindow);
   7428 }
   7429 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetSyncTolerance(IWMWriterAdvanced3* This,DWORD *pmsWindow) {
   7430     return This->lpVtbl->GetSyncTolerance(This,pmsWindow);
   7431 }
   7432 /*** IWMWriterAdvanced2 methods ***/
   7433 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetInputSetting(IWMWriterAdvanced3* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE *pType,BYTE *pValue,WORD *pcbLength) {
   7434     return This->lpVtbl->GetInputSetting(This,dwInputNum,pszName,pType,pValue,pcbLength);
   7435 }
   7436 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetInputSetting(IWMWriterAdvanced3* This,DWORD dwInputNum,LPCWSTR pszName,WMT_ATTR_DATATYPE Type,const BYTE *pValue,WORD cbLength) {
   7437     return This->lpVtbl->SetInputSetting(This,dwInputNum,pszName,Type,pValue,cbLength);
   7438 }
   7439 /*** IWMWriterAdvanced3 methods ***/
   7440 static FORCEINLINE HRESULT IWMWriterAdvanced3_GetStatisticsEx(IWMWriterAdvanced3* This,WORD wStreamNum,WM_WRITER_STATISTICS_EX *pStats) {
   7441     return This->lpVtbl->GetStatisticsEx(This,wStreamNum,pStats);
   7442 }
   7443 static FORCEINLINE HRESULT IWMWriterAdvanced3_SetNonBlocking(IWMWriterAdvanced3* This) {
   7444     return This->lpVtbl->SetNonBlocking(This);
   7445 }
   7446 #endif
   7447 #endif
   7448 
   7449 #endif
   7450 
   7451 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced3_GetStatisticsEx_Proxy(
   7452     IWMWriterAdvanced3* This,
   7453     WORD wStreamNum,
   7454     WM_WRITER_STATISTICS_EX *pStats);
   7455 void __RPC_STUB IWMWriterAdvanced3_GetStatisticsEx_Stub(
   7456     IRpcStubBuffer* This,
   7457     IRpcChannelBuffer* pRpcChannelBuffer,
   7458     PRPC_MESSAGE pRpcMessage,
   7459     DWORD* pdwStubPhase);
   7460 HRESULT STDMETHODCALLTYPE IWMWriterAdvanced3_SetNonBlocking_Proxy(
   7461     IWMWriterAdvanced3* This);
   7462 void __RPC_STUB IWMWriterAdvanced3_SetNonBlocking_Stub(
   7463     IRpcStubBuffer* This,
   7464     IRpcChannelBuffer* pRpcChannelBuffer,
   7465     PRPC_MESSAGE pRpcMessage,
   7466     DWORD* pdwStubPhase);
   7467 
   7468 #endif  /* __IWMWriterAdvanced3_INTERFACE_DEFINED__ */
   7469 
   7470 HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);
   7471 HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);
   7472 EXTERN_GUID(WMMEDIASUBTYPE_Base,   0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7473 EXTERN_GUID(WMMEDIATYPE_Video,     0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7474 EXTERN_GUID(WMMEDIASUBTYPE_RGB1,   0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7475 EXTERN_GUID(WMMEDIASUBTYPE_RGB4,   0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7476 EXTERN_GUID(WMMEDIASUBTYPE_RGB8,   0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7477 EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7478 EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7479 EXTERN_GUID(WMMEDIASUBTYPE_RGB24,  0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7480 EXTERN_GUID(WMMEDIASUBTYPE_RGB32,  0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
   7481 EXTERN_GUID(WMMEDIASUBTYPE_I420,   0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7482 EXTERN_GUID(WMMEDIASUBTYPE_IYUV,   0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7483 EXTERN_GUID(WMMEDIASUBTYPE_YV12,   0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7484 EXTERN_GUID(WMMEDIASUBTYPE_YUY2,   0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7485 EXTERN_GUID(WMMEDIASUBTYPE_P422,   0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7486 EXTERN_GUID(WMMEDIASUBTYPE_UYVY,   0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7487 EXTERN_GUID(WMMEDIASUBTYPE_YVYU,   0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7488 EXTERN_GUID(WMMEDIASUBTYPE_YVU9,   0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7489 EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);
   7490 EXTERN_GUID(WMMEDIASUBTYPE_MP43,   0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7491 EXTERN_GUID(WMMEDIASUBTYPE_MP4S,   0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7492 EXTERN_GUID(WMMEDIASUBTYPE_M4S2,   0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7493 EXTERN_GUID(WMMEDIASUBTYPE_WMV1,   0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7494 EXTERN_GUID(WMMEDIASUBTYPE_WMV2,   0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7495 EXTERN_GUID(WMMEDIASUBTYPE_MSS1,   0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7496 EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);
   7497 EXTERN_GUID(WMMEDIATYPE_Audio,     0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7498 EXTERN_GUID(WMMEDIASUBTYPE_PCM,    0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7499 EXTERN_GUID(WMMEDIASUBTYPE_DRM,    0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7500 EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9,        0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7501 EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7502 EXTERN_GUID(WMMEDIASUBTYPE_MSS2,   0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7503 EXTERN_GUID(WMMEDIASUBTYPE_WMSP1,  0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7504 EXTERN_GUID(WMMEDIASUBTYPE_WMSP2,  0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7505 EXTERN_GUID(WMMEDIASUBTYPE_WMV3,   0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7506 EXTERN_GUID(WMMEDIASUBTYPE_WMVP,   0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7507 EXTERN_GUID(WMMEDIASUBTYPE_WVP2,   0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7508 EXTERN_GUID(WMMEDIASUBTYPE_WMVA,   0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7509 EXTERN_GUID(WMMEDIASUBTYPE_WVC1,   0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
   7510 /* Begin additional prototypes for all interfaces */
   7511 
   7512 
   7513 /* End additional prototypes */
   7514 
   7515 #ifdef __cplusplus
   7516 }
   7517 #endif
   7518 
   7519 #endif /* __wmsdkidl_h__ */
   7520