

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for mpeg2psiparser.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __mpeg2psiparser_h__
#define __mpeg2psiparser_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IGenericDescriptor_FWD_DEFINED__
#define __IGenericDescriptor_FWD_DEFINED__
typedef interface IGenericDescriptor IGenericDescriptor;
#endif 	/* __IGenericDescriptor_FWD_DEFINED__ */


#ifndef __IGenericDescriptor2_FWD_DEFINED__
#define __IGenericDescriptor2_FWD_DEFINED__
typedef interface IGenericDescriptor2 IGenericDescriptor2;
#endif 	/* __IGenericDescriptor2_FWD_DEFINED__ */


#ifndef __IPAT_FWD_DEFINED__
#define __IPAT_FWD_DEFINED__
typedef interface IPAT IPAT;
#endif 	/* __IPAT_FWD_DEFINED__ */


#ifndef __ICAT_FWD_DEFINED__
#define __ICAT_FWD_DEFINED__
typedef interface ICAT ICAT;
#endif 	/* __ICAT_FWD_DEFINED__ */


#ifndef __IPMT_FWD_DEFINED__
#define __IPMT_FWD_DEFINED__
typedef interface IPMT IPMT;
#endif 	/* __IPMT_FWD_DEFINED__ */


#ifndef __ITSDT_FWD_DEFINED__
#define __ITSDT_FWD_DEFINED__
typedef interface ITSDT ITSDT;
#endif 	/* __ITSDT_FWD_DEFINED__ */


#ifndef __IPSITables_FWD_DEFINED__
#define __IPSITables_FWD_DEFINED__
typedef interface IPSITables IPSITables;
#endif 	/* __IPSITables_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "mpeg2structs.h"
#include "mpeg2data.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_mpeg2psiparser_0000_0000 */
/* [local] */ 





extern RPC_IF_HANDLE __MIDL_itf_mpeg2psiparser_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_mpeg2psiparser_0000_0000_v0_0_s_ifspec;

#ifndef __IGenericDescriptor_INTERFACE_DEFINED__
#define __IGenericDescriptor_INTERFACE_DEFINED__

/* interface IGenericDescriptor */
/* [unique][uuid][local][object] */ 


