mirror of https://github.com/UMSKT/xpmgr.git
249 lines
7.2 KiB
Plaintext
249 lines
7.2 KiB
Plaintext
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
import "propsys.idl";
|
|
#include "FunctionDiscoveryConstraints.h"
|
|
|
|
cpp_quote("//#if ( WINVER >= 0x0600 )")
|
|
cpp_quote("#ifndef FD_LONGHORN")
|
|
cpp_quote("#define FD_LONGHORN 1")
|
|
cpp_quote("#endif")
|
|
cpp_quote("#ifndef FDPropertyConstraint")
|
|
cpp_quote("#define FDPropertyConstraint")
|
|
cpp_quote("#endif")
|
|
|
|
cpp_quote("#include \"FunctionDiscoveryCategories.h\"")
|
|
cpp_quote("#include \"FunctionDiscoveryError.h\"")
|
|
cpp_quote("#include \"FunctionDiscoveryKeys.h\"")
|
|
cpp_quote("#include \"FunctionDiscoveryServiceIDs.h\"")
|
|
cpp_quote("#include \"FunctionDiscoveryConstraints.h\"")
|
|
|
|
interface IFunctionDiscovery;
|
|
interface IFunctionInstance;
|
|
interface IFunctionInstanceCollection;
|
|
interface IFunctionInstanceQuery;
|
|
interface IFunctionInstanceCollectionQuery;
|
|
interface IPropertyStoreCollection;
|
|
interface IFunctionInstanceCollectionQueryCollection;
|
|
|
|
typedef DWORDLONG FDQUERYCONTEXT;
|
|
|
|
typedef enum tagSystemVisibilityFlags
|
|
{
|
|
SVF_SYSTEM = 0,
|
|
SVF_USER = 1
|
|
} SystemVisibilityFlags;
|
|
|
|
typedef enum tagQueryUpdateAction
|
|
{
|
|
QUA_ADD = 0,
|
|
QUA_REMOVE = 1,
|
|
QUA_CHANGE = 2
|
|
} QueryUpdateAction;
|
|
|
|
typedef enum tagQueryCategoryType
|
|
{
|
|
QCT_PROVIDER = 0,
|
|
QCT_LAYERED = 1
|
|
} QueryCategoryType;
|
|
|
|
|
|
// This interface should be implemented by clients performing async queries...
|
|
[
|
|
object,
|
|
uuid(5f6c1ba8-5330-422e-a368-572b244d3f87),
|
|
helpstring("IFunctionDiscoveryNotification Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IFunctionDiscoveryNotification : IUnknown
|
|
{
|
|
HRESULT OnUpdate(
|
|
[in] QueryUpdateAction enumQueryUpdateAction,
|
|
[in] FDQUERYCONTEXT fdqcQueryContext,
|
|
[in] IFunctionInstance * pIFunctionInstance);
|
|
HRESULT OnError(
|
|
[in] HRESULT hr,
|
|
[in] FDQUERYCONTEXT fdqcQueryContext,
|
|
[in, string] const WCHAR * pszProvider);
|
|
HRESULT OnEvent(
|
|
[in] DWORD dwEventID,
|
|
[in] FDQUERYCONTEXT fdqcQueryContext,
|
|
[in, string] const WCHAR * pszProvider);
|
|
};
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(4df99b70-e148-4432-b004-4c9eeb535a5e),
|
|
helpstring("IFunctionDiscovery Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface IFunctionDiscovery : IUnknown
|
|
{
|
|
// Discovery
|
|
HRESULT GetInstanceCollection(
|
|
[in, string] const WCHAR * pszCategory,
|
|
[in, string, unique] const WCHAR * pszSubCategory,
|
|
[in] BOOL fIncludeAllSubCategories,
|
|
[out, retval] IFunctionInstanceCollection ** ppIFunctionInstanceCollection);
|
|
|
|
HRESULT GetInstance(
|
|
[in, string] const WCHAR * pszFunctionInstanceIdentity,
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance);
|
|
|
|
HRESULT CreateInstanceCollectionQuery(
|
|
[in, string] const WCHAR * pszCategory,
|
|
[in, string, unique] const WCHAR * pszSubCategory,
|
|
[in] BOOL fIncludeAllSubCategories,
|
|
[in] IFunctionDiscoveryNotification * pIFunctionDiscoveryNotification,
|
|
[in, out, unique] FDQUERYCONTEXT * pfdqcQueryContext,
|
|
[out, retval] IFunctionInstanceCollectionQuery ** ppIFunctionInstanceCollectionQuery);
|
|
|
|
HRESULT CreateInstanceQuery(
|
|
[in, string] const WCHAR * pszFunctionInstanceIdentity,
|
|
[in] IFunctionDiscoveryNotification * pIFunctionDiscoveryNotification,
|
|
[in, out, unique] FDQUERYCONTEXT * pfdqcQueryContext,
|
|
[out, retval] IFunctionInstanceQuery ** ppIFunctionInstanceQuery);
|
|
|
|
// Provider Specific
|
|
HRESULT AddInstance(
|
|
[in] SystemVisibilityFlags enumSystemVisibility,
|
|
[in, string] const WCHAR * pszCategory,
|
|
[in, string, unique] const WCHAR * pszSubCategory,
|
|
[in, string] const WCHAR * pszCategoryIdentity,
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance );
|
|
|
|
HRESULT RemoveInstance(
|
|
[in] SystemVisibilityFlags enumSystemVisibility,
|
|
[in, string] const WCHAR * pszCategory,
|
|
[in, string, unique] const WCHAR * pszSubCategory,
|
|
[in, string] const WCHAR * pszCategoryIdentity);
|
|
};
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(33591c10-0bed-4f02-b0ab-1530d5533ee9),
|
|
helpstring("IFunctionInstance Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IFunctionInstance : IServiceProvider
|
|
{
|
|
// Meta Data
|
|
HRESULT GetID(
|
|
[out, string, retval] WCHAR ** ppszCoMemIdentity);
|
|
|
|
HRESULT GetProviderInstanceID(
|
|
[out, string, retval] WCHAR ** ppszCoMemProviderInstanceIdentity);
|
|
|
|
HRESULT OpenPropertyStore(
|
|
[in] DWORD dwStgAccess,
|
|
[out, retval] IPropertyStore ** ppIPropertyStore);
|
|
|
|
// Meta Data
|
|
HRESULT GetCategory(
|
|
[out, string] WCHAR ** ppszCoMemCategory,
|
|
[out, string] WCHAR ** ppszCoMemSubCategory);
|
|
|
|
};
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(f0a3d895-855c-42a2-948d-2f97d450ecb1),
|
|
helpstring("IFunctionInstanceCollection Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface IFunctionInstanceCollection : IUnknown
|
|
{
|
|
HRESULT GetCount(
|
|
[out, retval] DWORD * pdwCount );
|
|
HRESULT Get(
|
|
[in, string] const WCHAR * pszInstanceIdentity,
|
|
[out] DWORD * pdwIndex,
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance );
|
|
HRESULT Item(
|
|
[in] DWORD dwIndex,
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance );
|
|
HRESULT Add(
|
|
[in] IFunctionInstance * pIFunctionInstance );
|
|
HRESULT Remove(
|
|
[in] DWORD dwIndex,
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance );
|
|
HRESULT Delete(
|
|
[in] DWORD dwIndex );
|
|
HRESULT DeleteAll();
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(D14D9C30-12D2-42d8-BCE4-C60C2BB226FA),
|
|
helpstring("IPropertyStoreCollection Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPropertyStoreCollection : IUnknown
|
|
{
|
|
HRESULT GetCount(
|
|
[out, retval] LPDWORD pdwCount );
|
|
HRESULT Get(
|
|
[in, string] const WCHAR * pszInstanceIdentity,
|
|
[out] LPDWORD pdwIndex,
|
|
[out, retval] IPropertyStore** ppIPropertyStore);
|
|
HRESULT Item(
|
|
[in] DWORD dwIndex,
|
|
[out, retval] IPropertyStore ** ppIPropertyStore);
|
|
HRESULT Add(
|
|
[in] IPropertyStore * pIPropertyStore);
|
|
HRESULT Remove(
|
|
[in] DWORD dwIndex,
|
|
[out, retval] IPropertyStore** pIPropertyStore);
|
|
HRESULT Delete(
|
|
[in] DWORD dwIndex );
|
|
HRESULT DeleteAll();
|
|
};
|
|
|
|
|
|
/////////////////////////////////
|
|
// Query interfaces
|
|
/////////////////////////////////
|
|
[
|
|
object,
|
|
uuid(6242bc6b-90ec-4b37-bb46-e229fd84ed95),
|
|
helpstring("IFunctionInstanceQuery Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface IFunctionInstanceQuery : IUnknown
|
|
{
|
|
HRESULT Execute(
|
|
[out, retval] IFunctionInstance ** ppIFunctionInstance );
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(57cc6fd2-c09a-4289-bb72-25f04142058e),
|
|
helpstring("IFunctionInstanceCollectionQuery Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface IFunctionInstanceCollectionQuery : IUnknown
|
|
{
|
|
HRESULT AddQueryConstraint(
|
|
[in, string] const WCHAR * pszConstraintName,
|
|
[in, string] const WCHAR * pszConstraintValue );
|
|
HRESULT AddPropertyConstraint(
|
|
[in] REFPROPERTYKEY Key,
|
|
[in] const PROPVARIANT * pv,
|
|
[in] PropertyConstraint enumPropertyConstraint);
|
|
HRESULT Execute(
|
|
[out] IFunctionInstanceCollection ** ppIFunctionInstanceCollection );
|
|
};
|
|
|
|
cpp_quote("#include \"FunctionDiscoveryNotification.h\"")
|
|
|