/////////////////////////////////////////////////////////////////////////////////////////////////////////// // // mindex.h // // Declares the interface to the Media Content Index // // Copyright (c) Microsoft Corporation 1999 // // /////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _MINDEX_HEADER_ #define _MINDEX_HEADER_ #ifdef __cplusplus extern "C" { #endif // Media Index class identifier // {4B1CFD76-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(CLSID_MediaIndex, 0x4b1cfd76, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); // Media Index "Multimedia" class ID // {4C58C22D-4440-11d3-A208-00C04FA3B60C} DEFINE_GUID(CLSID_MediaIndexMusicActivity, 0x4c58c22d, 0x4440, 0x11d3, 0xa2, 0x8, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); typedef struct IMediaIndexManager *LPMEDIAINDEXMANAGER; typedef struct IMediaIndexScheme *LPMEDIAINDEXSCHEME; typedef struct IMediaIndexSchemeDebug *LPMEDIAINDEXSCHEMEDEBUG; typedef struct IMediaIndexRoot *LPMEDIAINDEXROOT; typedef struct IMediaIndexObject *LPMEDIAINDEXOBJECT; typedef struct IMediaIndexNotificationSink *LPMEDIAINDEXNOTIFICATIONSINK; typedef struct IMediaIndexMusicActivityRoot *LPMEDIAINDEXMUSICACTIVITYROOT; //property types #define PROPERTY_TYPE_NUMERIC 0 #define PROPERTY_TYPE_TEXT 1 #define PROPERTY_TYPE_DATE 2 #define PROPERTY_TYPE_URL 3 #define PROPERTY_TYPE_BINARY 4 #define PROPERTY_TYPE_UNICODE_TEXT 5 #define PROPERTY_TYPE_FILEPATH 6 //object change notification types #define CHANGE_TYPE_ADDED 0 #define CHANGE_TYPE_REMOVED 1 #define CHANGE_TYPE_RELATIONSHIP 2 #define CHANGE_TYPE_PROPERTY 3 typedef struct _MEDIAINDEXOBJECTDESCRIPTION { const CLSID* Clsid; //Class id of a database object wchar_t wszDesc[255]; //Its description } MEDIAINDEXOBJECTDESCRIPTION, *LPMEDIAINDEXOBJECTDESCRIPTION; typedef struct _MEDIAINDEX_PROPERTYDESCRIPTION { const CLSID* Clsid; //Class id of a database property DWORD dwPropNumber; //Known ID of property DWORD dwDataType; //Data type (int, text, binary, etc.) wchar_t wszDesc[255]; //Its description } MEDIAINDEXPROPERTYDESCRIPTION, *LPMEDIAINDEXPROPERTYDESCRIPTION; // // IMediaIndexManager // // {5BC8AEBF-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexManager, 0x5bc8aebf, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexManager DECLARE_INTERFACE_(IMediaIndexManager, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; // IMediaIndexManager methods STDMETHOD(OpenScheme) (THIS_ LPCWSTR wszName, LPMEDIAINDEXNOTIFICATIONSINK pSink, LPMEDIAINDEXSCHEME* ppScheme) PURE; STDMETHOD(RegisterSchemeFromXMLObject) (THIS_ LPCWSTR wszName, IXMLDOMDocument* pXMLDoc) PURE; STDMETHOD(RegisterSchemeFromXMLScript) (THIS_ LPCWSTR wszName, LPCWSTR wszXMLScript) PURE; STDMETHOD(BeginSchemeEnumeration) (THIS) PURE; STDMETHOD(EnumerateScheme) (THIS_ LPWSTR wszName, DWORD cchName) PURE; STDMETHOD(EndSchemeEnumeration) (THIS) PURE; }; // // IMediaIndexScheme // // {6292C109-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexScheme, 0x6292c109, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexScheme DECLARE_INTERFACE_(IMediaIndexScheme, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; STDMETHOD(GetSchemeInfo) (THIS_ LPWSTR wszSchemeName, IXMLDOMDocument** ppXMLDoc) PURE; STDMETHOD(OpenIndex) (THIS) PURE; STDMETHOD(CloseIndex) (THIS) PURE; STDMETHOD(BeginUserEnumeration) (THIS) PURE; STDMETHOD(EnumerateUser) (THIS_ LPWSTR wszUserName) PURE; STDMETHOD(EndUserEnumeration) (THIS) PURE; STDMETHOD(SetCurrentUser) (THIS_ LPCWSTR wszUserName) PURE; STDMETHOD(BeginTransaction) (THIS) PURE; STDMETHOD(EndTransaction) (THIS_ BOOL fCommit) PURE; STDMETHOD(GetRoot) (THIS_ LPMEDIAINDEXROOT* ppObject) PURE; }; // // IMediaIndexSchemeDebug (Can QI from IMediaIndexScheme when running a debug build) // // {6B88573D-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexSchemeDebug, 0x6b88573d, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexSchemeDebug DECLARE_INTERFACE_(IMediaIndexSchemeDebug, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; // IMediaIndexSchemeDebug methods STDMETHOD(DumpIndexToFile) (THIS_ LPCWSTR wszFilename) PURE; }; // // IMediaIndexRoot // // {7C82B623-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexRoot, 0x7c82b623, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexRoot DECLARE_INTERFACE_(IMediaIndexRoot, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; //IMediaIndexRoot methods STDMETHOD(BeginObjectEnumeration) (THIS_ LPCGUID pguidObjectType, DWORD dwStartingIndex, BOOL fRestrictToCurrentUser, LPCGUID pguidPropertySetID, DWORD dwPropertyID, void* pPropertyFilterValue, BOOL fThreaded, LPDWORD dwThreadID, LPDWORD pdwCount) PURE; STDMETHOD(EnumerateObjects) (THIS_ REFGUID guidObjectType, LPVOID *ppvInterface) PURE; STDMETHOD(EndObjectEnumeration) (THIS) PURE; STDMETHOD(Search) (THIS) PURE; STDMETHOD(CreateObject) (THIS_ REFGUID guidObjectType, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObject) (THIS_ REFGUID guidObjectType, DWORD dwInstanceID, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObjectByNumericProperty) (THIS_ REFGUID guidObjectType, REFGUID guidPropertySetID, DWORD dwPropertyID, DWORD dwValue, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObjectByTextProperty) (THIS_ REFGUID guidObjectType, REFGUID guidPropertySetID, DWORD dwPropertyID, LPCWSTR szSearch, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(RemoveObject) (THIS_ LPMEDIAINDEXOBJECT pObject) PURE; }; // // IMediaIndexObject // // {7666AF83-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexObject, 0x7666af83, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexObject DECLARE_INTERFACE_(IMediaIndexObject, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; //IMediaIndexObject methods STDMETHOD(GetObjectInfo) (THIS_ REFGUID guidObjectType, LPDWORD pdwInstanceID) PURE; STDMETHOD(BeginConnectionEnumeration) (THIS_ BOOL fChildren, DWORD dwStartingIndex, LPCGUID pguidObjectType, BOOL fRestrictToCurrentUser, LPCGUID pguidPropertySetID, DWORD dwPropertyID, void* pPropertyFilterValue, BOOL fThreaded, LPDWORD dwThreadID, LPDWORD pdwCount) PURE; STDMETHOD(EnumerateConnection) (THIS_ REFGUID guidObjectType, LPVOID *ppvInterface) PURE; STDMETHOD(EndConnectionEnumeration) (THIS) PURE; STDMETHOD(AddChild) (THIS_ LPMEDIAINDEXOBJECT pAddObject, LPMEDIAINDEXOBJECT pNextObject) PURE; STDMETHOD(RemoveChild) (THIS_ LPMEDIAINDEXOBJECT pObject) PURE; STDMETHOD(GetProperty) (THIS_ REFGUID guidPropertySetID, DWORD dwPropertyID, LPWSTR wszPropertyName, LPDWORD pdwDataType, LPVOID pvDataBuffer, DWORD dwBufferSize, LPDWORD pdwRequiredSize) PURE; STDMETHOD(SetProperty) (THIS_ REFGUID guidPropertySetID, DWORD dwPropertyID, LPCWSTR wszPropertyName, DWORD dwDataType, LPCVOID pvBuffer, DWORD dwBufferSize) PURE; STDMETHOD(BeginPropertyEnumeration) (THIS_ LPCGUID pguidPropertySetID, LPDWORD pdwCount) PURE; STDMETHOD(EnumerateProperty) (THIS_ REFGUID guidPropertySetID, LPDWORD pdwPropertyID, LPWSTR wszPropertyName, LPDWORD pdwDataType, LPVOID pvDataBuffer, DWORD dwBufferSize, LPDWORD pdwRequiredSize) PURE; STDMETHOD(EndPropertyEnumeration) (THIS) PURE; STDMETHOD_(BOOL, IsParentOf) (THIS_ LPMEDIAINDEXOBJECT pObject) PURE; STDMETHOD_(BOOL, IsChildOf) (THIS_ LPMEDIAINDEXOBJECT pObject) PURE; }; // // IMediaIndexNotificationSink // // {892D3443-28C6-11d3-A1FF-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexNotificationSink, 0x892d3443, 0x28c6, 0x11d3, 0xa1, 0xff, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexNotificationSink DECLARE_INTERFACE_(IMediaIndexNotificationSink, IUnknown) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; // IMediaIndexNotificationSink methods STDMETHOD(ObjectChanged) (THIS_ REFGUID guidObjectType, DWORD dwInstanceID, DWORD dwChangeType, REFGUID guidPropertySetID, DWORD dwPropertyID); STDMETHOD(EnumerationCallback) (THIS_ LPMEDIAINDEXOBJECT pObject, DWORD dwThreadID, HANDLE hCancelEvent); }; // // IMediaIndexMusicActivityRoot // // {AD27169C-443F-11d3-A208-00C04FA3B60C} DEFINE_GUID(IID_IMediaIndexMusicActivityRoot, 0xAD27169C, 0x443F, 0x11d3, 0xa2, 0x08, 0x0, 0xc0, 0x4f, 0xa3, 0xb6, 0xc); #undef INTERFACE #define INTERFACE IMediaIndexMusicActivityRoot DECLARE_INTERFACE_(IMediaIndexMusicActivityRoot, IMediaIndexRoot) { // IUnknown methods STDMETHOD(QueryInterface) (THIS_ REFIID iid, LPVOID *ppvInterface) PURE; STDMETHOD_(DWORD, AddRef) (THIS) PURE; STDMETHOD_(DWORD, Release) (THIS) PURE; //IMediaIndexRoot methods STDMETHOD(BeginObjectEnumeration) (THIS_ LPCGUID pguidObjectType, DWORD dwStartingIndex, BOOL fRestrictToCurrentUser, LPCGUID pguidPropertySetID, DWORD dwPropertyID, void* pPropertyFilterValue, BOOL fThreaded, LPDWORD dwThreadID, LPDWORD pdwCount) PURE; STDMETHOD(EnumerateObjects) (THIS_ REFGUID guidObjectType, LPVOID *ppvInterface) PURE; STDMETHOD(EndObjectEnumeration) (THIS) PURE; STDMETHOD(Search) (THIS) PURE; STDMETHOD(CreateObject) (THIS_ REFGUID guidObjectType, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObject) (THIS_ REFGUID guidObjectType, DWORD dwInstanceID, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObjectByNumericProperty) (THIS_ REFGUID guidObjectType, REFGUID guidPropertySetID, DWORD dwPropertyID, DWORD dwValue, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(FetchObjectByTextProperty) (THIS_ REFGUID guidObjectType, REFGUID guidPropertySetID, DWORD dwPropertyID, LPCWSTR szSearch, LPMEDIAINDEXOBJECT* ppObject) PURE; STDMETHOD(RemoveObject) (THIS_ LPMEDIAINDEXOBJECT pObject) PURE; //IMediaIndexMusicActivityRoot methods STDMETHOD(OpenIndex) (THIS_ LPMEDIAINDEXNOTIFICATIONSINK pSink) PURE; STDMETHOD(CloseIndex) (THIS) PURE; STDMETHOD(GetSchemeInfo) (THIS_ LPWSTR wszSchemeName, IXMLDOMDocument** ppXMLDoc) PURE; }; #ifdef __cplusplus }; #endif #endif //_MINDEX_HEADER_