EXTERN_C const IID IID_IGenericDescriptor;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6A5918F8-A77A-4f61-AED0-5702BDCDA3E6")
    IGenericDescriptor : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ BYTE *pbDesc,
            /* [in] */ INT bCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTag( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLength( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetBody( 
            /* [out] */ BYTE **ppbVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IGenericDescriptorVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IGenericDescriptor * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IGenericDescriptor * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IGenericDescriptor * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IGenericDescriptor * This,
            /* [in] */ BYTE *pbDesc,
            /* [in] */ INT bCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetTag )( 
            IGenericDescriptor * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IGenericDescriptor * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetBody )( 
            IGenericDescriptor * This,
            /* [out] */ BYTE **ppbVal);
        
        END_INTERFACE
    } IGenericDescriptorVtbl;

    interface IGenericDescriptor
    {
        CONST_VTBL struct IGenericDescriptorVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IGenericDescriptor_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IGenericDescriptor_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IGenericDescriptor_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IGenericDescriptor_Initialize(This,pbDesc,bCount)	\
    ( (This)->lpVtbl -> Initialize(This,pbDesc,bCount) ) 

#define IGenericDescriptor_GetTag(This,pbVal)	\
    ( (This)->lpVtbl -> GetTag(This,pbVal) ) 

#define IGenericDescriptor_GetLength(This,pbVal)	\
    ( (This)->lpVtbl -> GetLength(This,pbVal) ) 

#define IGenericDescriptor_GetBody(This,ppbVal)	\
    ( (This)->lpVtbl -> GetBody(This,ppbVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IGenericDescriptor_INTERFACE_DEFINED__ */


#ifndef __IGenericDescriptor2_INTERFACE_DEFINED__
#define __IGenericDescriptor2_INTERFACE_DEFINED__

/* interface IGenericDescriptor2 */
/* [unique][uuid][local][object] */ 


EXTERN_C const IID IID_IGenericDescriptor2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("BF02FB7E-9792-4e10-A68D-033A2CC246A5")
    IGenericDescriptor2 : public IGenericDescriptor
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ BYTE *pbDesc,
            /* [in] */ WORD wCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLength( 
            /* [out] */ WORD *pwVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IGenericDescriptor2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IGenericDescriptor2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IGenericDescriptor2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IGenericDescriptor2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IGenericDescriptor2 * This,
            /* [in] */ BYTE *pbDesc,
            /* [in] */ INT bCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetTag )( 
            IGenericDescriptor2 * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IGenericDescriptor2 * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetBody )( 
            IGenericDescriptor2 * This,
            /* [out] */ BYTE **ppbVal);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IGenericDescriptor2 * This,
            /* [in] */ BYTE *pbDesc,
            /* [in] */ WORD wCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IGenericDescriptor2 * This,
            /* [out] */ WORD *pwVal);
        
        END_INTERFACE
    } IGenericDescriptor2Vtbl;

    interface IGenericDescriptor2
    {
        CONST_VTBL struct IGenericDescriptor2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IGenericDescriptor2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IGenericDescriptor2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IGenericDescriptor2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IGenericDescriptor2_Initialize(This,pbDesc,bCount)	\
    ( (This)->lpVtbl -> Initialize(This,pbDesc,bCount) ) 

#define IGenericDescriptor2_GetTag(This,pbVal)	\
    ( (This)->lpVtbl -> GetTag(This,pbVal) ) 

#define IGenericDescriptor2_GetLength(This,pbVal)	\
    ( (This)->lpVtbl -> GetLength(This,pbVal) ) 

#define IGenericDescriptor2_GetBody(This,ppbVal)	\
    ( (This)->lpVtbl -> GetBody(This,ppbVal) ) 


#define IGenericDescriptor2_Initialize(This,pbDesc,wCount)	\
    ( (This)->lpVtbl -> Initialize(This,pbDesc,wCount) ) 

#define IGenericDescriptor2_GetLength(This,pwVal)	\
    ( (This)->lpVtbl -> GetLength(This,pwVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IGenericDescriptor2_INTERFACE_DEFINED__ */


#ifndef __IPAT_INTERFACE_DEFINED__
#define __IPAT_INTERFACE_DEFINED__

/* interface IPAT */
/* [unique][uuid][local][object] */ 

typedef /* [public] */ struct __MIDL_IPAT_0001
    {
    WORD wProgramNumber;
    WORD wProgramMapPID;
    } 	ProgramElement;


EXTERN_C const IID IID_IPAT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6623B511-4B5F-43c3-9A01-E8FF84188060")
    IPAT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTransportStreamId( 
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVersionNumber( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCountOfRecords( 
            /* [out] */ DWORD *pdwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordProgramNumber( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordProgramMapPid( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindRecordProgramMapPid( 
            /* [in] */ WORD wProgramNumber,
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForNextTable( 
            /* [in] */ HANDLE hNextTableAvailable) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNextTable( 
            /* [out] */ IPAT **ppPAT) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForWhenCurrent( 
            /* [in] */ HANDLE hNextTableIsCurrent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertNextToCurrent( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPATVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPAT * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPAT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPAT * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IPAT * This,
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData);
        
        HRESULT ( STDMETHODCALLTYPE *GetTransportStreamId )( 
            IPAT * This,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )( 
            IPAT * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetCountOfRecords )( 
            IPAT * This,
            /* [out] */ DWORD *pdwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordProgramNumber )( 
            IPAT * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordProgramMapPid )( 
            IPAT * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *FindRecordProgramMapPid )( 
            IPAT * This,
            /* [in] */ WORD wProgramNumber,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForNextTable )( 
            IPAT * This,
            /* [in] */ HANDLE hNextTableAvailable);
        
        HRESULT ( STDMETHODCALLTYPE *GetNextTable )( 
            IPAT * This,
            /* [out] */ IPAT **ppPAT);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForWhenCurrent )( 
            IPAT * This,
            /* [in] */ HANDLE hNextTableIsCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertNextToCurrent )( 
            IPAT * This);
        
        END_INTERFACE
    } IPATVtbl;

    interface IPAT
    {
        CONST_VTBL struct IPATVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPAT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IPAT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IPAT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IPAT_Initialize(This,pSectionList,pMPEGData)	\
    ( (This)->lpVtbl -> Initialize(This,pSectionList,pMPEGData) ) 

#define IPAT_GetTransportStreamId(This,pwVal)	\
    ( (This)->lpVtbl -> GetTransportStreamId(This,pwVal) ) 

#define IPAT_GetVersionNumber(This,pbVal)	\
    ( (This)->lpVtbl -> GetVersionNumber(This,pbVal) ) 

#define IPAT_GetCountOfRecords(This,pdwVal)	\
    ( (This)->lpVtbl -> GetCountOfRecords(This,pdwVal) ) 

#define IPAT_GetRecordProgramNumber(This,dwIndex,pwVal)	\
    ( (This)->lpVtbl -> GetRecordProgramNumber(This,dwIndex,pwVal) ) 

#define IPAT_GetRecordProgramMapPid(This,dwIndex,pwVal)	\
    ( (This)->lpVtbl -> GetRecordProgramMapPid(This,dwIndex,pwVal) ) 

#define IPAT_FindRecordProgramMapPid(This,wProgramNumber,pwVal)	\
    ( (This)->lpVtbl -> FindRecordProgramMapPid(This,wProgramNumber,pwVal) ) 

#define IPAT_RegisterForNextTable(This,hNextTableAvailable)	\
    ( (This)->lpVtbl -> RegisterForNextTable(This,hNextTableAvailable) ) 

#define IPAT_GetNextTable(This,ppPAT)	\
    ( (This)->lpVtbl -> GetNextTable(This,ppPAT) ) 

#define IPAT_RegisterForWhenCurrent(This,hNextTableIsCurrent)	\
    ( (This)->lpVtbl -> RegisterForWhenCurrent(This,hNextTableIsCurrent) ) 

#define IPAT_ConvertNextToCurrent(This)	\
    ( (This)->lpVtbl -> ConvertNextToCurrent(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IPAT_INTERFACE_DEFINED__ */


#ifndef __ICAT_INTERFACE_DEFINED__
#define __ICAT_INTERFACE_DEFINED__

/* interface ICAT */
/* [unique][uuid][local][object] */ 


EXTERN_C const IID IID_ICAT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("7C6995FB-2A31-4bd7-953E-B1AD7FB7D31C")
    ICAT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVersionNumber( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCountOfTableDescriptors( 
            /* [out] */ DWORD *pdwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByIndex( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByTag( 
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForNextTable( 
            /* [in] */ HANDLE hNextTableAvailable) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNextTable( 
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ICAT **ppCAT) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForWhenCurrent( 
            /* [in] */ HANDLE hNextTableIsCurrent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertNextToCurrent( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ICATVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ICAT * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ICAT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ICAT * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            ICAT * This,
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData);
        
        HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )( 
            ICAT * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetCountOfTableDescriptors )( 
            ICAT * This,
            /* [out] */ DWORD *pdwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByIndex )( 
            ICAT * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByTag )( 
            ICAT * This,
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForNextTable )( 
            ICAT * This,
            /* [in] */ HANDLE hNextTableAvailable);
        
        HRESULT ( STDMETHODCALLTYPE *GetNextTable )( 
            ICAT * This,
            /* [in] */ DWORD dwTimeout,
            /* [out] */ ICAT **ppCAT);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForWhenCurrent )( 
            ICAT * This,
            /* [in] */ HANDLE hNextTableIsCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertNextToCurrent )( 
            ICAT * This);
        
        END_INTERFACE
    } ICATVtbl;

    interface ICAT
    {
        CONST_VTBL struct ICATVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ICAT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ICAT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ICAT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ICAT_Initialize(This,pSectionList,pMPEGData)	\
    ( (This)->lpVtbl -> Initialize(This,pSectionList,pMPEGData) ) 

#define ICAT_GetVersionNumber(This,pbVal)	\
    ( (This)->lpVtbl -> GetVersionNumber(This,pbVal) ) 

#define ICAT_GetCountOfTableDescriptors(This,pdwVal)	\
    ( (This)->lpVtbl -> GetCountOfTableDescriptors(This,pdwVal) ) 

#define ICAT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) ) 

#define ICAT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) ) 

#define ICAT_RegisterForNextTable(This,hNextTableAvailable)	\
    ( (This)->lpVtbl -> RegisterForNextTable(This,hNextTableAvailable) ) 

#define ICAT_GetNextTable(This,dwTimeout,ppCAT)	\
    ( (This)->lpVtbl -> GetNextTable(This,dwTimeout,ppCAT) ) 

#define ICAT_RegisterForWhenCurrent(This,hNextTableIsCurrent)	\
    ( (This)->lpVtbl -> RegisterForWhenCurrent(This,hNextTableIsCurrent) ) 

#define ICAT_ConvertNextToCurrent(This)	\
    ( (This)->lpVtbl -> ConvertNextToCurrent(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ICAT_INTERFACE_DEFINED__ */


#ifndef __IPMT_INTERFACE_DEFINED__
#define __IPMT_INTERFACE_DEFINED__

/* interface IPMT */
/* [unique][uuid][local][object] */ 


EXTERN_C const IID IID_IPMT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("01F3B398-9527-4736-94DB-5195878E97A8")
    IPMT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProgramNumber( 
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVersionNumber( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPcrPid( 
            /* [out] */ PID *pPidVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCountOfTableDescriptors( 
            /* [out] */ DWORD *pdwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByIndex( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByTag( 
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCountOfRecords( 
            /* [out] */ WORD *pwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordStreamType( 
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordElementaryPid( 
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ PID *pPidVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordCountOfDescriptors( 
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ DWORD *pdwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordDescriptorByIndex( 
            /* [in] */ DWORD dwRecordIndex,
            /* [in] */ DWORD dwDescIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordDescriptorByTag( 
            /* [in] */ DWORD dwRecordIndex,
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE QueryServiceGatewayInfo( 
            /* [out] */ DSMCC_ELEMENT **ppDSMCCList,
            /* [out] */ UINT *puiCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE QueryMPEInfo( 
            /* [out] */ MPE_ELEMENT **ppMPEList,
            /* [out] */ UINT *puiCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForNextTable( 
            /* [in] */ HANDLE hNextTableAvailable) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNextTable( 
            /* [out] */ IPMT **ppPMT) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForWhenCurrent( 
            /* [in] */ HANDLE hNextTableIsCurrent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertNextToCurrent( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPMTVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IPMT * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IPMT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IPMT * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IPMT * This,
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData);
        
        HRESULT ( STDMETHODCALLTYPE *GetProgramNumber )( 
            IPMT * This,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )( 
            IPMT * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetPcrPid )( 
            IPMT * This,
            /* [out] */ PID *pPidVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetCountOfTableDescriptors )( 
            IPMT * This,
            /* [out] */ DWORD *pdwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByIndex )( 
            IPMT * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByTag )( 
            IPMT * This,
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *GetCountOfRecords )( 
            IPMT * This,
            /* [out] */ WORD *pwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordStreamType )( 
            IPMT * This,
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordElementaryPid )( 
            IPMT * This,
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ PID *pPidVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordCountOfDescriptors )( 
            IPMT * This,
            /* [in] */ DWORD dwRecordIndex,
            /* [out] */ DWORD *pdwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordDescriptorByIndex )( 
            IPMT * This,
            /* [in] */ DWORD dwRecordIndex,
            /* [in] */ DWORD dwDescIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *GetRecordDescriptorByTag )( 
            IPMT * This,
            /* [in] */ DWORD dwRecordIndex,
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *QueryServiceGatewayInfo )( 
            IPMT * This,
            /* [out] */ DSMCC_ELEMENT **ppDSMCCList,
            /* [out] */ UINT *puiCount);
        
        HRESULT ( STDMETHODCALLTYPE *QueryMPEInfo )( 
            IPMT * This,
            /* [out] */ MPE_ELEMENT **ppMPEList,
            /* [out] */ UINT *puiCount);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForNextTable )( 
            IPMT * This,
            /* [in] */ HANDLE hNextTableAvailable);
        
        HRESULT ( STDMETHODCALLTYPE *GetNextTable )( 
            IPMT * This,
            /* [out] */ IPMT **ppPMT);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForWhenCurrent )( 
            IPMT * This,
            /* [in] */ HANDLE hNextTableIsCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertNextToCurrent )( 
            IPMT * This);
        
        END_INTERFACE
    } IPMTVtbl;

    interface IPMT
    {
        CONST_VTBL struct IPMTVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPMT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IPMT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IPMT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IPMT_Initialize(This,pSectionList,pMPEGData)	\
    ( (This)->lpVtbl -> Initialize(This,pSectionList,pMPEGData) ) 

#define IPMT_GetProgramNumber(This,pwVal)	\
    ( (This)->lpVtbl -> GetProgramNumber(This,pwVal) ) 

#define IPMT_GetVersionNumber(This,pbVal)	\
    ( (This)->lpVtbl -> GetVersionNumber(This,pbVal) ) 

#define IPMT_GetPcrPid(This,pPidVal)	\
    ( (This)->lpVtbl -> GetPcrPid(This,pPidVal) ) 

#define IPMT_GetCountOfTableDescriptors(This,pdwVal)	\
    ( (This)->lpVtbl -> GetCountOfTableDescriptors(This,pdwVal) ) 

#define IPMT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) ) 

#define IPMT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) ) 

#define IPMT_GetCountOfRecords(This,pwVal)	\
    ( (This)->lpVtbl -> GetCountOfRecords(This,pwVal) ) 

#define IPMT_GetRecordStreamType(This,dwRecordIndex,pbVal)	\
    ( (This)->lpVtbl -> GetRecordStreamType(This,dwRecordIndex,pbVal) ) 

#define IPMT_GetRecordElementaryPid(This,dwRecordIndex,pPidVal)	\
    ( (This)->lpVtbl -> GetRecordElementaryPid(This,dwRecordIndex,pPidVal) ) 

#define IPMT_GetRecordCountOfDescriptors(This,dwRecordIndex,pdwVal)	\
    ( (This)->lpVtbl -> GetRecordCountOfDescriptors(This,dwRecordIndex,pdwVal) ) 

#define IPMT_GetRecordDescriptorByIndex(This,dwRecordIndex,dwDescIndex,ppDescriptor)	\
    ( (This)->lpVtbl -> GetRecordDescriptorByIndex(This,dwRecordIndex,dwDescIndex,ppDescriptor) ) 

#define IPMT_GetRecordDescriptorByTag(This,dwRecordIndex,bTag,pdwCookie,ppDescriptor)	\
    ( (This)->lpVtbl -> GetRecordDescriptorByTag(This,dwRecordIndex,bTag,pdwCookie,ppDescriptor) ) 

#define IPMT_QueryServiceGatewayInfo(This,ppDSMCCList,puiCount)	\
    ( (This)->lpVtbl -> QueryServiceGatewayInfo(This,ppDSMCCList,puiCount) ) 

#define IPMT_QueryMPEInfo(This,ppMPEList,puiCount)	\
    ( (This)->lpVtbl -> QueryMPEInfo(This,ppMPEList,puiCount) ) 

#define IPMT_RegisterForNextTable(This,hNextTableAvailable)	\
    ( (This)->lpVtbl -> RegisterForNextTable(This,hNextTableAvailable) ) 

#define IPMT_GetNextTable(This,ppPMT)	\
    ( (This)->lpVtbl -> GetNextTable(This,ppPMT) ) 

#define IPMT_RegisterForWhenCurrent(This,hNextTableIsCurrent)	\
    ( (This)->lpVtbl -> RegisterForWhenCurrent(This,hNextTableIsCurrent) ) 

#define IPMT_ConvertNextToCurrent(This)	\
    ( (This)->lpVtbl -> ConvertNextToCurrent(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IPMT_INTERFACE_DEFINED__ */


#ifndef __ITSDT_INTERFACE_DEFINED__
#define __ITSDT_INTERFACE_DEFINED__

/* interface ITSDT */
/* [unique][uuid][local][object] */ 


EXTERN_C const IID IID_ITSDT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("D19BDB43-405B-4a7c-A791-C89110C33165")
    ITSDT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVersionNumber( 
            /* [out] */ BYTE *pbVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCountOfTableDescriptors( 
            /* [out] */ DWORD *pdwVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByIndex( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTableDescriptorByTag( 
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForNextTable( 
            /* [in] */ HANDLE hNextTableAvailable) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNextTable( 
            /* [out] */ ITSDT **ppTSDT) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RegisterForWhenCurrent( 
            /* [in] */ HANDLE hNextTableIsCurrent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertNextToCurrent( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ITSDTVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            ITSDT * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            ITSDT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            ITSDT * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            ITSDT * This,
            /* [in] */ ISectionList *pSectionList,
            /* [in] */ IMpeg2Data *pMPEGData);
        
        HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )( 
            ITSDT * This,
            /* [out] */ BYTE *pbVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetCountOfTableDescriptors )( 
            ITSDT * This,
            /* [out] */ DWORD *pdwVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByIndex )( 
            ITSDT * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *GetTableDescriptorByTag )( 
            ITSDT * This,
            /* [in] */ BYTE bTag,
            /* [out][in] */ DWORD *pdwCookie,
            /* [out] */ IGenericDescriptor **ppDescriptor);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForNextTable )( 
            ITSDT * This,
            /* [in] */ HANDLE hNextTableAvailable);
        
        HRESULT ( STDMETHODCALLTYPE *GetNextTable )( 
            ITSDT * This,
            /* [out] */ ITSDT **ppTSDT);
        
        HRESULT ( STDMETHODCALLTYPE *RegisterForWhenCurrent )( 
            ITSDT * This,
            /* [in] */ HANDLE hNextTableIsCurrent);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertNextToCurrent )( 
            ITSDT * This);
        
        END_INTERFACE
    } ITSDTVtbl;

    interface ITSDT
    {
        CONST_VTBL struct ITSDTVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ITSDT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define ITSDT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define ITSDT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define ITSDT_Initialize(This,pSectionList,pMPEGData)	\
    ( (This)->lpVtbl -> Initialize(This,pSectionList,pMPEGData) ) 

#define ITSDT_GetVersionNumber(This,pbVal)	\
    ( (This)->lpVtbl -> GetVersionNumber(This,pbVal) ) 

#define ITSDT_GetCountOfTableDescriptors(This,pdwVal)	\
    ( (This)->lpVtbl -> GetCountOfTableDescriptors(This,pdwVal) ) 

#define ITSDT_GetTableDescriptorByIndex(This,dwIndex,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByIndex(This,dwIndex,ppDescriptor) ) 

#define ITSDT_GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor)	\
    ( (This)->lpVtbl -> GetTableDescriptorByTag(This,bTag,pdwCookie,ppDescriptor) ) 

#define ITSDT_RegisterForNextTable(This,hNextTableAvailable)	\
    ( (This)->lpVtbl -> RegisterForNextTable(This,hNextTableAvailable) ) 

#define ITSDT_GetNextTable(This,ppTSDT)	\
    ( (This)->lpVtbl -> GetNextTable(This,ppTSDT) ) 

#define ITSDT_RegisterForWhenCurrent(This,hNextTableIsCurrent)	\
    ( (This)->lpVtbl -> RegisterForWhenCurrent(This,hNextTableIsCurrent) ) 

#define ITSDT_ConvertNextToCurrent(This)	\
    ( (This)->lpVtbl -> ConvertNextToCurrent(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __ITSDT_INTERFACE_DEFINED__ */


#ifndef __IPSITables_INTERFACE_DEFINED__
#define __IPSITables_INTERFACE_DEFINED__

/* interface IPSITables */
/* [unique][uuid][object] */ 


EXTERN_C const IID IID_IPSITables;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("919F24C5-7B14-42ac-A4B0-2AE08DAF00AC")
    IPSITables : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetTable( 
            /* [in] */ DWORD dwTSID,
            /* [in] */ DWORD dwTID_PID,
            /* [in] */ DWORD dwHashedVer,
            /* [in] */ DWORD dwPara4,
            /* [out] */ __RPC__deref_out_opt IUnknown **ppIUnknown) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IPSITablesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IPSITables * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IPSITables * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IPSITables * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTable )( 
            __RPC__in IPSITables * This,
            /* [in] */ DWORD dwTSID,
            /* [in] */ DWORD dwTID_PID,
            /* [in] */ DWORD dwHashedVer,
            /* [in] */ DWORD dwPara4,
            /* [out] */ __RPC__deref_out_opt IUnknown **ppIUnknown);
        
        END_INTERFACE
    } IPSITablesVtbl;

    interface IPSITables
    {
        CONST_VTBL struct IPSITablesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IPSITables_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IPSITables_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IPSITables_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IPSITables_GetTable(This,dwTSID,dwTID_PID,dwHashedVer,dwPara4,ppIUnknown)	\
    ( (This)->lpVtbl -> GetTable(This,dwTSID,dwTID_PID,dwHashedVer,dwPara4,ppIUnknown) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IPSITables_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



