windows-nt/Source/XPSP1/NT/multimedia/media/deluxecd/cdopt/cdopt.h
2020-09-26 16:20:57 +08:00

337 lines
9.6 KiB
C

///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Contains CD Options Interface
//
// Copyright (c) Microsoft Corporation 1998
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _CDOPT_PUBLICINTEFACES_
#define _CDOPT_PUBLICINTEFACES_
#include "objbase.h"
#include "mmsystem.h"
#ifdef __cplusplus
extern "C" {
#endif
const CLSID CLSID_CDOpt = {0xE5927147,0x521E,0x11D1,{0x9B,0x97,0x00,0xC0,0x4F,0xA3,0xB6,0x10}};
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Interface Definitions
//
// Defines the GUIDs / IIDs for this project:
//
// IID_IMMFWNotifySink, IMMComponent, IMMComponentAutomation
//
// These are the three interfaces for Framework / Component communications.
// All other interfaces should be private to the specific project.
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
#define lCDOPTIIDFirst 0xb2cd5bbd
#define DEFINE_CDOPTIID(name, x) DEFINE_GUID(name, lCDOPTIIDFirst + x, 0x5221,0x11d1,0x9b,0x97,0x0,0xc0,0x4f,0xa3,0xb6,0xc)
DEFINE_CDOPTIID(IID_ICDOpt, 0);
DEFINE_CDOPTIID(IID_ICDData, 1);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// CDOptions Interface Typedefs
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef interface ICDOpt ICDOpt;
typedef ICDOpt* LPCDOPT;
typedef interface ICDData ICDData;
typedef ICDData* LPCDDATA;
#ifndef LPUNKNOWN
typedef IUnknown* LPUNKNOWN;
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// CDOPTIONS common defines
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
enum CDDISP_MODES
{
CDDISP_CDTIME = 0x0001,
CDDISP_CDREMAIN = 0x0002,
CDDISP_TRACKTIME = 0x0004,
CDDISP_TRACKREMAIN = 0x0008,
};
enum CDOPT_PAGE
{
CDOPT_PAGE_PLAY = 0x0000,
CDOPT_PAGE_TITLE = 0x0001,
CDOPT_PAGE_PLAYLIST = 0x0002,
};
#define CDTITLE_NODISC (0)
#define CDSTR (128)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// CDOptions common typedefs
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
struct CDOPTIONS;
struct CDTITLE;
typedef DWORD (CALLBACK FAR * LPFNCDDOWNLOAD)(CDTITLE *pTitle, LPARAM lParam, HWND hwnd);
typedef void (CALLBACK FAR * LPFNCDOPTIONS)(CDOPTIONS *pCDOpts);
typedef struct CDUNIT
{
TCHAR szDriver[MAX_PATH];
TCHAR szDeviceDesc[MAX_PATH];
TCHAR szDriveName[MAX_PATH];
TCHAR szMixerName[MAXPNAMELEN];
TCHAR szVolName[MIXER_LONG_NAME_CHARS];
TCHAR szNetQuery[2048];
DWORD dwMixID;
DWORD dwDestID;
DWORD dwVolID;
DWORD dwMuteID;
DWORD dwTitleID;
DWORD dwNumTracks;
BOOL fSelected;
BOOL fDefaultDrive;
BOOL fDownLoading;
BOOL fChanged;
CDUNIT *pNext;
} CDUNIT, *LPCDUNIT;
typedef struct CDPROVIDER
{
TCHAR szProviderURL[MAX_PATH];
TCHAR szProviderName[MAX_PATH];
TCHAR szProviderHome[MAX_PATH];
TCHAR szProviderLogo[MAX_PATH];
TCHAR szProviderUpload[MAX_PATH];
BOOL fTimedOut;
CDPROVIDER *pNext;
} CDPROVIDER, *LPCDPROVIDER;
typedef struct CDOPTDATA
{
BYTE fDispMode;
BOOL fStartPlay;
BOOL fExitStop;
BOOL fTopMost;
BOOL fTrayEnabled;
BOOL fDownloadEnabled;
BOOL fDownloadPrompt;
BOOL fBatchEnabled;
BOOL fByArtist;
DWORD dwPlayMode;
DWORD dwIntroTime;
DWORD dwWindowX;
DWORD dwWindowY;
DWORD dwViewMode;
} CDOPTDATA, *LPCDOPTDATA;
typedef struct CDMENU
{
TCHAR szMenuText[CDSTR];
TCHAR *szMenuQuery;
} CDMENU, *LPCDMENU;
typedef struct CDTRACK
{
TCHAR szName[CDSTR];
} CDTRACK, *LPCDTRACK;
typedef struct CDTITLE
{
DWORD dwTitleID;
DWORD dwNumTracks;
BOOL fDownLoading;
LPCDTRACK pTrackTable;
DWORD dwNumPlay;
LPWORD pPlayList;
DWORD dwNumMenus;
LPCDMENU pMenuTable;
TCHAR szTitle[CDSTR];
TCHAR szArtist[CDSTR];
TCHAR szLabel[CDSTR];
TCHAR szDate[CDSTR];
TCHAR szCopyright[CDSTR];
TCHAR *szTitleQuery;
BOOL dwLockCnt;
BOOL fLoaded;
BOOL fChanged;
BOOL fDriveExpanded;
BOOL fAlbumExpanded;
BOOL fArtistExpanded;
BOOL fRemove;
CDTITLE * pNext;
}CDTITLE, *LPCDTITLE;
typedef struct CDOPTIONS
{
LPCDOPTDATA pCDData;
LPCDPROVIDER pProviderList;
LPCDPROVIDER pCurrentProvider;
LPCDPROVIDER pDefaultProvider;
LPCDUNIT pCDUnitList;
DWORD dwBatchedTitles;
LPFNCDDOWNLOAD pfnDownloadTitle;
LPFNCDOPTIONS pfnOptionsCallback;
LPARAM lParam;
UINT_PTR pReserved;
} CDOPTIONS, *LPCDOPTIONS;
typedef struct CDBATCH
{
DWORD dwTitleID;
DWORD dwNumTracks;
TCHAR *szTitleQuery;
BOOL fRemove;
BOOL fFresh;
CDBATCH *pNext;
} CDBATCH, *LPCDBATCH;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// CDOptions Interface Definitions
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ICDOpt
DECLARE_INTERFACE_(ICDOpt, IUnknown)
{
//--- IUnknown methods---
STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
//--- ICDOpt methods---
STDMETHOD_(LPCDOPTIONS,GetCDOpts) (THIS) PURE;
STDMETHOD (CreateProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
STDMETHOD_(void, DestroyProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
STDMETHOD_(void, UpdateRegistry) (THIS) PURE;
STDMETHOD (OptionsDialog) (THIS_ HWND hWnd,
LPCDDATA pCDData,
CDOPT_PAGE nStartPage) PURE;
STDMETHOD_(BOOL,VerifyProvider) (THIS_ LPCDPROVIDER pCDProvider,
TCHAR *szCertKey) PURE;
STDMETHOD (CreateProviderKey) (THIS_ LPCDPROVIDER pCDProvider,
TCHAR *szCertKey,
UINT cBytes) PURE;
STDMETHOD_(void,DownLoadCompletion) (THIS_ DWORD dwNumIDs,
LPDWORD pdwIDs) PURE;
STDMETHOD_(void,DiscChanged) (THIS_ LPCDUNIT pCDUnit) PURE;
STDMETHOD_(void,MMDeviceChanged) (THIS) PURE;
};
#undef INTERFACE
#define INTERFACE ICDData
DECLARE_INTERFACE_(ICDData, IUnknown)
{
//--- IUnknown methods---
STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
//--- ICDOpt methods---
STDMETHOD (Initialize) (THIS_ HWND hWnd) PURE;
STDMETHOD (CheckDatabase) (THIS_ HWND hWnd) PURE;
STDMETHOD_(BOOL, QueryTitle) (THIS_ DWORD dwTitleID) PURE;
STDMETHOD (LockTitle) (THIS_ LPCDTITLE *ppCDTitle,
DWORD dwTitleID) PURE;
STDMETHOD (CreateTitle) (THIS_ LPCDTITLE *ppCDTitle,
DWORD dwTitleID,
DWORD dwNumTracks,
DWORD dwNumMenus) PURE;
STDMETHOD (SetTitleQuery) (THIS_ LPCDTITLE pCDTitle,
TCHAR *szTitleQuery) PURE;
STDMETHOD (SetMenuQuery) (THIS_ LPCDMENU pCDMenu,
TCHAR *szMenuQuery) PURE;
STDMETHOD_(void,UnlockTitle) (THIS_ LPCDTITLE pCDTitle,
BOOL fPresist) PURE;
STDMETHOD (LoadTitles) (THIS_ HWND hWnd) PURE;
STDMETHOD (PersistTitles) (THIS) PURE;
STDMETHOD (UnloadTitles) (THIS) PURE;
STDMETHOD_(LPCDTITLE,GetTitleList) (THIS) PURE;
// -- Batch methods
STDMETHOD_(BOOL, QueryBatch) (THIS_ DWORD dwTitleID) PURE;
STDMETHOD_(DWORD, GetNumBatched) (THIS) PURE;
STDMETHOD (LoadBatch) (THIS_ HWND hWnd,
LPCDBATCH *ppCDBatchList) PURE;
STDMETHOD (UnloadBatch) (THIS_ LPCDBATCH pCDBatchList) PURE;
STDMETHOD (DumpBatch) (THIS) PURE;
STDMETHOD (AddToBatch) (THIS_ DWORD dwTitleID,
TCHAR *szTitleQuery,
DWORD dwNumTracks) PURE;
};
#ifdef __cplusplus
};
#endif
#endif //_CDOPT_PUBLICINTEFACES_