JD2022-TU1/main/extern/Camcam/PlatformSDK/Include/encdec.idl

677 lines
23 KiB
Text

// --------------------------------------------------------
// EncDecTag.idl
//
//
// Encrypter-Tagger/DeCrypter-Detagger filter definitions
//
//
// Copyright (c) Microsoft, 2002
// ---------------------------------------------------------
//
// Guide to CLSIDS:
//
// -- 8x Enc/dec Properties
// -- 9x Tag Properties
// -- Ax
// -- Bx IFilter
// -- Cx IFilterEvents
// -- Dx IFilterConfig
// -- Ex
// -- Fx CFilter (coclass)
//
// x = 1 - Encrypter-Tagger
// x = 2 - Decrypter-Detagger
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 2002.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
import "oaidl.idl";
import "ocidl.idl";
import "TvRatings.idl";
cpp_quote ("// {C4C4C4C4-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(SID_DRMSecureServiceChannel,")
cpp_quote ("0xC4C4C4C4, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// -----------------
// filter ClassID's
cpp_quote ("// {C4C4C481-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_ETFilterEncProperties,")
cpp_quote ("0xC4C4C481, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
cpp_quote ("// {C4C4C491-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_ETFilterTagProperties,")
cpp_quote ("0xC4C4C491, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
/* CLSID defined in coclass below
cpp_quote ("// {C4C4C4F1-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_ETFilter,")
cpp_quote ("0xC4C4C4F1, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
*/
cpp_quote ("// {C4C4C482-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_DTFilterEncProperties,")
cpp_quote ("0xC4C4C482, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
cpp_quote ("// {C4C4C492-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_DTFilterTagProperties,")
cpp_quote ("0xC4C4C492, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
/*
cpp_quote ("// {C4C4C4F2-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_DTFilter,")
cpp_quote ("0xC4C4C4F2, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
*/
cpp_quote ("// {C4C4C483-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_XDSCodecProperties,")
cpp_quote ("0xC4C4C483, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
cpp_quote ("// {C4C4C493-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_XDSCodecTagProperties,")
cpp_quote ("0xC4C4C493, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
/*
cpp_quote ("// {C4C4C4F3-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_XDSCodec,")
cpp_quote ("0xC4C4C4F3, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
*/
cpp_quote ("// {C4C4C4FC-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(CLSID_CPCAFiltersCategory,")
cpp_quote ("0xC4C4C4FC, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// broadcast eventID's
// sent by XDSCodec when get a new rating
cpp_quote ("// {C4C4C4E0-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_XDSCodecNewXDSRating,")
cpp_quote ("0xC4C4C4E0, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by XDSCodec when get a duplicate to a current non DontKnow rating
cpp_quote ("// {C4C4C4DF-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_XDSCodecDuplicateXDSRating,")
cpp_quote ("0xC4C4C4DF, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by XDS Codec when get some other XDS packet
cpp_quote ("// {C4C4C4E1-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_XDSCodecNewXDSPacket,")
cpp_quote ("0xC4C4C4E1, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter/Detagger when rating changes
cpp_quote ("// {C4C4C4E2-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterRatingChange,")
cpp_quote ("0xC4C4C4E2, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter/DeTagger when show rating exceeds max allowable
cpp_quote ("// {C4C4C4E3-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterRatingsBlock,")
cpp_quote ("0xC4C4C4E3, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter/DeTagger when show rating drops below max allowable
cpp_quote ("// {C4C4C4E4-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterRatingsUnblock,")
cpp_quote ("0xC4C4C4E4, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter/DeTagger when get new XDS packet
cpp_quote ("// {C4C4C4E5-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterXDSPacket,")
cpp_quote ("0xC4C4C4E5, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter/Tagger when start to encrypt content
cpp_quote ("// {C4C4C4E6-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETFilterEncryptionOn,")
cpp_quote ("0xC4C4C4E6, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter/Tagger when stop encrypting content content
cpp_quote ("// {C4C4C4E7-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETFilterEncryptionOff,")
cpp_quote ("0xC4C4C4E7, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decryptor/Tagger when unblocking COPP block
cpp_quote ("// {C4C4C4E8-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterCOPPUnblock,")
cpp_quote ("0xC4C4C4E8, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter when bad COPP driver is encountered)...
cpp_quote ("// {C4C4C4E9-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_EncDecFilterError,")
cpp_quote ("0xC4C4C4E9, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter when data block due to COPP status...
cpp_quote ("// {C4C4C4EA-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterCOPPBlock ,")
cpp_quote ("0xC4C4C4EA, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter/Tagger when receiving copy once content
cpp_quote ("// {C4C4C4EB-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETFilterCopyOnce,")
cpp_quote ("0xC4C4C4EB, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter/Tagger when receiving copy never really for macrovision content
cpp_quote ("// {C4C4C4F0-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETFilterCopyNever,")
cpp_quote ("0xC4C4C4F0, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// for now, Format errors are exactly the same as License errors...
// sent by Decrypter when data format is OK again (only after a failure)...
cpp_quote ("// {C4C4C4EC-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterDataFormatOK,")
cpp_quote ("0xC4C4C4EC, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Decrypter when data format is corrupt (old file?)
cpp_quote ("// {C4C4C4ED-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_DTFilterDataFormatFailure,")
cpp_quote ("0xC4C4C4ED, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter or Decrypter when DRM license is OK again (only after a failure)...
cpp_quote ("// {C4C4C4EE-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETDTFilterLicenseOK,")
cpp_quote ("0xC4C4C4EE, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// sent by Encrypter or Decrypter when fail to get DRM license
cpp_quote ("// {C4C4C4EF-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(EVENTID_ETDTFilterLicenseFailure,")
cpp_quote ("0xC4C4C4EF, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// Other Guids
// media subtype sent out of encrypter filter
cpp_quote ("// {C4C4C4D0-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(MEDIASUBTYPE_ETDTFilter_Tagged,")
cpp_quote ("0xC4C4C4D0, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// format block type sent out of encrypter filter
// only used if no format block currently avaiable
cpp_quote ("// {C4C4C4D1-0049-4E2B-98FB-9537F6CE516D}")
cpp_quote ("DEFINE_GUID(FORMATTYPE_ETDTFilter_Tagged,")
cpp_quote ("0xC4C4C4D1, 0x0049, 0x4E2B, 0x98, 0xFB, 0x95, 0x37, 0xF6, 0xCE, 0x51, 0x6D);")
// Genric event from EncDec fileter. See FireEx
cpp_quote ("// {4A1B465B-0FB9-4159-AFBD-E33006A0F9F4}")
cpp_quote ("DEFINE_GUID(EVENTID_EncDecFilterEvent, ")
cpp_quote ("0x4a1b465b, 0xfb9, 0x4159, 0xaf, 0xbd, 0xe3, 0x30, 0x6, 0xa0, 0xf9, 0xf4);")
// broadcast event from the demultiplexer on a discontinuity; fired on input
// discontinuities and in-band discontinuities e.g. continuity_counter skips
// and timestamp discontinuities
cpp_quote ("// {16155770-AED5-475c-BB98-95A33070DF0C}")
cpp_quote ("DEFINE_GUID(EVENTID_DemultiplexerFilterDiscontinuity, ")
cpp_quote ("0x16155770, 0xaed5, 0x475c, 0xbb, 0x98, 0x95, 0xa3, 0x30, 0x70, 0xdf, 0xc);")
//------------------------------------------------------
#ifndef REFERENCE_TIME
typedef LONGLONG REFERENCE_TIME;
#endif
typedef LONG PackedTvRating; // internal storage format for 3-part TvRatings
//------------------------------------------------------
// Types of EncDec Events
enum EncDecEvents
{
ENCDEC_CPEVENT = 0,
ENCDEC_RECORDING_STATUS
};
enum CPRecordingStatus
{
RECORDING_STOPPED = 0,
RECORDING_STARTED = 1
};
// Types of Content Protection events.
// These are in order from least important to most important.
// THEY MUST ALWAYS BE ORDERED FROM LEAST TO MOST IMPORTANT.
enum CPEventBitShift
{
CPEVENT_BITSHIFT_RATINGS = 0,
CPEVENT_BITSHIFT_COPP,
CPEVENT_BITSHIFT_LICENSE,
CPEVENT_BITSHIFT_ROLLBACK,
CPEVENT_BITSHIFT_SAC,
CPEVENT_BITSHIFT_DOWNRES,
CPEVENT_BITSHIFT_STUBLIB,
CPEVENT_BITSHIFT_UNTRUSTEDGRAPH,
};
enum CPEvents
{
CPEVENT_NONE = 0,
CPEVENT_RATINGS,
CPEVENT_COPP,
CPEVENT_LICENSE,
CPEVENT_ROLLBACK,
CPEVENT_SAC,
CPEVENT_DOWNRES,
CPEVENT_STUBLIB,
CPEVENT_UNTRUSTEDGRAPH,
};
enum RevokedComponent
{
REVOKED_COPP = 0,
REVOKED_SAC,
REVOKED_APP_STUB,
REVOKED_SECURE_PIPELINE,
REVOKED_MAX_TYPES
};
typedef enum EnTag_Mode // flags to turn various processing bits off
{ // (see d:\nt\public\sd
EnTag_Remove = 0x0,
EnTag_Once = 0x1,
EnTag_Repeat = 0x2,
} EnTag_Mode;
typedef [uuid(25AEE876-3D61-4486-917E-7C0CB3D9983C), v1_enum] enum
{
PROT_COPY_FREE = 1,
PROT_COPY_ONCE = 2,
PROT_COPY_NEVER = 3,
PROT_COPY_NEVER_REALLY = 4,
PROT_COPY_NO_MORE = 5,
PROT_COPY_FREE_CIT = 6,
PROT_COPY_BF = 7,
PROT_COPY_CN_RECORDING_STOP = 8,
PROT_COPY_FREE_SECURE = 9,
PROT_COPY_INVALID = 50
}ProtType;
typedef [uuid(6F8C2442-2BFB-4180-9EE5-EA1FB47AE35C), v1_enum] enum
{
COPP_BadDriver = 0,
COPP_NoCardHDCPSupport = 1,
COPP_NoMonitorHDCPSupport = 2,
COPP_BadCertificate = 3
} COPPEventBlockReason;
typedef [uuid(57BCA1BE-DF7A-434e-8B89-26D6A0541FDA), v1_enum] enum
{
LIC_BadLicense = 0,
LIC_NeedIndiv = 1
} LicenseEventBlockReason;
typedef [uuid(D5CC1CDC-EF31-48dc-95B8-AFD34C08036B), v1_enum] enum
{
DOWNRES_Always = 0,
DOWNRES_InWindowOnly = 1,
DOWNRES_Undefined = 2
} DownResEventParam;
[
restricted,
object,
uuid (C4C4C4D1-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IETFilterConfig Interface"),
pointer_default(unique)
]
interface IETFilterConfig : IUnknown
{
[ id(10), helpstring("method InitLicense")]
HRESULT InitLicense(
[in] int LicenseId // which license (0-N to use)
);
[ id(11), helpstring("method GetSecureChannelObject")]
HRESULT GetSecureChannelObject(
[out] IUnknown **ppUnkDRMSecureChannel // an IDRMSecureChannel
);
};
[
restricted,
object,
uuid (C4C4C4D2-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IDTFilterConfig Interface"),
pointer_default(unique)
]
interface IDTFilterConfig : IUnknown
{
[ id(11), helpstring("method GetSecureChannelObject")]
HRESULT GetSecureChannelObject(
[out] IUnknown **ppUnkDRMSecureChannel // an IDRMSecureChannel
);
};
[
object,
uuid (C4C4C4D3-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IXDSCodecConfig Interface"),
pointer_default(unique)
]
interface IXDSCodecConfig : IUnknown
{
// [propget, id(1), helpstring("property CCMode")] HRESULT CCMode([out, retval] int *pCCMode);
[ id(11), helpstring("method GetSecureChannelObject")]
HRESULT GetSecureChannelObject(
[out] IUnknown **ppUnkDRMSecureChannel // an IDRMSecureChannel
);
[ id(12), helpstring("method SetPauseBufferTime")]
HRESULT SetPauseBufferTime([in] DWORD dwPauseBufferTime);
};
// Interface: IDTFilterBlockedOverlay
// ------------------------------------
// This interface is implemented by DTFilter to set the Blocked overlay setting for devices
// Typically Encdec performs the AES->Clear or AES->RC4 transform and generates BlockedOverlays
// In AES pass through mode, the downstream filter communicates Kid-errors and the like using
// this interface, since the DTFilter is centralized to handle all overlays for playback
// This interface implementation will be War-bird obfuscated and avaialable only for trusted components
//
[
object,
uuid(FAF37694-909C-49cd-886F-C7382E5DB596),
helpstring("IDTFilterBlockedOverlay Interface"),
pointer_default(unique)
]
interface IDTFilterBlockedOverlay: IUnknown
{
HRESULT SetOverlay (
[in] DWORD dwOverlayCause
) ;
HRESULT ClearOverlay (
[in] DWORD dwOverlayCause
) ;
HRESULT GetOverlay (
[out] DWORD *pdwOverlayCause
) ;
};
// --------------------------------
[
uuid(C4C4C400-0049-4E2B-98FB-9537F6CE516D),
version(1.0),
helpstring("Microsoft Encypter-Tagger/Decrypter-Detagger Filters")
]
library EncDec
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
object,
uuid (C4C4C4B1-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IETFilter Interface"),
pointer_default(unique)
]
interface IETFilter : IUnknown
{
[propget, id(1), helpstring("property EvalRatObjOK")]
HRESULT EvalRatObjOK([out, retval] HRESULT *pHrCoCreateRetVal);
[ id(2), helpstring("method GetCurrRating")]
HRESULT GetCurrRating(
[out] EnTvRat_System *pEnSystem,
[out] EnTvRat_GenericLevel *pEnRating,
[out] LONG *plbfEnAttr // bitfield of BfEnTvRat_GenericAttributes
);
[ id(3), helpstring("method GetCurrLicenseExpDate")]
HRESULT GetCurrLicenseExpDate(
[in] ProtType *protType,
[out] long *lpDateTime
);
[ id(4), helpstring("method GetLastErrorCode")]
HRESULT GetLastErrorCode();
[ id(5), helpstring("method SetRecordingOn")]
HRESULT SetRecordingOn(BOOL fRecState);
};
[
uuid(C4C4C4C1-0049-4E2B-98FB-9537F6CE516D),
helpstring("IETFilterEvents")
]
dispinterface IETFilterEvents
{
properties:
methods:
};
[
uuid(C4C4C4F1-0049-4E2B-98FB-9537F6CE516D),
helpstring("ETFilter Class")
]
coclass ETFilter
{
[default] interface IETFilter;
interface IETFilterConfig;
[default, source] dispinterface IETFilterEvents;
};
// ---------------------------------------------------
[
object,
uuid (C4C4C4B2-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IDTFilter Interface"),
pointer_default(unique)
]
interface IDTFilter : IUnknown
{
[propget, id(1), helpstring("property EvalRatObjOK")]
HRESULT EvalRatObjOK([out, retval] HRESULT *pHrCoCreateRetVal);
[ id(2), helpstring("method GetCurrRating")]
HRESULT GetCurrRating(
[out] EnTvRat_System *pEnSystem,
[out] EnTvRat_GenericLevel *pEnRating,
[out] LONG *plbfEnAttr // bitfield of BfEnTvRat_GenericAttributes
);
[propget, id(3), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[out, retval] LONG *plbfEnAttr
);
[propput, id(3), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[in] LONG lbfAttrs // bitfield of BfEnTvRat_GenericAttributes
);
[propget, id(4), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[out, retval] BOOL *pfBlockUnRatedShows
);
[propput, id(4), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[in] BOOL fBlockUnRatedShows
);
[propget, id(5), helpstring("property BlockUnRatedDelay")]
HRESULT BlockUnRatedDelay(
[out, retval] LONG *pmsecsDelayBeforeBlock
);
[propput, id(5), helpstring("property BlockUnRatedDelay")]
HRESULT BlockUnRatedDelay(
[in] LONG msecsDelayBeforeBlock
);
};
[
object,
uuid (C4C4C4B4-0049-4E2B-98FB-9537F6CE516D),
helpstring("IDTFilter2 Interface"),
pointer_default(unique)
]
interface IDTFilter2 : IDTFilter
{
[propget, id(6), helpstring("property ChallengeUrl")]
HRESULT ChallengeUrl([out] BSTR *pbstrChallengeUrl);
[ id(7), helpstring("method GetCurrLicenseExpDate")]
HRESULT GetCurrLicenseExpDate(
[in] ProtType *protType,
[out] long *lpDateTime
);
[ id(8), helpstring("method GetLastErrorCode")]
HRESULT GetLastErrorCode();
};
[
object,
uuid (513998cc-e929-4cdf-9fbd-bad1e0314866),
helpstring("IDTFilter3 Interface"),
pointer_default(unique)
]
interface IDTFilter3 : IDTFilter2
{
[ id(9), helpstring("method GetProtectionType")]
HRESULT GetProtectionType(
[out] ProtType *pProtectionType
);
[ id(10), helpstring("method LicenseHasExpirationDate")]
HRESULT LicenseHasExpirationDate(
[out] BOOL *pfLicenseHasExpirationDate
);
[ id(11), helpstring("method SetRights")]
HRESULT SetRights(
[in] BSTR bstrRights
);
};
[
uuid(C4C4C4C2-0049-4E2B-98FB-9537F6CE516D),
helpstring("IDTFilterEvents")
]
dispinterface IDTFilterEvents
{
properties:
methods:
};
[
uuid(C4C4C4F2-0049-4E2B-98FB-9537F6CE516D),
helpstring("CDTFilter Class")
]
coclass DTFilter
{
[default] interface IDTFilter;
interface IDTFilterConfig;
[default, source] dispinterface IDTFilterEvents;
};
// ---------------------------------------------------
[
object,
uuid (C4C4C4B3-0049-4E2B-98FB-9537F6CE516D),
// dual
helpstring("IXDSCodec Interface"),
pointer_default(unique)
]
interface IXDSCodec : IUnknown
{
[propget, id(1), helpstring("property XDSToRatObjOK")]
HRESULT XDSToRatObjOK([out, retval] HRESULT *pHrCoCreateRetVal);
[propput, id(2), helpstring("property CCSubstreamService")]
HRESULT CCSubstreamService([in] long SubstreamMask);
[propget, id(2), helpstring("property CCSubstreamService")]
HRESULT CCSubstreamService([out, retval] long *pSubstreamMask);
[ id(3), helpstring("method GetContentAdvisoryRating") ]
HRESULT GetContentAdvisoryRating(
[out] PackedTvRating *pRat, // TvRating
[out] long *pPktSeqID,
[out] long *pCallSeqID,
[out] REFERENCE_TIME *pTimeStart, // time this sample started
[out] REFERENCE_TIME *pTimeEnd
);
[ id(4), helpstring("method GetXDSPacket") ]
HRESULT GetXDSPacket(
[out] long *pXDSClassPkt, // ENUM EnXDSClass
[out] long *pXDSTypePkt,
[out] BSTR *pBstrXDSPkt,
[out] long *pPktSeqID,
[out] long *pCallSeqID,
[out] REFERENCE_TIME *pTimeStart, // time this sample started
[out] REFERENCE_TIME *pTimeEnd
);
[ id(5), helpstring("method GetCurrLicenseExpDate")]
HRESULT GetCurrLicenseExpDate(
[in] ProtType *protType,
[out] long *lpDateTime
);
[ id(6), helpstring("method GetLastErrorCode")]
HRESULT GetLastErrorCode();
};
[
uuid(C4C4C4C3-0049-4E2B-98FB-9537F6CE516D),
helpstring("IXDSCodecEvents")
]
dispinterface IXDSCodecEvents
{
properties:
methods:
};
[
uuid(C4C4C4F3-0049-4E2B-98FB-9537F6CE516D),
helpstring("CXDSCodec Class")
]
coclass XDSCodec
{
[default] interface IXDSCodec;
interface IXDSCodecConfig;
[default, source] dispinterface IXDSCodecEvents;
};
[
uuid(C4C4C4F4-0049-4E2B-98FB-9537F6CE516D),
helpstring("CXDSCodec Class")
]
coclass CXDSData
{
[default] interface IXDSCodec;
interface IXDSCodecConfig;
[default, source] dispinterface IXDSCodecEvents;
};
};