Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

186 lines
7.0 KiB

  1. //--------------------------------------------------------------------------;
  2. //
  3. // File: cddb.h
  4. //
  5. // CD Database object
  6. //
  7. // Copyright (c) 1998 Microsoft Corporation. All rights reserved
  8. //
  9. //--------------------------------------------------------------------------;
  10. #if !defined(CDDATA_COM_IMPLEMENTATION)
  11. #define CDDATA_COM_IMPLEMENTATION
  12. #if _MSC_VER >= 1000
  13. #pragma once
  14. #endif // _MSC_VER >= 1000
  15. #include "cdopt.h"
  16. #include <wininet.h>
  17. #include "sqlobj.h"
  18. /////////////////////////////////////////////////////////////////////////////
  19. // Types
  20. typedef struct TIMEDMETER
  21. {
  22. HWND hMeter;
  23. HWND hParent;
  24. BOOL fShowing;
  25. DWORD dwStartTime;
  26. DWORD dwShowCount;
  27. DWORD dwCount;
  28. DWORD dwJump;
  29. DWORD dwRange;
  30. } TIMEDMETER, *LPTIMEDMETER;
  31. typedef struct CBTABLE
  32. {
  33. SDWORD cbTitles[10];
  34. SDWORD cbTracks[3];
  35. SDWORD cbMenus[4];
  36. SDWORD cbBatch[3];
  37. }CBTABLE, *LPCBTABLE;
  38. typedef struct BOUND
  39. {
  40. HENV henv;
  41. HDBC hdbc;
  42. CDTITLE CDTitle;
  43. CDTRACK CDTrack;
  44. CDMENU CDMenu;
  45. TCHAR szPlayList[255];
  46. TCHAR szQuery[INTERNET_MAX_PATH_LENGTH];
  47. DWORD dwTrackID;
  48. DWORD dwMenuID;
  49. CBTABLE cbt;
  50. }BOUND, *LPBOUND;
  51. #define NUMTABLES 4
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CCDDB
  54. class CCDData : public ICDData
  55. {
  56. public:
  57. CCDData();
  58. ~CCDData();
  59. public:
  60. // IUnknown
  61. STDMETHOD(QueryInterface)(REFIID riid, LPVOID *ppvObj);
  62. STDMETHOD_(ULONG,AddRef)();
  63. STDMETHOD_(ULONG,Release)();
  64. // ICDData
  65. STDMETHOD (Initialize) (HWND hWnd);
  66. STDMETHOD (CheckDatabase) (HWND hWnd);
  67. STDMETHOD_(BOOL,QueryTitle) (DWORD dwTitleID);
  68. STDMETHOD (LockTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID);
  69. STDMETHOD (CreateTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID, DWORD dwNumTracks, DWORD dwNumMenus);
  70. STDMETHOD (SetTitleQuery) (LPCDTITLE pCDTitle, TCHAR *szTitleQuery);
  71. STDMETHOD (SetMenuQuery) (LPCDMENU pCDMenu, TCHAR *szMenuQuery);
  72. STDMETHOD_(void,UnlockTitle) (LPCDTITLE pCDTitle, BOOL fPresist);
  73. STDMETHOD (LoadTitles) (HWND hWnd);
  74. STDMETHOD (PersistTitles) (void);
  75. STDMETHOD (UnloadTitles) (void);
  76. STDMETHOD_(LPCDTITLE,GetTitleList) (void);
  77. STDMETHOD_(BOOL,QueryBatch) (DWORD dwTitleID);
  78. STDMETHOD_(DWORD,GetNumBatched) (void);
  79. STDMETHOD (LoadBatch) (HWND hWnd, LPCDBATCH *ppCDBatchList);
  80. STDMETHOD (UnloadBatch) (LPCDBATCH pCDBatchList);
  81. STDMETHOD (DumpBatch) (void);
  82. STDMETHOD (AddToBatch) (DWORD dwTitleID, TCHAR *szTitleQuery, DWORD dwNumTracks);
  83. STDMETHOD_(DWORD,GetAppDataDir) (TCHAR* pstrDir, DWORD cchSize);
  84. private:
  85. DWORD m_dwRef;
  86. DWORD m_dwLoadCnt;
  87. DWORD m_dwBatchCnt;
  88. CRITICAL_SECTION m_crit;
  89. HENV m_henv;
  90. HDBC m_hdbc;
  91. HSTMT m_hstmt[NUMTABLES];
  92. BOUND m_bd;
  93. LPCDTITLE m_pTitleList;
  94. LPCDBATCH m_pBatchList;
  95. SQL * m_pSQL;
  96. BOOL m_fToldUser;
  97. static INT_PTR CALLBACK MeterHandler (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
  98. STDMETHOD_(void,Enter) (void);
  99. STDMETHOD_(void,Leave) (void);
  100. STDMETHOD (GetSQLPtr) (BOOL fInited);
  101. STDMETHOD_(void,CreateMeter) (LPTIMEDMETER ptm, HWND hWnd, DWORD dwCount, DWORD dwJump, UINT uStringID);
  102. STDMETHOD_(void,UpdateMeter) (LPTIMEDMETER ptm);
  103. STDMETHOD_(void,DestroyMeter) (LPTIMEDMETER ptm);
  104. STDMETHOD (ConnectToDatabase) (WORD fRequest);
  105. STDMETHOD_(void,CreateDatabase) (void);
  106. STDMETHOD (OpenDatabase) (BOOL fCreate, HWND hWnd);
  107. STDMETHOD_(void,CloseDatabase) (void);
  108. STDMETHOD_(void,InitCBTable) (LPBOUND pbd);
  109. STDMETHOD_(void,SetCursors) (HSTMT *hstmt);
  110. STDMETHOD_(void,BindTitles) (HSTMT *hstmt, LPBOUND pbd);
  111. STDMETHOD_(void,BindTracks) (HSTMT *hstmt, LPBOUND pbd);
  112. STDMETHOD_(void,BindMenus) (HSTMT *hstmt, LPBOUND pbd);
  113. STDMETHOD_(void,BindBatch) (HSTMT *hstmt, LPBOUND pbd);
  114. STDMETHOD_(void,SetBindings) (HSTMT *hstmt, LPBOUND pbd);
  115. STDMETHOD_(RETCODE,AllocStmt) (HDBC hdbc, HSTMT *hstmt);
  116. STDMETHOD_(void,FreeStmt) (HSTMT *hstmt);
  117. STDMETHOD_(void,ReportError) (LPBOUND pbd, HSTMT hstmt);
  118. STDMETHOD (GetUnknownString) (TCHAR **ppStr, const TCHAR *szSection, const TCHAR *szEntry, DWORD dwInitialAlloc);
  119. STDMETHOD_(DWORD,ImportCount) (TCHAR *pEntries);
  120. STDMETHOD_(void,InitDatabase) (HSTMT *hstmt);
  121. STDMETHOD_(void,ImportTrack) (TCHAR *szDiscID, DWORD dwTrack);
  122. STDMETHOD_(RETCODE,ImportTracks) (HSTMT hstmt, TCHAR *szDiscID);
  123. STDMETHOD (ImportTitle) (TCHAR *szDiscID);
  124. STDMETHOD_(void,ImportDatabase) (LPTIMEDMETER ptm, HSTMT *hstmt, TCHAR *szDiscID);
  125. STDMETHOD_(DWORD,GetNumRows) (UCHAR *szDSN);
  126. STDMETHOD (ExtractTitle) (LPCDTITLE *ppCDTitle);
  127. STDMETHOD (ExtractTitles) (LPCDTITLE *ppCDTitleList, HWND hWnd);
  128. STDMETHOD (ExtractSingleTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID);
  129. STDMETHOD_(BOOL,QueryDatabase) (DWORD dwTitleID, const TCHAR *szTable);
  130. STDMETHOD_(void,SaveTitle) (LPCDTITLE pCDTitle, BOOL fExist);
  131. STDMETHOD_(void,SaveTracks) (LPCDTITLE pCDTitle, BOOL fExist);
  132. STDMETHOD_(void,SaveMenus) (LPCDTITLE pCDTitle);
  133. STDMETHOD_(LPCDTITLE,FindTitle) (LPCDTITLE pCDTitle, DWORD dwTitleID);
  134. STDMETHOD (NewTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID, DWORD dwNumTracks, DWORD dwNumMenus);
  135. STDMETHOD_(void,DestroyTitle) (LPCDTITLE pCDTitle);
  136. STDMETHOD_(void,DBSaveTitle) (LPCDTITLE pCDTitle);
  137. STDMETHOD_(void,DBRemoveTitle) (LPCDTITLE pCDTitle);
  138. STDMETHOD_(void,DestroyTitles) (LPCDTITLE *ppCDTitles);
  139. STDMETHOD_(void,SaveTitles) (LPCDTITLE *ppCDTitles);
  140. STDMETHOD_(void,AddTitle) (LPCDTITLE *ppCDTitles, LPCDTITLE pCDTitle);
  141. STDMETHOD (ExtractBatch) (LPCDBATCH *ppCDBatchList, HWND hWnd);
  142. STDMETHOD_(void,DeleteBatch) (LPCDBATCH pCDBatch);
  143. STDMETHOD_(void,DestroyBatch) (LPCDBATCH *ppCDBatchList);
  144. STDMETHOD_(BOOL,FindBatchTitle) (LPCDBATCH pCDBatchList, DWORD dwTitleID);
  145. STDMETHOD_(void,RemoveFromBatch) (DWORD dwTitleID);
  146. STDMETHOD_(BOOL,IsOldFormat) (void);
  147. STDMETHOD (UpgradeDatabase) (HWND hWnd);
  148. };
  149. #endif // !defined(CDDATA_COM_IMPLEMENTATION)
  150.