#ifndef TSSUTIL_H #pragma option push -b -a8 -pc -A- /*P_O_Push*/ #define TSSUTIL_H #include #if defined(_AFX) #include // build a class to override the standard GUID in basetyps.h // in order to put them into STL containers and dump them to mfc dumpcontexts. class GUID2 : public GUID { public: inline GUID2() {} inline GUID2(const GUID2 &g) { ASSERT(sizeof(*this) == sizeof(g)); memcpy(this, &g, sizeof(*this)); } inline GUID2(const struct _GUID &g) { ASSERT(sizeof(*this) == sizeof(g)); memcpy(this, &g, sizeof(*this)); } inline GUID2(const struct _GUID *g) { ASSERT(sizeof(*this) == sizeof(*g)); memcpy(this, g, sizeof(*this)); } GUID2 & operator=(const GUID2 &g) { if (&g != this) { ASSERT(sizeof(*this) == sizeof(struct _GUID)); memcpy(this, &g, sizeof(*this)); } return *this; } GUID2 & operator=(const struct _GUID &g) { if (&g != this) { ASSERT(sizeof(*this) == sizeof(g)); memcpy(this, &g, sizeof(*this)); } return *this; } void inline Dump(CDumpContext &dc) const { OLECHAR guidstr[64]; int rc = StringFromGUID2(*this, guidstr, sizeof(guidstr)); ASSERT(rc); USES_CONVERSION; dc << OLE2T(guidstr); return; } bool inline operator<(const GUID2 &op2) const { if (memcmp(this, &op2, sizeof(GUID2)) < 0) { return true; } return false; } bool inline operator>(const GUID2 &op2) const { if (memcmp(this, &op2, sizeof(GUID2)) > 0) { return true; } return false; } bool inline operator==(const GUID2 &op2) const { if (!memcmp(this, &op2, sizeof(GUID2))) { return true; } return false; } bool inline operator!=(const GUID2 &op2) const { if (memcmp(this, &op2, sizeof(GUID2))) { return true; } return false; } bool inline operator<(const GUID &op2) const { if (memcmp(this, &op2, sizeof(GUID)) < 0) { return true; } return false; } bool inline operator>(const GUID &op2) const { if (memcmp(this, &op2, sizeof(GUID)) > 0) { return true; } return false; } bool inline operator==(const GUID &op2) const { if (!memcmp(this, &op2, sizeof(GUID))) { return true; } return false; } bool inline operator!=(const GUID &op2) const { if (memcmp(this, &op2, sizeof(GUID))) { return true; } return false; } }; inline CDumpContext &operator<<(CDumpContext &dc, const GUID2 &g) { g.Dump(dc); return dc; } inline CDumpContext &operator<<(CDumpContext &dc, const GUID &g) { GUID2 g2(g); g2.Dump(dc); return dc; } class CTuningSpaceInfo { inline void copy(CTuningSpaceInfo &lhs, const CTuningSpaceInfo &rhs) { ASSERT(&rhs != &lhs); lhs.m_lTS = rhs.m_lTS; lhs.m_csName = rhs.m_csName; lhs.m_csDesc = rhs.m_csDesc; lhs.m_FilterClass = rhs.m_FilterClass; lhs.m_FilterCategory = rhs.m_FilterCategory; lhs.m_csFilterName = rhs.m_csFilterName; lhs.m_dwInputType = rhs.m_dwInputType; } public: long m_lTS; CString m_csName; CString m_csDesc; CLSID m_FilterClass; CLSID m_FilterCategory; CString m_csFilterName; DWORD m_dwInputType; CTuningSpaceInfo() {} CTuningSpaceInfo(long lTS) : m_lTS(lTS) {} inline CTuningSpaceInfo(const CTuningSpaceInfo &tsi) { copy(*this, tsi); } inline CTuningSpaceInfo &operator=(const CTuningSpaceInfo &rhs) { if (&rhs != this) { copy(*this, rhs); } return *this; } }; inline CDumpContext& operator<<(CDumpContext &d, const CTuningSpaceInfo&tsi) { d << "Tuning Space = " << tsi.m_lTS << ":\r\n"; d << "\tName = " << tsi.m_csName << "\r\n"; d << "\tDesc = " << tsi.m_csName << "\r\n"; d << "\tFilter Class = " << static_cast(tsi.m_FilterClass) << "\r\n"; d << "\tFilter Category = " << static_cast(tsi.m_FilterCategory) << "\r\n"; d << "\tFilter Name = " << tsi.m_csFilterName << "\r\n"; d << "\tInput Type = " << tsi.m_dwInputType << "\r\n"; return d; } #endif const int g_nMaxNameLen = 64; extern const LPCTSTR g_strRestrictSuffix; extern const LPCTSTR g_strAdultsGrp; extern const LPCTSTR g_strUsersGrp; extern const LPCTSTR g_strGuestAccountName; extern const LPCTSTR g_strRestrictQueryOwner; extern const LPCTSTR g_strRestrictQueryBase; extern const LPCTSTR g_strQueryBase; #ifdef _AFX CString TSS_RestrictionQueryName(LPCTSTR UserName); #endif void TSS_RestrictionQueryName(LPCTSTR UserName, TCHAR sz[g_nMaxNameLen]); bool TSS_QuitDuringInstall(VOID); #ifdef _AFX CString TSS_GetProductDir(); #endif void TSS_GetProductDir(TCHAR sz[MAX_PATH]); #ifdef _AFX CString TSS_GetSystemFile(); #endif void TSS_GetSystemFile(TCHAR sz[MAX_PATH]); #ifdef _AFX CString TSS_GetDatabaseFile(); CString TSS_GetDatabaseReplacementFile(VOID); CString TSS_GetEPGDatabaseFile(); CString TSS_GetAMFilter(); void TSS_GetDefaultVBITuning(long &lTS, long &lChan); BOOL TSS_GetTuningSpaceInfoEx(class CTuningSpaceInfo &tsi); void TSS_GetLoaderName(const CString &csGuid, CString &csLoaderName); long TSS_FindSType(ULONG ulTuningSpace, BYTE ubLCID); void TSS_MkDeviceName(ULONG ulVendorId, ULONG ulDeviceId, CString &Name); HRESULT TSS_FindProvider(ULONG ulVendorId, ULONG ulDeviceId, CString &csProviderDll, CString &csProviderDesc); void TSS_GetAudioPin(LPTSTR *szPinName); void TSS_SetAudioPin(LPCTSTR szPinName); #endif BOOL TSS_GetTuningSpaceInfo(const long lTS, CLSID &cid, DWORD &dwInputType); const DWORD DEFVOL = 5000; const DWORD DEFBAL = 0; void TSS_GetAudio(LPCTSTR szDevName, DWORD &Vol, DWORD &Bal); void TSS_SetAudio(LPCTSTR szDevName, DWORD Vol, DWORD Bal); DWORD TSS_GetCountryCode(void); // get tuning space number from active movie filter class id BOOLEAN TSS_GetAMFilter(TCHAR sz[MAX_PATH]); void TSS_GetDatabaseFile(TCHAR sz[MAX_PATH]); BOOL TSS_GetDatabaseReplacementFile(TCHAR sz[MAX_PATH]); void TSS_GetEPGDatabaseFile(TCHAR sz[MAX_PATH]); BOOLEAN TSS_GetLoaderName(LPCTSTR szGuid, LPTSTR szLoaderName, DWORD &dwSize); BOOLEAN TSS_GetTuningIDs(LPCTSTR szGuid, DWORD *dwTuningID, DWORD &dwBytes); BOOLEAN TSS_GetTuningIDsAnalogCheck(LPCTSTR szGuid, DWORD *dwTuningID, DWORD &dwBytes); BOOLEAN TSS_SetAMFilter(TCHAR sz[MAX_PATH]); BOOLEAN TSS_SetLoaderAttempt(LPCTSTR szGuid); BOOLEAN TSS_SetLoaderCompletion(LPCTSTR szGuid, DWORD dwResult); // global BOOLEAN TSS_GetLoaderAttempt(LPTSTR szGuid, DWORD *pcbLen, SYSTEMTIME *pstTime); BOOLEAN TSS_GetLoaderCompletion(LPTSTR szGuid, DWORD *pcbLen, SYSTEMTIME *pstTime, DWORD *pdwResult); // specific loader BOOLEAN TSS_GetLoaderAttempt(LPCTSTR szGuid, SYSTEMTIME *pstTime); BOOLEAN TSS_GetLoaderCompletion(LPCTSTR szGuid, SYSTEMTIME *pstTime, DWORD *pdwResult); BOOLEAN TSS_GetDTVLoaderCSSByte(LPCTSTR szGuid, BYTE *pbCSSByte); BOOLEAN TSS_SetDTVLoaderCSSByte(LPCTSTR szGuid, BYTE *pbCSSByte); BOOLEAN TSS_GetLoaderReadPrefix(LPCTSTR szGuid, LPTSTR szPrefix, DWORD &dwSize); BOOLEAN TSS_GetLoaderWritePrefix(LPCTSTR szGuid, LPTSTR szPrefix, DWORD &dwSize); BOOLEAN TSS_GetLoaderReadFile(LPCTSTR szGuid, LPTSTR szReadFile, DWORD dwSize); BOOLEAN TSS_SetLoaderReadFile(LPCTSTR szGuid, LPTSTR szReadFile); BOOLEAN TSS_GetSSLoaderRegionID(LPCTSTR szGuid, DWORD *pdwRegion); BOOLEAN TSS_SetSSLoaderRegionID(LPCTSTR szGuid, DWORD dwRegion); BOOLEAN TSS_GetSSLoaderPreviousRegionID(LPCTSTR szGuid, DWORD *pdwPreviousRegion); BOOLEAN TSS_SetSSLoaderPreviousRegionID(LPCTSTR szGuid, DWORD dwPreviousRegion); BOOLEAN TSS_GetSSLoaderRegionIDValid(LPCTSTR szGuid, BOOL *pfRegionIDValid); BOOLEAN TSS_SetSSLoaderRegionIDValid(LPCTSTR szGuid, BOOL fRegionIDValid); BOOLEAN TSS_GetSSLoaderScanReturnCode(LPCTSTR szGuid, DWORD *pdwScanReturnCode); BOOLEAN TSS_SetSSLoaderScanReturnCode(LPCTSTR szGuid, DWORD dwScanReturnCode); BOOLEAN TSS_GetSSLoaderChannel(LPCTSTR szGuid, DWORD *pdwChannel); BOOLEAN TSS_SetSSLoaderChannel(LPCTSTR szGuid, DWORD dwChannel); BOOLEAN TSS_GetSSLoaderLine(LPCTSTR szGuid, DWORD *pdwLine); BOOLEAN TSS_SetSSLoaderLine(LPCTSTR szGuid, DWORD dwLine); BOOLEAN TSS_GetLoaderPostalCode(LPTSTR szPostalCode, DWORD cb); BOOLEAN TSS_SetLoaderPostalCode(LPCTSTR szPostalCode); BOOLEAN TSS_GetSSLoaderListenReturnCode(LPCTSTR szGuid, DWORD *pdwListenReturnCode); BOOLEAN TSS_SetSSLoaderListenReturnCode(LPCTSTR szGuid, DWORD dwListenReturnCode); BOOLEAN TSS_GetSSLoaderListenReturnCodeCount(LPCTSTR szGuid, DWORD *pdwListenReturnCodeCount); BOOLEAN TSS_SetSSLoaderListenReturnCodeCount(LPCTSTR szGuid, DWORD dwListenReturnCodeCount); BOOLEAN TSS_GetLoaderLastCompactSize(DWORD *pdwLastCompactSize); BOOLEAN TSS_SetLoaderLastCompactSize(DWORD dwLastCompactSize); void TSS_ThrowOleDispatchException(SCODE sc, LPCTSTR lpszDescription = NULL, UINT nHelpID = 0, WORD wCode = 0, LPCTSTR szHelpFile = NULL, LPCTSTR szSource = NULL); void TSS_ThrowOleDispatchException(SCODE sc, UINT nDescriptionID = 0, UINT nHelpID = 0, WORD wCode = 0, LPCTSTR szHelpFile = NULL, LPCTSTR szSource = NULL); void TSS_ThrowOleDispatchException(LPEXCEPINFO pInfo); void TSS_BracketizeTableOrQuery(TCHAR sz[g_nMaxNameLen]); BOOL TSS_IsValidUserName(LPCTSTR szUserName); #if defined(_AFX) && defined(__AFXDAO_H) void ThrowDispatchExceptFromDaoExcept(CDaoException *e); #endif #if defined(_DEBUG) && defined(_AFX) void TSS_GetTraceLevel(int iAppNameSID, DWORD &dwTraceLevel); #endif #pragma option pop /*P_O_Pop*/ #endif // TSSUTIL_H