import "oaidl.idl"; import "ocidl.idl"; typedef enum { MPAA = 0, US_TV = 1, Canadian_English = 2, Canadian_French = 3, Reserved4 = 4, System5 = 5, System6 = 6, Reserved7 = 7, TvRat_kSystems = 8, TvRat_SystemDontKnow = 255 } EnTvRat_System; typedef enum { TvRat_0 = 0, TvRat_1 = 1, TvRat_2 = 2, TvRat_3 = 3, TvRat_4 = 4, TvRat_5 = 5, TvRat_6 = 6, TvRat_7 = 7, TvRat_kLevels = 8, TvRat_LevelDontKnow = 255 } EnTvRat_GenericLevel; typedef enum { MPAA_NotApplicable = TvRat_0, MPAA_G = TvRat_1, MPAA_PG = TvRat_2, MPAA_PG13 = TvRat_3, MPAA_R = TvRat_4, MPAA_NC17 = TvRat_5, MPAA_X = TvRat_6, MPAA_NotRated = TvRat_7 } EnTvRat_MPAA; typedef enum { US_TV_None = TvRat_0, US_TV_Y = TvRat_1, US_TV_Y7 = TvRat_2, US_TV_G = TvRat_3, US_TV_PG = TvRat_4, US_TV_14 = TvRat_5, US_TV_MA = TvRat_6, US_TV_None7 = TvRat_7 } EnTvRat_US_TV; typedef enum { CAE_TV_Exempt = TvRat_0, CAE_TV_C = TvRat_1, CAE_TV_C8 = TvRat_2, CAE_TV_G = TvRat_3, CAE_TV_PG = TvRat_4, CAE_TV_14 = TvRat_5, CAE_TV_18 = TvRat_6, CAE_TV_Reserved = TvRat_7 } EnTvRat_CAE_TV; typedef enum { CAF_TV_Exempt = TvRat_0, CAF_TV_G = TvRat_1, CAF_TV_8 = TvRat_2, CAF_TV_13 = TvRat_3, CAF_TV_16 = TvRat_4, CAF_TV_18 = TvRat_5, CAF_TV_Reserved6 = TvRat_6, CAF_TV_Reserved = TvRat_7 } EnTvRat_CAF_TV; typedef enum { BfAttrNone = 0, BfIsBlocked = 1, BfIsAttr_1 = 2, BfIsAttr_2 = 4, BfIsAttr_3 = 8, BfIsAttr_4 = 16, BfIsAttr_5 = 32, BfIsAttr_6 = 64, BfIsAttr_7 = 128, BfValidAttrSubmask = 255 } BfEnTvRat_GenericAttributes; typedef enum { US_TV_IsBlocked = BfIsBlocked, US_TV_IsViolent = BfIsAttr_1, US_TV_IsSexualSituation = BfIsAttr_2, US_TV_IsAdultLanguage = BfIsAttr_3, US_TV_IsSexuallySuggestiveDialog = BfIsAttr_4, US_TV_ValidAttrSubmask = 31 } BfEnTvRat_Attributes_US_TV; typedef enum { MPAA_IsBlocked = BfIsBlocked, MPAA_ValidAttrSubmask = 1 } BfEnTvRat_Attributes_MPAA; typedef enum { CAE_IsBlocked = BfIsBlocked, CAE_ValidAttrSubmask = 1 } BfEnTvRat_Attributes_CAE_TV; typedef enum { CAF_IsBlocked = BfIsBlocked, CAF_ValidAttrSubmask = 1 } BfEnTvRat_Attributes_CAF_TV; [ object, uuid(C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026), dual, pointer_default(unique) ] interface IXDSToRat : IDispatch { [id(1)] HRESULT Init(); [id(2)] HRESULT ParseXDSBytePair([in] BYTE byte1, [in] BYTE byte2, [out] EnTvRat_System *pEnSystem, [out] EnTvRat_GenericLevel *pEnLevel, [out] LONG *plBfEnAttributes); }; [ object, uuid(C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026), dual, pointer_default(unique) ] interface IEvalRat : IDispatch { [propget, id(1)] HRESULT BlockedRatingAttributes([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enLevel, [out, retval] LONG *plbfAttrs); [propput, id(1)] HRESULT BlockedRatingAttributes([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enLevel, [in] LONG lbfAttrs); [propget, id(2)] HRESULT BlockUnRated([out, retval] BOOL *pfBlockUnRatedShows); [propput, id(2)] HRESULT BlockUnRated([in] BOOL fBlockUnRatedShows); [id(3)] HRESULT MostRestrictiveRating([in] EnTvRat_System enSystem1, [in] EnTvRat_GenericLevel enEnLevel1, [in] LONG lbfEnAttr1, [in] EnTvRat_System enSystem2, [in] EnTvRat_GenericLevel enEnLevel2, [in] LONG lbfEnAttr2, [out] EnTvRat_System *penSystem, [out] EnTvRat_GenericLevel *penEnLevel, [out] LONG *plbfEnAttr); [id(4)] HRESULT TestRating([in] EnTvRat_System enShowSystem, [in] EnTvRat_GenericLevel enShowLevel, [in] LONG lbfEnShowAttributes); }; [uuid(C5C5C500-3ABC-11D6-B25B-00C04FA0C026)] library TVRATINGSLib { importlib("stdole32.tlb"); importlib("stdole2.tlb"); [uuid(C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026)] coclass XDSToRat { [default] interface IXDSToRat; }; [uuid(C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026)] coclass EvalRat { [default] interface IEvalRat; }; };