windows-nt/Source/XPSP1/NT/shell/inc/mindex.h
2020-09-26 16:20:57 +08:00

290 lines
13 KiB
C

///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 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_