// // Copyright (c) Microsoft Corporation. All rights reserved. // // Module Name: // // DvbSiParser.idl // // Abstract: // // Interface definitions for the DVB/ISDB SI parsing functionality // // Notes: // // This IDL file is not meant to be built independently, but to be // included in a master IDL file with a unique coclass defined for // IDvbSiParser. No coclasses need to be defined for the other // interfaces. See DTVParse.idl for an example. // ///////////////////////////////////////////////////////////////////////////// #ifndef AM_LOCAL #define AM_LOCAL local, #define AM_ANNOTATION(_x_) ,annotation(_x_) #endif import "oaidl.idl"; import "ocidl.idl"; import "wtypes.idl"; import "mpeg2structs.idl"; import "mpeg2data.idl"; import "mpeg2psiparser.idl"; // String conversion mode parameter typedef enum { STRCONV_MODE_DVB = 0, STRCONV_MODE_DVB_EMPHASIS, STRCONV_MODE_DVB_WITHOUT_EMPHASIS, STRCONV_MODE_ISDB, } DVB_STRCONV_MODE; // Forward interface declarations interface IPAT; interface ICAT; interface IPMT; interface ITSDT; interface IDVB_NIT; interface IDVB_SDT; interface IISDB_SDT; interface IDVB_EIT; interface IDVB_EIT2; interface IDVB_BAT; interface IDVB_RST; interface IDVB_ST; interface IDVB_TDT; interface IDVB_TOT; interface IDVB_DIT; interface IDVB_SIT; interface IISDB_BIT; interface IISDB_NBIT; interface IISDB_LDT; interface IISDB_SDTT; interface IISDB_CDT; interface IISDB_EMM; //////////////////////////////////// // // IDvbSiParser Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(B758A7BD-14DC-449d-B828-35909ACB3B1E), pointer_default(unique) ] interface IDvbSiParser : IUnknown { HRESULT Initialize([in] IUnknown * punkMpeg2Data); HRESULT GetPAT([out] IPAT ** ppPAT); HRESULT GetCAT([in] DWORD dwTimeout, [out] ICAT ** ppCAT); HRESULT GetPMT([in] PID pid, [in AM_ANNOTATION("__in_opt")] WORD * pwProgramNumber, [out] IPMT ** ppPMT); HRESULT GetTSDT([out] ITSDT ** ppTSDT); HRESULT GetNIT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwNetworkId, [out] IDVB_NIT ** ppNIT); HRESULT GetSDT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwTransportStreamId, [out] IDVB_SDT ** ppSDT); HRESULT GetEIT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwServiceId, [out] IDVB_EIT ** ppEIT); HRESULT GetBAT([in AM_ANNOTATION("__in_opt")] WORD * pwBouquetId, [out] IDVB_BAT ** ppBAT); HRESULT GetRST([in] DWORD dwTimeout, [out] IDVB_RST ** ppRST); HRESULT GetST([in] PID pid, [in] DWORD dwTimeout, [out] IDVB_ST ** ppST); HRESULT GetTDT([out] IDVB_TDT ** ppTDT); HRESULT GetTOT([out] IDVB_TOT ** ppTOT); HRESULT GetDIT([in] DWORD dwTimeout, [out] IDVB_DIT ** ppDIT); HRESULT GetSIT([in] DWORD dwTimeout, [out] IDVB_SIT ** ppSIT); }; //////////////////////////////////// // // IDvbSiParser2 Interface // // Note: // When this interface is updated, // update also the corresponding // inherited IIsdbSiParserX. // //////////////////////////////////// [ AM_LOCAL object, uuid(0AC5525F-F816-42F4-93BA-4C0F32F46E54), pointer_default(unique) ] interface IDvbSiParser2 : IDvbSiParser { HRESULT GetEIT2([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwServiceId, [in AM_ANNOTATION("__in_opt")] BYTE * pbSegment, [out] IDVB_EIT2 ** ppEIT); }; //////////////////////////////////// // // IIsdbSiParser2 Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(900E4BB7-18CD-453F-98BE-3BE6AA211772), pointer_default(unique) ] interface IIsdbSiParser2 : IDvbSiParser2 { HRESULT GetSDT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwTransportStreamId, [out] IISDB_SDT ** ppSDT); HRESULT GetBIT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwOriginalNetworkId, [out] IISDB_BIT ** ppBIT); HRESULT GetNBIT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwOriginalNetworkId, [out] IISDB_NBIT ** ppNBIT); HRESULT GetLDT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwOriginalServiceId, [out] IISDB_LDT ** ppLDT); HRESULT GetSDTT([in] TID tableId, [in AM_ANNOTATION("__in_opt")] WORD * pwTableIdExt, [out] IISDB_SDTT ** ppSDTT); HRESULT GetCDT([in] TID tableId, [in] BYTE bSectionNumber, [in AM_ANNOTATION("__in_opt")] WORD * pwDownloadDataId, [out] IISDB_CDT ** ppCDT); HRESULT GetEMM([in] PID pid, [in] WORD wTableIdExt, [out] IISDB_EMM ** ppEMM); }; //////////////////////////////////// // // IDVB_NIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(C64935F4-29E4-4e22-911A-63F7F55CB097), pointer_default(unique) ] interface IDVB_NIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetNetworkId([out] WORD * pwVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordTransportStreamId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordOriginalNetworkId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable); HRESULT GetNextTable([out] IDVB_NIT ** ppNIT); HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent); HRESULT ConvertNextToCurrent(void); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IDVB_SDT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(02CAD8D3-FE43-48e2-90BD-450ED9A8A5FD), pointer_default(unique) ] interface IDVB_SDT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetTransportStreamId([out] WORD * pwVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordServiceId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordEITScheduleFlag([in] DWORD dwRecordIndex, [out] BOOL * pfVal); HRESULT GetRecordEITPresentFollowingFlag([in] DWORD dwRecordIndex, [out] BOOL * pfVal); HRESULT GetRecordRunningStatus([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordFreeCAMode([in] DWORD dwRecordIndex, [out] BOOL * pfVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable); HRESULT GetNextTable([out] IDVB_SDT ** ppSDT); HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent); HRESULT ConvertNextToCurrent(void); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_SDT Interface // Support user_defined_flags field // //////////////////////////////////// [ AM_LOCAL object, uuid(3F3DC9A2-BB32-4FB9-AE9E-D856848927A3), pointer_default(unique) ] interface IISDB_SDT : IDVB_SDT // Additional field for ISDB { HRESULT GetRecordEITUserDefinedFlags([in] DWORD dwRecordIndex, [out] BYTE * pbVal); } //////////////////////////////////// // // IDVB_EIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(442DB029-02CB-4495-8B92-1C13375BCE99), pointer_default(unique) ] interface IDVB_EIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetServiceId([out] WORD * pwVal); HRESULT GetTransportStreamId([out] WORD * pwVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetSegmentLastSectionNumber([out] BYTE * pbVal); HRESULT GetLastTableId([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordEventId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordStartTime([in] DWORD dwRecordIndex, [out] MPEG_DATE_AND_TIME * pmdtVal); HRESULT GetRecordDuration([in] DWORD dwRecordIndex, [out] MPEG_DURATION * pmdVal); HRESULT GetRecordRunningStatus([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordFreeCAMode([in] DWORD dwRecordIndex, [out] BOOL * pfVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable); HRESULT GetNextTable([out] IDVB_EIT ** ppEIT); HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent); HRESULT ConvertNextToCurrent(void); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IDVB_EIT2 Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(61A389E0-9B9E-4ba0-AEEA-5DDD159820EA), pointer_default(unique) ] interface IDVB_EIT2 : IDVB_EIT { HRESULT GetSegmentInfo([out] BYTE * pbTid, [out] BYTE * pbSegment); HRESULT GetRecordSection([in] DWORD dwRecordIndex, [out] BYTE * pbVal); }; //////////////////////////////////// // // IDVB_BAT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(ECE9BB0C-43B6-4558-A0EC-1812C34CD6CA), pointer_default(unique) ] interface IDVB_BAT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetBouquetId([out] WORD * pwVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [in] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordTransportStreamId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordOriginalNetworkId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable); HRESULT GetNextTable([out] IDVB_BAT ** ppBAT); HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent); HRESULT ConvertNextToCurrent(void); }; //////////////////////////////////// // // IDVB_RST Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(F47DCD04-1E23-4fb7-9F96-B40EEAD10B2B), pointer_default(unique) ] interface IDVB_RST : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordTransportStreamId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordOriginalNetworkId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordServiceId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordEventId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordRunningStatus([in] DWORD dwRecordIndex, [out] BYTE * pbVal); }; //////////////////////////////////// // // IDVB_ST Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(4D5B9F23-2A02-45de-BCDA-5D5DBFBFBE62), pointer_default(unique) ] interface IDVB_ST : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList); HRESULT GetDataLength([out] WORD * pwVal); HRESULT GetData([out] BYTE ** ppData); }; //////////////////////////////////// // // IDVB_TDT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(0780DC7D-D55C-4aef-97E6-6B75906E2796), pointer_default(unique) ] interface IDVB_TDT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList); HRESULT GetUTCTime([out] MPEG_DATE_AND_TIME * pmdtVal); }; //////////////////////////////////// // // IDVB_TOT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(83295D6A-FABA-4ee1-9B15-8067696910AE), pointer_default(unique) ] interface IDVB_TOT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList); HRESULT GetUTCTime([out] MPEG_DATE_AND_TIME * pmdtVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); }; //////////////////////////////////// // // IDVB_DIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(91BFFDF9-9432-410f-86EF-1C228ED0AD70), pointer_default(unique) ] interface IDVB_DIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList); HRESULT GetTransitionFlag([out] BOOL * pfVal); }; //////////////////////////////////// // // IDVB_SIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(68CDCE53-8BEA-45c2-9D9D-ACF575A089B5), pointer_default(unique) ] interface IDVB_SIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordServiceId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordRunningStatus([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT RegisterForNextTable([in] HANDLE hNextTableAvailable); HRESULT GetNextTable([in] DWORD dwTimeout, [out] IDVB_SIT ** ppSIT); HRESULT RegisterForWhenCurrent([in] HANDLE hNextTableIsCurrent); HRESULT ConvertNextToCurrent(void); }; //////////////////////////////////// // // IISDB_BIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(537CD71E-0E46-4173-9001-BA043F3E49E2), pointer_default(unique) ] interface IISDB_BIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetBroadcastViewPropriety([out] BYTE * pbVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordBroadcasterId([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in,out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_NBIT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(1B1863EF-08F1-40B7-A559-3B1EFF8CAFA6), pointer_default(unique) ] interface IISDB_NBIT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordInformationId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordInformationType([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordDescriptionBodyLocation([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordMessageSectionNumber([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordUserDefined([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordNumberOfKeys([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordKeys([in] DWORD dwRecordIndex, [out] BYTE ** pbKeys); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_LDT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(141A546B-02FF-4FB9-A3A3-2F074B74A9A9), pointer_default(unique) ] interface IISDB_LDT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetOriginalServiceId([out] WORD * pwVal); HRESULT GetTransportStreamId([out] WORD * pwVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordDescriptionId([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_SDTT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(EE60EF2D-813A-4DC7-BF92-EA13DAC85313), pointer_default(unique) ] interface IISDB_SDTT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetTableIdExt([out] WORD * pwVal); HRESULT GetTransportStreamId([out] WORD * pwVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetServiceId([out] WORD * pwVal); HRESULT GetCountOfRecords([out] DWORD * pdwVal); HRESULT GetRecordGroup([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordTargetVersion([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordNewVersion([in] DWORD dwRecordIndex, [out] WORD * pwVal); HRESULT GetRecordDownloadLevel([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordVersionIndicator([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordScheduleTimeShiftInformation([in] DWORD dwRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordCountOfSchedules([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordStartTimeByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] MPEG_DATE_AND_TIME * pmdtVal); HRESULT GetRecordDurationByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] MPEG_DURATION * pmdVal); HRESULT GetRecordCountOfDescriptors([in] DWORD dwRecordIndex, [out] DWORD * pdwVal); HRESULT GetRecordDescriptorByIndex([in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetRecordDescriptorByTag([in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_CDT Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(25FA92C2-8B80-4787-A841-3A0E8F17984B), pointer_default(unique) ] interface IISDB_CDT : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData, [in] BYTE bSectionNumber); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetDownloadDataId([out] WORD * pwVal); HRESULT GetSectionNumber([out] BYTE * pbVal); HRESULT GetOriginalNetworkId([out] WORD * pwVal); HRESULT GetDataType([out] BYTE * pbVal); HRESULT GetCountOfTableDescriptors([out] DWORD * pdwVal); HRESULT GetTableDescriptorByIndex([in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetTableDescriptorByTag([in] BYTE bTag, [in, out, AM_ANNOTATION("__inout_opt")] DWORD * pdwCookie, [out] IGenericDescriptor ** ppDescriptor); HRESULT GetSizeOfDataModule([out] DWORD * pdwVal); HRESULT GetDataModule([out] BYTE ** pbData); HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IISDB_EMM Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(0EDB556D-43AD-4938-9668-321B2FFECFD3), pointer_default(unique) ] interface IISDB_EMM : IUnknown { HRESULT Initialize([in] ISectionList * pSectionList, [in] IMpeg2Data * pMPEGData); HRESULT GetVersionNumber([out] BYTE * pbVal); HRESULT GetTableIdExtension([out] WORD * pwVal); HRESULT GetDataBytes( [in, out] WORD * pwBufferLength, // retuen reqired buffer length if pbBuffer is null. [out] BYTE * pbBuffer ); HRESULT GetSharedEmmMessage( /*[out]*/ WORD * pwLength, /*[out]*/ BYTE ** ppbMessage); // If this method succeeds, the client must release by CoTaskMemFree HRESULT GetIndividualEmmMessage( /*[in]*/ IUnknown * pUnknown, /*[out]*/ WORD * pwLength, /*[out]*/ BYTE ** ppbMessage); // If this method succeeds, the client must release by CoTaskMemFree HRESULT GetVersionHash([out] DWORD * pdwVersionHash); }; //////////////////////////////////// // // IDvbServiceAttributeDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(0F37BD92-D6A1-4854-B950-3A969D27F30E), pointer_default(unique) ] interface IDvbServiceAttributeDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordServiceId([in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetRecordNumericSelectionFlag([in] BYTE bRecordIndex, [out] BOOL * pfVal); HRESULT GetRecordVisibleServiceFlag([in] BYTE bRecordIndex, [out] BOOL * pfVal); }; //////////////////////////////////// // // IDvbContentIdentifierDescriptor Interface // //////////////////////////////////// typedef enum { CRID_LOCATION_IN_DESCRIPTOR = 0x0, CRID_LOCATION_IN_CIT = 0x1, CRID_LOCATION_DVB_RESERVED1 = 0x2, CRID_LOCATION_DVB_RESERVED2 = 0x3, } CRID_LOCATION; [ AM_LOCAL object, uuid(05E0C1EA-F661-4053-9FBF-D93B28359838), pointer_default(unique) ] interface IDvbContentIdentifierDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordCrid([in] BYTE bRecordIndex, [out] BYTE * pbType, [out] BYTE * pbLocation, [out] BYTE * pbLength, [out, size_is( , *pbLength)] BYTE ** ppbBytes); }; //////////////////////////////////// // // IDvbDefaultAuthorityDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(05EC24D1-3A31-44e7-B408-67C60A352276), pointer_default(unique) ] interface IDvbDefaultAuthorityDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetDefaultAuthority([out] BYTE * pbLength, [out, size_is( , *pbLength)] BYTE ** ppbBytes); }; //////////////////////////////////// // // IDvbSatelliteDeliverySystemDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(02F2225A-805B-4ec5-A9A6-F9B5913CD470), pointer_default(unique) ] interface IDvbSatelliteDeliverySystemDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetFrequency([out] DWORD * pdwVal); HRESULT GetOrbitalPosition([out] WORD * pwVal); HRESULT GetWestEastFlag([out] BYTE * pbVal); HRESULT GetPolarization([out] BYTE * pbVal); HRESULT GetModulation([out] BYTE * pbVal); HRESULT GetSymbolRate([out] DWORD * pdwVal); HRESULT GetFECInner([out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbCableDeliverySystemDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(DFB98E36-9E1A-4862-9946-993A4E59017B), pointer_default(unique) ] interface IDvbCableDeliverySystemDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetFrequency([out] DWORD * pdwVal); HRESULT GetFECOuter([out] BYTE * pbVal); HRESULT GetModulation([out] BYTE * pbVal); HRESULT GetSymbolRate([out] DWORD * pdwVal); HRESULT GetFECInner([out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbTerrestrialDeliverySystemDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(ED7E1B91-D12E-420c-B41D-A49D84FE1823), pointer_default(unique) ] interface IDvbTerrestrialDeliverySystemDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCentreFrequency([out] DWORD * pdwVal); HRESULT GetBandwidth([out] BYTE * pbVal); HRESULT GetConstellation([out] BYTE * pbVal); HRESULT GetHierarchyInformation([out] BYTE * pbVal); HRESULT GetCodeRateHPStream([out] BYTE * pbVal); HRESULT GetCodeRateLPStream([out] BYTE * pbVal); HRESULT GetGuardInterval([out] BYTE * pbVal); HRESULT GetTransmissionMode([out] BYTE * pbVal); HRESULT GetOtherFrequencyFlag([out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbTerrestrial2DeliverySystemDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(20EE9BE9-CD57-49ab-8F6E-1D07AEB8E482), pointer_default(unique) ] interface IDvbTerrestrial2DeliverySystemDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetTagExtension([out] BYTE * pbVal); HRESULT GetCentreFrequency([out] DWORD * pdwVal); HRESULT GetPLPId([out] BYTE * pbVal); HRESULT GetT2SystemId([out] WORD * pwVal); HRESULT GetMultipleInputMode([out] BYTE * pbVal); HRESULT GetBandwidth([out] BYTE * pbVal); HRESULT GetGuardInterval([out] BYTE * pbVal); HRESULT GetTransmissionMode([out] BYTE * pbVal); HRESULT GetCellId([out] WORD * pwVal); HRESULT GetOtherFrequencyFlag([out] BYTE * pbVal); HRESULT GetTFSFlag([out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbFrequencyListDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(1CADB613-E1DD-4512-AFA8-BB7A007EF8B1), pointer_default(unique) ] interface IDvbFrequencyListDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCodingType([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordCentreFrequency([in] BYTE bRecordIndex, [out] DWORD * pdwVal); }; //////////////////////////////////// // // IDvbPrivateDataSpecifierDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(5660A019-E75A-4b82-9B4C-ED2256D165A2), pointer_default(unique) ] interface IDvbPrivateDataSpecifierDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetPrivateDataSpecifier([out] DWORD * pdwVal); }; //////////////////////////////////// // // IDvbLogicalChannelDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(CF1EDAFF-3FFD-4cf7-8201-35756ACBF85F), pointer_default(unique) ] interface IDvbLogicalChannelDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordServiceId([in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetRecordLogicalChannelNumber([in] BYTE bRecordIndex, [out] WORD * pwVal); }; //////////////////////////////////// // // IDvbLogicalChannelDescriptor2 Interface. // // Extension to the IDvbLogicalChannelDescriptor // interface to also return channel visibility // //////////////////////////////////// [ AM_LOCAL object, uuid(43ACA974-4BE8-4b98-BC17-9EAFD788B1D7), pointer_default(unique) ] interface IDvbLogicalChannelDescriptor2 : IDvbLogicalChannelDescriptor { HRESULT GetRecordLogicalChannelAndVisibility([in] BYTE bRecordIndex, [out] WORD * pwVal); }; //////////////////////////////////// // // IDvbLogicalChannel2Descriptor Interface // // Extension to the IDvbLogicalChannelDescriptor2 to implement fields // available in version 2 of the DVB Logical Channel descriptor. // //////////////////////////////////// [ AM_LOCAL object, uuid(F69C3747-8A30-4980-998C-01FE7F0BA35A), pointer_default(unique) ] interface IDvbLogicalChannel2Descriptor : IDvbLogicalChannelDescriptor2 { HRESULT GetCountOfLists([out] BYTE * pbVal); HRESULT GetListId([in] BYTE bListIndex, [out] BYTE * pbVal); HRESULT GetListNameW([in] BYTE bListIndex, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); HRESULT GetListCountryCode([in] BYTE bListIndex, [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode); HRESULT GetListCountOfRecords([in] BYTE bChannelListIndex, [out] BYTE * pbVal); HRESULT GetListRecordServiceId([in] BYTE bListIndex, [in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetListRecordLogicalChannelNumber([in] BYTE bListIndex, [in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetListRecordLogicalChannelAndVisibility([in] BYTE bListIndex, [in] BYTE bRecordIndex, [out] WORD * pwVal); }; //////////////////////////////////// // // IDvbHDSimulcastLogicalChannelDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(1EA8B738-A307-4680-9E26-D0A908C824F4), pointer_default(unique) ] interface IDvbHDSimulcastLogicalChannelDescriptor : IDvbLogicalChannelDescriptor2 { // Identical to IDvbLogicalChannelDescriptor2 }; //////////////////////////////////// // // IDvbDataBroadcastIDDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(5F26F518-65C8-4048-91F2-9290F59F7B90), pointer_default(unique) ] interface IDvbDataBroadcastIDDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetDataBroadcastID([out] WORD * pwVal); HRESULT GetIDSelectorBytes([in, out] BYTE * pbLen, [out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbDataBroadcastDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(D1EBC1D6-8B60-4c20-9CAF-E59382E7C400), pointer_default(unique) ] interface IDvbDataBroadcastDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetDataBroadcastID([out] WORD * pwVal); HRESULT GetComponentTag([out] BYTE * pbVal); HRESULT GetSelectorLength([out] BYTE * pbVal); HRESULT GetSelectorBytes([in, out] BYTE *pbLen, [out] BYTE * pbVal); HRESULT GetLangID([out] ULONG * pulVal); HRESULT GetTextLength([out] BYTE * pbVal); HRESULT GetText([in, out] BYTE *pbLen, [out] BYTE * pbVal); }; typedef enum { DESC_LINKAGE_RESERVED0 = 0x00, DESC_LINKAGE_INFORMATION, DESC_LINKAGE_EPG, DESC_LINKAGE_CA_REPLACEMENT, DESC_LINKAGE_COMPLETE_NET_BOUQUET_SI, DESC_LINKAGE_REPLACEMENT, DESC_LINKAGE_DATA, DESC_LINKAGE_RESERVED1 = 0x07, DESC_LINKAGE_USER = 0x08, DESC_LINKAGE_RESERVED2 = 0xFF } DESC_LINKAGE_TYPE; //////////////////////////////////// // // IDvbLinkageDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(1CDF8B31-994A-46fc-ACFD-6A6BE8934DD5), pointer_default(unique) ] interface IDvbLinkageDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetTSId([out] WORD * pwVal); HRESULT GetONId([out] WORD * pwVal); HRESULT GetServiceId([out] WORD * pwVal); HRESULT GetLinkageType([out] BYTE * pbVal); HRESULT GetPrivateDataLength([out] BYTE * pbVal); HRESULT GetPrivateData([in, out] BYTE *pbLen, [out] BYTE * pbData); }; //////////////////////////////////// // // IDvbTeletextDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(9CD29D47-69C6-4f92-98A9-210AF1B7303A), pointer_default(unique) ] interface IDvbTeletextDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordLangId([in] BYTE bRecordIndex, [out] ULONG * pulVal); HRESULT GetRecordTeletextType([in] BYTE bRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordMagazineNumber([in] BYTE bRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordPageNumber([in] BYTE bRecordIndex, [out] BYTE * pbVal); }; //////////////////////////////////// // // IDvbSubtitlingDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(9B25FE1D-FA23-4e50-9784-6DF8B26F8A49), pointer_default(unique) ] interface IDvbSubtitlingDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordLangId([in] BYTE bRecordIndex, [out] ULONG * pulVal); HRESULT GetRecordSubtitlingType([in] BYTE bRecordIndex, [out] BYTE * pbVal); HRESULT GetRecordCompositionPageID([in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetRecordAncillaryPageID([in] BYTE bRecordIndex, [out] WORD * pwVal); }; //////////////////////////////////// // // IDvbServiceDescriptor Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(F9C7FBCF-E2D6-464d-B32D-2EF526E49290), pointer_default(unique) ] interface IDvbServiceDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetServiceType([out] BYTE * pbVal); HRESULT GetServiceProviderName([out AM_ANNOTATION("__deref_out")] char ** pszName); HRESULT GetServiceProviderNameW([out AM_ANNOTATION("__deref_out")] BSTR* pbstrName); HRESULT GetServiceName([out AM_ANNOTATION("__deref_out")] char ** pszName); HRESULT GetProcessedServiceName([out] BSTR *pbstrName); HRESULT GetServiceNameEmphasized([out] BSTR *pbstrName); }; //////////////////////////////////// // // IDvbServiceDescriptor2 Interface // Added generic string functions // //////////////////////////////////// [ AM_LOCAL object, uuid(D6C76506-85AB-487C-9B2B-36416511E4A2), pointer_default(unique) ] interface IDvbServiceDescriptor2 : IDvbServiceDescriptor { HRESULT GetServiceProviderNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); HRESULT GetServiceNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); }; //////////////////////////////////// // // IDvbServiceListDescriptor Interface // for DVB/ISDB // //////////////////////////////////// [ AM_LOCAL object, uuid(05DB0D8F-6008-491a-ACD3-7090952707D0), pointer_default(unique) ] interface IDvbServiceListDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordServiceId([in] BYTE bRecordIndex, [out] WORD * pwVal); HRESULT GetRecordServiceType([in] BYTE bRecordIndex, [out] BYTE * pbVal); }; ///////////////////////////////////////////////// // // IDvbMultilingualServiceNameDescriptor Interface // ///////////////////////////////////////////////// [ AM_LOCAL object, uuid(2D80433B-B32C-47ef-987F-E78EBB773E34), pointer_default(unique) ] interface IDvbMultilingualServiceNameDescriptor : IUnknown { HRESULT GetTag([out] BYTE * pbVal); HRESULT GetLength([out] BYTE * pbVal); HRESULT GetCountOfRecords([out] BYTE * pbVal); HRESULT GetRecordLangId ([in] BYTE bRecordIndex, [out] ULONG * ulVal); HRESULT GetRecordServiceProviderNameW( [in] BYTE bRecordIndex, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); HRESULT GetRecordServiceNameW( [in] BYTE bRecordIndex, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); }; /////////////////////////////////////////////////////////// // // IDvbNetworkNameDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(5B2A80CF-35B9-446C-B3E4-048B761DBC51), pointer_default(unique) ] interface IDvbNetworkNameDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetNetworkName( [out AM_ANNOTATION("__deref_out")] char ** pszName ); HRESULT GetNetworkNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName); }; /////////////////////////////////////////////////////////// // // IDvbShortEventDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(B170BE92-5B75-458E-9C6E-B0008231491A), pointer_default(unique) ] interface IDvbShortEventDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetEventNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); }; /////////////////////////////////////////////////////////// // // IDvbExntededEventDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(C9B22ECA-85F4-499F-B1DB-EFA93A91EE57), pointer_default(unique) ] interface IDvbExtendedEventDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetDescriptorNumber( [out] BYTE * pbVal ); HRESULT GetLastDescriptorNumber( [out] BYTE * pbVal ); HRESULT GetLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordItemW( [in] BYTE bRecordIndex, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrDesc, [out] BSTR * pbstrItem ); HRESULT GetConcatenatedItemW( [in] IDvbExtendedEventDescriptor * pFollowingDescriptor, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrDesc, [out] BSTR * pbstrItem ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); HRESULT GetConcatenatedTextW( [in] IDvbExtendedEventDescriptor * FollowingDescriptor, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); HRESULT GetRecordItemRawBytes( [in] BYTE bRecordIndex, [out] BYTE ** ppbRawItem, [out] BYTE * pbItemLength ); }; /////////////////////////////////////////////////////////// // // IDvbComponentDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(91E405CF-80E7-457F-9096-1B9D1CE32141), pointer_default(unique) ] interface IDvbComponentDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetStreamContent( [out] BYTE * pbVal ); HRESULT GetComponentType( [out] BYTE * pbVal ); HRESULT GetComponentTag( [out] BYTE * pbVal ); HRESULT GetLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); }; /////////////////////////////////////////////////////////// // // IDvbContentDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(2E883881-A467-412A-9D63-6F2B6DA05BF0), pointer_default(unique) ] interface IDvbContentDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordContentNibbles( [in] BYTE bRecordIndex, [out] BYTE * pbValLevel1, [out] BYTE * pbValLevel2 ); HRESULT GetRecordUserNibbles( [in] BYTE bRecordIndex, [out] BYTE * pbVal1, [out] BYTE * pbVal2 ); }; /////////////////////////////////////////////////////////// // // IDvbParentalRatingDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(3AD9DDE1-FB1B-4186-937F-22E6B5A72A10), pointer_default(unique) ] interface IDvbParentalRatingDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordRating( [in] BYTE bRecordIndex, [out AM_ANNOTATION("__out_ecount(4)")] char * pszCountryCode, [out] BYTE * pbVal ); }; /////////////////////////////////////////////////////////// // // IIsdbTerrestrialDeliverySystemDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(39FAE0A6-D151-44DD-A28A-765DE5991670), pointer_default(unique) ] interface IIsdbTerrestrialDeliverySystemDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetAreaCode( [out] WORD * pwVal ); HRESULT GetGuardInterval( [out] BYTE * pbVal ); HRESULT GetTransmissionMode( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordFrequency( [in] BYTE bRecordIndex, [out] DWORD * pdwVal ); }; /////////////////////////////////////////////////////////// // // IIsdbTSInformationDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(D7AD183E-38F5-4210-B55F-EC8D601BBD47), pointer_default(unique) ] interface IIsdbTSInformationDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetRemoteControlKeyId( [out] BYTE * pbVal ); HRESULT GetTSNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordTransmissionTypeInfo( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordNumberOfServices( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordServiceIdByIndex( [in] BYTE bRecordIndex, [in] BYTE bServiceIndex, [out] WORD * pdwVal ); }; /////////////////////////////////////////////////////////// // // IIsdbDigitalCopyControlDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(1A28417E-266A-4BB8-A4BD-D782BCFB8161), pointer_default(unique) ] interface IIsdbDigitalCopyControlDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCopyControl( [out] BYTE * pbDigitalRecordingControlData, [out] BYTE * pbCopyControlType, [out] BYTE * pbAPSControlData, [out] BYTE * pbMaximumBitrate ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordCopyControl( [in] BYTE bRecordIndex, [out] BYTE * pbComponentTag, [out] BYTE * pbDigitalRecordingControlData, [out] BYTE * pbCopyControlType, [out] BYTE * pbAPSControlData, [out] BYTE * pbMaximumBitrate ); }; /////////////////////////////////////////////////////////// // // IIsdbAudioComponentDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(679D2002-2425-4BE4-A4C7-D6632A574F4D), pointer_default(unique) ] interface IIsdbAudioComponentDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetStreamContent( [out] BYTE * pbVal ); HRESULT GetComponentType( [out] BYTE * pbVal ); HRESULT GetComponentTag( [out] BYTE * pbVal ); HRESULT GetStreamType( [out] BYTE * pbVal ); HRESULT GetSimulcastGroupTag( [out] BYTE * pbVal ); HRESULT GetESMultiLingualFlag( [out] BOOL * pfVal ); HRESULT GetMainComponentFlag( [out] BOOL * pfVal ); HRESULT GetQualityIndicator( [out] BYTE * pbVal ); HRESULT GetSamplingRate( [out] BYTE * pbVal ); HRESULT GetLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetLanguageCode2( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); }; /////////////////////////////////////////////////////////// // // IIsdbDataContentDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(A428100A-E646-4BD6-AA14-6087BDC08CD5), pointer_default(unique) ] interface IIsdbDataContentDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetDataComponentId( [out] WORD * pwVal ); HRESULT GetEntryComponent( [out] BYTE * pbVal ); HRESULT GetSelectorLength( [out] BYTE * pbVal ); HRESULT GetSelectorBytes( [in] BYTE bBufLength, [out] BYTE * pbBuf ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordComponentRef( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * pszCode ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); }; /////////////////////////////////////////////////////////// // // IIsdbCAContractInformationDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(08E18B25-A28F-4E92-821E-4FCED5CC2291), pointer_default(unique) ] interface IIsdbCAContractInformationDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCASystemId( [out] WORD * pwVal ); HRESULT GetCAUnitId( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordComponentTag( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetContractVerificationInfoLength( [out] BYTE * pbVal ); HRESULT GetContractVerificationInfo( [in] BYTE bBufLength, [out] BYTE * pbBuf ); HRESULT GetFeeNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName ); }; /////////////////////////////////////////////////////////// // // IIsdbEventGroupDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(94B06780-2E2A-44DC-A966-CC56FDABC6C2), pointer_default(unique) ] interface IIsdbEventGroupDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetGroupType( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordEvent( [in] BYTE bRecordIndex, [out] WORD * pwServiceId, [out] WORD * pwEventId ); HRESULT GetCountOfRefRecords( [out] BYTE * pbVal ); HRESULT GetRefRecordEvent( [in] BYTE bRecordIndex, [out] WORD * pwOriginalNetworkId, [out] WORD * pwTransportStreamId, [out] WORD * pwServiceId, [out] WORD * pwEventId ); }; /////////////////////////////////////////////////////////// // // IIsdbComponentGroupDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(A494F17F-C592-47D8-8943-64C9A34BE7B9), pointer_default(unique) ] interface IIsdbComponentGroupDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetComponentGroupType( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetRecordGroupId( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordNumberOfCAUnit( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordCAUnitCAUnitId( [in] BYTE bRecordIndex, [in] BYTE bCAUnitIndex, [out] BYTE * pbVal ); HRESULT GetRecordCAUnitNumberOfComponents( [in] BYTE bRecordIndex, [in] BYTE bCAUnitIndex, [out] BYTE * pbVal ); HRESULT GetRecordCAUnitComponentTag( [in] BYTE bRecordIndex, [in] BYTE bCAUnitIndex, [in] BYTE bComponentIndex, [out] BYTE * pbVal ); HRESULT GetRecordTotalBitRate( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordTextW( [in] BYTE bRecordIndex, [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrText ); }; /////////////////////////////////////////////////////////// // // IIsdbSeriesDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(07EF6370-1660-4F26-87FC-614ADAB24B11), pointer_default(unique) ] interface IIsdbSeriesDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetSeriesId( [out] WORD * pwVal ); HRESULT GetRepeatLabel( [out] BYTE * pbVal ); HRESULT GetProgramPattern( [out] BYTE * pbVal ); HRESULT GetExpireDate( [out] BOOL * pfValid, [out] MPEG_DATE_AND_TIME * pmdtVal ); HRESULT GetEpisodeNumber( [out] WORD * pwVal ); HRESULT GetLastEpisodeNumber( [out] WORD * pwVal ); HRESULT GetSeriesNameW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName ); }; /////////////////////////////////////////////////////////// // // IIsdbDownloadContentDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(5298661E-CB88-4F5F-A1DE-5F440C185B92), pointer_default(unique) ] interface IIsdbDownloadContentDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetFlags( [out] BOOL * pfReboot, [out] BOOL * pfAddOn, [out] BOOL * pfCompatibility, [out] BOOL * pfModuleInfo, [out] BOOL * pfTextInfo ); HRESULT GetComponentSize( [out] DWORD * pdwVal ); HRESULT GetDownloadId( [out] DWORD * pdwVal ); HRESULT GetTimeOutValueDII( [out] DWORD * pdwVal ); HRESULT GetLeakRate( [out] DWORD * pdwVal ); HRESULT GetComponentTag( [out] BYTE * pbVal ); HRESULT GetCompatiblityDescriptorLength( [out] WORD * pwLength ); HRESULT GetCompatiblityDescriptor( [out] BYTE ** ppbData ); HRESULT GetCountOfRecords( [out] WORD * pwVal ); HRESULT GetRecordModuleId( [in] WORD wRecordIndex, [out] WORD * pwVal ); HRESULT GetRecordModuleSize( [in] WORD wRecordIndex, [out] DWORD * pdwVal ); HRESULT GetRecordModuleInfoLength( [in] WORD wRecordIndex, [out] BYTE * pbVal ); HRESULT GetRecordModuleInfo( [in] WORD wRecordIndex, [out] BYTE ** ppbData ); HRESULT GetTextLanguageCode( [out AM_ANNOTATION("__out_ecount(4)")] char * szCode ); HRESULT GetTextW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrName ); }; /////////////////////////////////////////////////////////// // // IIsdbLogoTransmissionDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(E0103F49-4AE1-4F07-9098-756DB1FA88CD), pointer_default(unique) ] interface IIsdbLogoTransmissionDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetLogoTransmissionType( [out] BYTE * pbVal ); HRESULT GetLogoId( [out] WORD * pwVal ); HRESULT GetLogoVersion( [out] WORD * pwVal ); HRESULT GetDownloadDataId( [out] WORD * pwVal ); HRESULT GetLogoCharW( [in] DVB_STRCONV_MODE convMode, [out] BSTR * pbstrChar ); }; /////////////////////////////////////////////////////////// // // IIsdbSIParameterDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(F837DC36-867C-426a-9111-F62093951A45), pointer_default(unique) ] interface IIsdbSIParameterDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetParameterVersion( [out] BYTE * pbVal ); HRESULT GetUpdateTime( [out] MPEG_DATE * pVal ); HRESULT GetRecordNumberOfTable( [out] BYTE * pbVal ); HRESULT GetTableId( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetTableDescriptionLength( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetTableDescriptionBytes( [in] BYTE bRecordIndex, [in, out] BYTE * pbBufferLength, [out] BYTE * pbBuffer ); }; /////////////////////////////////////////////////////////// // // IIsdbEmergencyInformationDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(BA6FA681-B973-4da1-9207-AC3E7F0341EB), pointer_default(unique) ] interface IIsdbEmergencyInformationDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCountOfRecords( [out] BYTE * pbVal ); HRESULT GetServiceId( [in] BYTE bRecordIndex, [out] WORD * pwVal ); HRESULT GetStartEndFlag( [in] BYTE bRecordIndex, [out] BYTE * pVal ); HRESULT GetSignalLevel( [in] BYTE bRecordIndex, [out] BYTE * pbVal ); HRESULT GetAreaCode( [in] BYTE bRecordIndex, [out] WORD ** ppwVal, // Upper 12-bits: area_code [out] BYTE * pbNumAreaCodes ); }; /////////////////////////////////////////////////////////// // // IIsdbCADescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(0570AA47-52BC-42ae-8CA5-969F41E81AEA), pointer_default(unique) ] interface IIsdbCADescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCASystemId( [out] WORD * pwVal ); HRESULT GetReservedBits( [out] BYTE * pbVal ); HRESULT GetCAPID( [out] WORD * pwVal ); HRESULT GetPrivateDataBytes( [in, out] BYTE * pbBufferLength, // retuen reqired buffer length if pbBuffer is null. [out] BYTE * pbBuffer ); }; /////////////////////////////////////////////////////////// // // IIsdbCAServiceDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(39CBEB97-FF0B-42a7-9AB9-7B9CFE70A77A), pointer_default(unique) ] interface IIsdbCAServiceDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetCASystemId( [out] WORD * pwVal ); HRESULT GetCABroadcasterGroupId( [out] BYTE * pbVal ); HRESULT GetMessageControl( [out] BYTE * pbVal ); HRESULT GetServiceIds( [in, out] BYTE * pbNumServiceIds, // retuen reqired number of IDs if pwServiceIds is null. [out] WORD * pwServiceIds ); }; /////////////////////////////////////////////////////////// // // IIsdbHierarchicalTransmissionDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(B7B3AE90-EE0B-446d-8769-F7E2AA266AA6), pointer_default(unique) ] interface IIsdbHierarchicalTransmissionDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] BYTE * pbVal ); HRESULT GetFutureUse1( [out] BYTE * pbVal // 7-bits ); HRESULT GetQualityLevel( [out] BYTE * pbVal // 1-bits ); HRESULT GetFutureUse2( [out] BYTE * pbVal // 3-bits ); HRESULT GetReferencePid( [out] WORD * pwVal // 13-bits ); }; /////////////////////////////////////////////////////////// // // stream_identifier_descriptor // It has only one byte body (component_tag). // We will not define particular interface. // /////////////////////////////////////////////////////////// cpp_quote("#define COMPONENT_TAG_CAPTION_MIN 0x30") cpp_quote("#define COMPONENT_TAG_CAPTION_MAX 0x37") cpp_quote("#define COMPONENT_TAG_SUPERIMPOSE_MIN 0x38") cpp_quote("#define COMPONENT_TAG_SUPERIMPOSE_MAX 0x3F") interface IPBDA_EIT; interface IPBDA_Services; //////////////////////////////////// // // IPBDASiParser Interface // //////////////////////////////////// [ AM_LOCAL object, uuid(9DE49A74-ABA2-4a18-93E1-21F17F95C3C3), pointer_default(unique) ] interface IPBDASiParser : IUnknown { HRESULT Initialize([in] IUnknown * punk ); HRESULT GetEIT([in] DWORD dwSize , [in] BYTE *pBuffer, [out] IPBDA_EIT ** ppEIT ); HRESULT GetServices ([in] DWORD dwSize , [in] const BYTE *pBuffer, [out] IPBDA_Services ** ppServices ); }; //////////////////////////////////// // // IPBDA_EIT Interface // //////////////////////////////////// [ object, local, uuid(A35F2DEA-098F-4ebd-984C-2BD4C3C8CE0A), helpstring("IPBDA_EIT Interface"), pointer_default(unique) ] interface IPBDA_EIT : IUnknown { HRESULT Initialize( [in] DWORD size, [in] [size_is(size)] const BYTE *pBuffer ); /* Table level data */ HRESULT GetTableId( [out] BYTE * pbVal ); HRESULT GetVersionNumber( [out] WORD * pwVal ); HRESULT GetServiceIdx ( [out] ULONG64 * plwVal ); /* Descriptors follow here */ HRESULT GetCountOfRecords( [out] DWORD * pdwVal ); HRESULT GetRecordEventId( [in] DWORD dwRecordIndex, [out] ULONG64 * plwVal ); HRESULT GetRecordStartTime( [in] DWORD dwRecordIndex, [out] MPEG_DATE_AND_TIME * pmdtVal ); HRESULT GetRecordDuration( [in] DWORD dwRecordIndex, [out] MPEG_DURATION * pmdVal ); /* Descriptors follow here */ HRESULT GetRecordCountOfDescriptors( [in] DWORD dwRecordIndex, [out] DWORD * pdwVal ); HRESULT GetRecordDescriptorByIndex( [in] DWORD dwRecordIndex, [in] DWORD dwIndex, [out] IGenericDescriptor ** ppDescriptor ); HRESULT GetRecordDescriptorByTag( [in] DWORD dwRecordIndex, [in] BYTE bTag, [in, out] DWORD * pdwCookie, // OPTIONAL [out] IGenericDescriptor ** ppDescriptor ); }; //////////////////////////////////// // // IPBDA_Services Interface // //////////////////////////////////// [ object, local, uuid(944EAB37-EED4-4850-AFD2-77E7EFEB4427), helpstring("IPBDA_Services Interface"), pointer_default(unique) ] interface IPBDA_Services : IUnknown { HRESULT Initialize( [in] DWORD size, [in] [size_is(size)] BYTE *pBuffer ); HRESULT GetCountOfRecords( [out] DWORD * pdwVal ); HRESULT GetRecordByIndex ( [in] DWORD dwRecordIndex, [out] ULONG64 *pul64ServiceIdx ); }; /////////////////////////////////////////////////////////// // // IPBDAEntitlementDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(22632497-0DE3-4587-AADC-D8D99017E760), pointer_default(unique) ] interface IPBDAEntitlementDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] WORD * pwVal ); HRESULT GetToken ( [out] BYTE ** ppbTokenBuffer, [out] DWORD * pdwTokenLength ); }; /////////////////////////////////////////////////////////// // // IPBDAAttributesDescriptor Interface // /////////////////////////////////////////////////////////// [ AM_LOCAL object, uuid(313B3620-3263-45a6-9533-968BEFBEAC03), pointer_default(unique) ] interface IPBDAAttributesDescriptor : IUnknown { HRESULT GetTag( [out] BYTE * pbVal ); HRESULT GetLength( [out] WORD * pwVal ); HRESULT GetAttributePayload ( [out] BYTE ** ppbAttributeBuffer, [out] DWORD * pdwAttributeLength ); };