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.

352 lines
10 KiB

  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Contains CD Options Interface
  4. //
  5. // Copyright (c) Microsoft Corporation 1998
  6. //
  7. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  8. #ifndef _CDOPT_PUBLICINTEFACES_
  9. #define _CDOPT_PUBLICINTEFACES_
  10. #include "objbase.h"
  11. #include "mmsystem.h"
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. const CLSID CLSID_CDOpt = {0xE5927147,0x521E,0x11D1,{0x9B,0x97,0x00,0xC0,0x4F,0xA3,0xB6,0x10}};
  16. typedef struct TIMEDMETER
  17. {
  18. HWND hMeter;
  19. HWND hParent;
  20. BOOL fShowing;
  21. DWORD dwStartTime;
  22. DWORD dwShowCount;
  23. DWORD dwCount;
  24. DWORD dwJump;
  25. DWORD dwRange;
  26. } TIMEDMETER, *LPTIMEDMETER;
  27. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  28. //
  29. // Interface Definitions
  30. //
  31. // Defines the GUIDs / IIDs for this project:
  32. //
  33. // IID_IMMFWNotifySink, IMMComponent, IMMComponentAutomation
  34. //
  35. // These are the three interfaces for Framework / Component communications.
  36. // All other interfaces should be private to the specific project.
  37. //
  38. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  39. #define lCDOPTIIDFirst 0xb2cd5bbd
  40. #define DEFINE_CDOPTIID(name, x) DEFINE_GUID(name, lCDOPTIIDFirst + x, 0x5221,0x11d1,0x9b,0x97,0x0,0xc0,0x4f,0xa3,0xb6,0xc)
  41. DEFINE_CDOPTIID(IID_ICDOpt, 0);
  42. DEFINE_CDOPTIID(IID_ICDData, 1);
  43. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  44. //
  45. // CDOptions Interface Typedefs
  46. //
  47. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  48. typedef interface ICDOpt ICDOpt;
  49. typedef ICDOpt* LPCDOPT;
  50. typedef interface ICDData ICDData;
  51. typedef ICDData* LPCDDATA;
  52. #ifndef LPUNKNOWN
  53. typedef IUnknown* LPUNKNOWN;
  54. #endif
  55. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  56. //
  57. // CDOPTIONS common defines
  58. //
  59. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  60. enum CDDISP_MODES
  61. {
  62. CDDISP_CDTIME = 0x0001,
  63. CDDISP_CDREMAIN = 0x0002,
  64. CDDISP_TRACKTIME = 0x0004,
  65. CDDISP_TRACKREMAIN = 0x0008,
  66. };
  67. enum CDOPT_PAGE
  68. {
  69. CDOPT_PAGE_PLAY = 0x0000,
  70. CDOPT_PAGE_TITLE = 0x0001,
  71. CDOPT_PAGE_PLAYLIST = 0x0002,
  72. };
  73. #define CDTITLE_NODISC (0)
  74. #define CDSTR (128)
  75. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  76. //
  77. // CDOptions common typedefs
  78. //
  79. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  80. struct CDOPTIONS;
  81. struct CDTITLE;
  82. typedef DWORD (CALLBACK FAR * LPFNCDDOWNLOAD)(CDTITLE *pTitle, LPARAM lParam, HWND hwnd);
  83. typedef void (CALLBACK FAR * LPFNCDOPTIONS)(CDOPTIONS *pCDOpts);
  84. typedef struct CDUNIT
  85. {
  86. TCHAR szDriver[MAX_PATH];
  87. TCHAR szDeviceDesc[MAX_PATH];
  88. TCHAR szDriveName[MAX_PATH];
  89. TCHAR szMixerName[MAXPNAMELEN];
  90. TCHAR szVolName[MIXER_LONG_NAME_CHARS];
  91. TCHAR szNetQuery[2048];
  92. DWORD dwMixID;
  93. DWORD dwVolID;
  94. DWORD dwMuteID;
  95. DWORD dwTitleID;
  96. DWORD dwNumTracks;
  97. BOOL fSelected;
  98. BOOL fDefaultDrive;
  99. BOOL fDownLoading;
  100. BOOL fChanged;
  101. CDUNIT *pNext;
  102. } CDUNIT, *LPCDUNIT;
  103. typedef struct CDPROVIDER
  104. {
  105. TCHAR szProviderURL[MAX_PATH];
  106. TCHAR szProviderName[MAX_PATH];
  107. TCHAR szProviderHome[MAX_PATH];
  108. TCHAR szProviderLogo[MAX_PATH];
  109. TCHAR szProviderUpload[MAX_PATH];
  110. BOOL fTimedOut;
  111. CDPROVIDER *pNext;
  112. } CDPROVIDER, *LPCDPROVIDER;
  113. typedef struct CDOPTDATA
  114. {
  115. BYTE fDispMode;
  116. BOOL fStartPlay;
  117. BOOL fExitStop;
  118. BOOL fTopMost;
  119. BOOL fTrayEnabled;
  120. BOOL fDownloadEnabled;
  121. BOOL fDownloadPrompt;
  122. BOOL fBatchEnabled;
  123. BOOL fByArtist;
  124. DWORD dwPlayMode;
  125. DWORD dwIntroTime;
  126. DWORD dwWindowX;
  127. DWORD dwWindowY;
  128. DWORD dwViewMode;
  129. } CDOPTDATA, *LPCDOPTDATA;
  130. typedef struct CDMENU
  131. {
  132. TCHAR szMenuText[CDSTR];
  133. TCHAR *szMenuQuery;
  134. } CDMENU, *LPCDMENU;
  135. typedef struct CDTRACK
  136. {
  137. TCHAR szName[CDSTR];
  138. } CDTRACK, *LPCDTRACK;
  139. typedef struct CDTITLE
  140. {
  141. DWORD dwTitleID;
  142. DWORD dwNumTracks;
  143. BOOL fDownLoading;
  144. LPCDTRACK pTrackTable;
  145. DWORD dwNumPlay;
  146. LPWORD pPlayList;
  147. DWORD dwNumMenus;
  148. LPCDMENU pMenuTable;
  149. TCHAR szTitle[CDSTR];
  150. TCHAR szArtist[CDSTR];
  151. TCHAR szLabel[CDSTR];
  152. TCHAR szDate[CDSTR];
  153. TCHAR szCopyright[CDSTR];
  154. TCHAR *szTitleQuery;
  155. BOOL dwLockCnt;
  156. BOOL fLoaded;
  157. BOOL fChanged;
  158. BOOL fDriveExpanded;
  159. BOOL fAlbumExpanded;
  160. BOOL fArtistExpanded;
  161. BOOL fRemove;
  162. CDTITLE * pNext;
  163. }CDTITLE, *LPCDTITLE;
  164. typedef struct CDOPTIONS
  165. {
  166. LPCDOPTDATA pCDData;
  167. LPCDPROVIDER pProviderList;
  168. LPCDPROVIDER pCurrentProvider;
  169. LPCDPROVIDER pDefaultProvider;
  170. LPCDUNIT pCDUnitList;
  171. DWORD dwBatchedTitles;
  172. LPFNCDDOWNLOAD pfnDownloadTitle;
  173. LPFNCDOPTIONS pfnOptionsCallback;
  174. LPARAM lParam;
  175. UINT_PTR pReserved;
  176. } CDOPTIONS, *LPCDOPTIONS;
  177. typedef struct CDBATCH
  178. {
  179. DWORD dwTitleID;
  180. DWORD dwNumTracks;
  181. TCHAR *szTitleQuery;
  182. BOOL fRemove;
  183. BOOL fFresh;
  184. CDBATCH *pNext;
  185. } CDBATCH, *LPCDBATCH;
  186. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  187. //
  188. // CDOptions Interface Definitions
  189. //
  190. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  191. #undef INTERFACE
  192. #define INTERFACE ICDOpt
  193. DECLARE_INTERFACE_(ICDOpt, IUnknown)
  194. {
  195. //--- IUnknown methods---
  196. STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  197. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  198. STDMETHOD_(ULONG,Release) (THIS) PURE;
  199. //--- ICDOpt methods---
  200. STDMETHOD_(LPCDOPTIONS,GetCDOpts) (THIS) PURE;
  201. STDMETHOD (CreateProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
  202. STDMETHOD_(void, DestroyProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
  203. STDMETHOD_(void, UpdateRegistry) (THIS) PURE;
  204. STDMETHOD (OptionsDialog) (THIS_ HWND hWnd,
  205. LPCDDATA pCDData,
  206. CDOPT_PAGE nStartPage) PURE;
  207. STDMETHOD_(BOOL,VerifyProvider) (THIS_ LPCDPROVIDER pCDProvider,
  208. TCHAR *szCertKey) PURE;
  209. STDMETHOD (CreateProviderKey) (THIS_ LPCDPROVIDER pCDProvider,
  210. TCHAR *szCertKey,
  211. UINT cBytes) PURE;
  212. STDMETHOD_(void,DownLoadCompletion) (THIS_ DWORD dwNumIDs,
  213. LPDWORD pdwIDs) PURE;
  214. STDMETHOD_(void,DiscChanged) (THIS_ LPCDUNIT pCDUnit) PURE;
  215. STDMETHOD_(void,MMDeviceChanged) (THIS) PURE;
  216. };
  217. #undef INTERFACE
  218. #define INTERFACE ICDData
  219. DECLARE_INTERFACE_(ICDData, IUnknown)
  220. {
  221. //--- IUnknown methods---
  222. STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
  223. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  224. STDMETHOD_(ULONG,Release) (THIS) PURE;
  225. //--- ICDOpt methods---
  226. STDMETHOD (Initialize) (THIS_ HWND hWnd) PURE;
  227. STDMETHOD (CheckDatabase) (THIS_ HWND hWnd) PURE;
  228. STDMETHOD_(BOOL, QueryTitle) (THIS_ DWORD dwTitleID) PURE;
  229. STDMETHOD (LockTitle) (THIS_ LPCDTITLE *ppCDTitle,
  230. DWORD dwTitleID) PURE;
  231. STDMETHOD (CreateTitle) (THIS_ LPCDTITLE *ppCDTitle,
  232. DWORD dwTitleID,
  233. DWORD dwNumTracks,
  234. DWORD dwNumMenus) PURE;
  235. STDMETHOD (SetTitleQuery) (THIS_ LPCDTITLE pCDTitle,
  236. TCHAR *szTitleQuery) PURE;
  237. STDMETHOD (SetMenuQuery) (THIS_ LPCDMENU pCDMenu,
  238. TCHAR *szMenuQuery) PURE;
  239. STDMETHOD_(void,UnlockTitle) (THIS_ LPCDTITLE pCDTitle,
  240. BOOL fPresist) PURE;
  241. STDMETHOD (LoadTitles) (THIS_ HWND hWnd) PURE;
  242. STDMETHOD (PersistTitles) (THIS) PURE;
  243. STDMETHOD (UnloadTitles) (THIS) PURE;
  244. STDMETHOD_(LPCDTITLE,GetTitleList) (THIS) PURE;
  245. // -- Batch methods
  246. STDMETHOD_(BOOL, QueryBatch) (THIS_ DWORD dwTitleID) PURE;
  247. STDMETHOD_(DWORD, GetNumBatched) (THIS) PURE;
  248. STDMETHOD (LoadBatch) (THIS_ HWND hWnd,
  249. LPCDBATCH *ppCDBatchList) PURE;
  250. STDMETHOD (UnloadBatch) (THIS_ LPCDBATCH pCDBatchList) PURE;
  251. STDMETHOD (DumpBatch) (THIS) PURE;
  252. STDMETHOD (AddToBatch) (THIS_ DWORD dwTitleID,
  253. TCHAR *szTitleQuery,
  254. DWORD dwNumTracks) PURE;
  255. STDMETHOD_(void,CreateMeter) (THIS_ LPTIMEDMETER ptm, HWND hWnd, DWORD dwCount, DWORD dwJump, UINT uStringID);
  256. STDMETHOD_(void,UpdateMeter) (THIS_ LPTIMEDMETER ptm);
  257. STDMETHOD_(void,DestroyMeter) (THIS_ LPTIMEDMETER ptm);
  258. };
  259. #ifdef __cplusplus
  260. };
  261. #endif
  262. #endif //_CDOPT_PUBLICINTEFACES_