xpmgr/BuildTools/Include/wcmconfig.idl

733 lines
24 KiB
Plaintext

/***********************************************************************************
* *
* Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved. *
* *
* File - WcmConfig.idl *
* *
* Purpose - SMI COM interface definitions *
* *
* History - Date Alias Comment *
* 01/28/2003 shangwu Created *
* 11/10/2004 shangwu Split into public and private interfaces *
************************************************************************************/
import "oaidl.idl";
import "ocidl.idl";
import "Objidl.idl";
#include "guids.h"
#define _MIDL_DEFINES // To enable MIDL defines in the following header
//_____________________________________________________________________________
//
// Forward declarations
//_____________________________________________________________________________
interface ISettingsIdentity;
interface ISettingsEngine;
interface ISettingsItem;
interface ISettingsNamespace;
interface ISettingsResult; // Error related interface
interface IItemEnumerator;
interface ITargetInfo; // Offline target related interface
interface ISettingsContext;
//_____________________________________________________________________________
//
// Enum types
//_____________________________________________________________________________
//
// TargetMode - enumeration options for the current target mode
//
typedef enum
{
OfflineMode = 1, // disallow use of settings api and
// do not use live environment settings
OnlineMode = 2, // allow use of settings api and combine
// environment with target mappings
} WcmTargetMode;
//
// NamespaceEnumerationFlags - enumeration options for available namespace
// These are bit flags that can be OR combined.
//
typedef enum
{
SharedEnumeration = 1, // namespace installed as shared
UserEnumeration = 2, // namespace installed as user
AllEnumeration = SharedEnumeration |
UserEnumeration,
} WcmNamespaceEnumerationFlags;
//
// DataType - Data type of a configuration item
//
typedef enum
{
dataTypeByte = 1,
dataTypeSByte = 2,
dataTypeUInt16 = 3,
dataTypeInt16 = 4,
dataTypeUInt32 = 5,
dataTypeInt32 = 6,
dataTypeUInt64 = 7,
dataTypeInt64 = 8,
dataTypeBoolean = 11,
dataTypeString = 12,
dataTypeFlagArray = 0x8000
} WcmDataType;
//
// SettingType - Setting type of a configuration item
//
typedef enum
{
settingTypeScalar = 1,
settingTypeComplex = 2,
settingTypeList = 3
} WcmSettingType;
//
// RestrictionFacets - restriction facet flags
//
typedef enum
{
restrictionFacetMaxLength = 0x1,
restrictionFacetEnumeration = 0x2,
restrictionFacetMaxInclusive = 0x4,
restrictionFacetMinInclusive = 0x8,
} WcmRestrictionFacets;
//
// UserStaus - Different status of user
//
typedef enum
{
UnknownStatus = 0, // User status is not known
UserRegistered = 1, // User is registered with SMI
UserUnregistered = 2, // User is not registered with SMI
UserLoaded = 3, // User hive is loaded
UserUnloaded = 4, // User hive is not yet loaded
} WcmUserStatus;
//
// NamespaceAccess - Namespace access options
//
typedef enum
{
ReadOnlyAccess = 1, // settings are readonly
ReadWriteAccess = 2, // settings are readable, writable & commitable
} WcmNamespaceAccess;
//_____________________________________________________________________________
//
// IItemEnumerator interface
//_____________________________________________________________________________
//
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_IItemEnumerator),
helpstring("IItemEnumerator Interface"),
]
interface IItemEnumerator : IUnknown
{
[helpstring("Returns the current item")]
HRESULT Current(
[out, retval] VARIANT* Item);
//
// MoveNext - Move to next item if available.
// Return - S_OK means the next item is available.
// S_FALSE means there is no more item and the enumeration
// has come to an end.
//
[helpstring("Moves to the next item")]
HRESULT MoveNext(
[out, retval] BOOL* ItemValid);
[helpstring("Resets the enumerator and make it not positioned")]
HRESULT Reset();
};
//_____________________________________________________________________________
//
// ISettingsIdentity - Settings identity, minimum required attributes are name,
// version, language.
//_____________________________________________________________________________
//
cpp_quote("#define WCM_SETTINGS_ID_NAME L\"name\"")
cpp_quote("#define WCM_SETTINGS_ID_VERSION L\"version\"")
cpp_quote("#define WCM_SETTINGS_ID_LANGUAGE L\"language\"")
cpp_quote("#define WCM_SETTINGS_ID_ARCHITECTURE L\"architecture\"")
cpp_quote("#define WCM_SETTINGS_ID_TOKEN L\"token\"")
cpp_quote("#define WCM_SETTINGS_ID_URI L\"uri\"")
cpp_quote("#define WCM_SETTINGS_ID_VERSION_SCOPE L\"versionScope\"")
cpp_quote("#define WCM_SETTINGS_ID_FLAG_REFERENCE 0x00000000")
cpp_quote("#define WCM_SETTINGS_ID_FLAG_DEFINITION 0x00000001")
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsIdentity),
helpstring("ISettingsIdentity Interface")
]
interface ISettingsIdentity : IUnknown
{
[helpstring("Get settings identity attributes")]
HRESULT GetAttribute(
[in] void* Reserved,
[in, string] const WCHAR* Name,
[out, retval] BSTR* Value);
[helpstring("Set settings identity attributes")]
HRESULT SetAttribute(
[in] void* Reserved,
[in, string] const WCHAR* Name,
[in, string] const WCHAR* Value);
[helpstring("Get settings identity flags")]
HRESULT GetFlags(
[out, retval] DWORD* Flags);
[helpstring("Set settings identity flags")]
HRESULT SetFlags(
[in] DWORD Flags);
};
//_____________________________________________________________________________
//
// ITargetInfo - Define offline target information specially file and
// registry locations.
//_____________________________________________________________________________
//
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ITargetInfo),
helpstring("ITargetInfo Interface")
]
interface ITargetInfo : IUnknown
{
[helpstring("Gets the current target mode")]
HRESULT GetTargetMode(
[out, retval] WcmTargetMode* TargetMode);
[helpstring("Sets the current target mode")]
HRESULT SetTargetMode(
[in] WcmTargetMode TargetMode);
[helpstring("Gets the current temporary store location")]
HRESULT GetTemporaryStoreLocation(
[out, retval] BSTR* TemporaryStoreLocation);
[helpstring("Sets the current temporary store location")]
HRESULT SetTemporaryStoreLocation(
[in, string] const WCHAR* TemporaryStoreLocation);
[helpstring("Gets a unique id associated with current target")]
HRESULT GetTargetID(
[out, retval] BSTR* TargetID);
[helpstring("Sets a unique id associated with current target")]
HRESULT SetTargetID(
[in] GUID TargetID);
[helpstring("Gets processor architecture associated with current target")]
HRESULT GetTargetProcessorArchitecture(
[out, retval] BSTR* ProcessorArchitecture);
[helpstring("Sets processor architecture associated with current target")]
HRESULT SetTargetProcessorArchitecture(
[in, string] const WCHAR* ProcessorArchitecture);
[helpstring("Gets a property value for offline installation location")]
HRESULT GetProperty(
[in] BOOL Offline,
[in, string] const WCHAR* Property,
[out, retval] BSTR* Value);
[helpstring("Sets a property value for offline installation location")]
HRESULT SetProperty(
[in] BOOL Offline,
[in, string] const WCHAR* Property,
[in, string] const WCHAR* Value);
[helpstring("Enumerator for offline properties")]
HRESULT GetEnumerator(
[out, retval] IItemEnumerator** Enumerator);
[helpstring("Expands a location string to indicate the offline installation location")]
HRESULT ExpandTarget(
[in] BOOL Offline,
[in, string] const WCHAR* Location,
[out, retval] BSTR* ExpandedLocation);
[helpstring("Expands a location string to indicate the offline installation location")]
HRESULT ExpandTargetPath(
[in] BOOL Offline,
[in, string] const WCHAR* Location,
[out, retval] BSTR* ExpandedLocation);
[helpstring("Sets the module path for offline installation location")]
HRESULT SetModulePath(
[in, string] const WCHAR* Module,
[in, string] const WCHAR* Path);
[helpstring("Loads the module from offline installation location")]
HRESULT LoadModule(
[in, string] const WCHAR* Module,
[out, retval] HMODULE* ModuleHandle);
[helpstring("Sets a opaque context object for wow64 redirection")]
HRESULT SetWow64Context(
[in, string] const WCHAR* InstallerModule,
[in] BYTE* Wow64Context);
[helpstring("Translate paths for wow64 redirection")]
HRESULT TranslateWow64(
[in, string] const WCHAR* ClientArchitecture,
[in, string] const WCHAR* Value,
[out, retval] BSTR* TranslatedValue);
[helpstring("Set schema hive location")]
HRESULT SetSchemaHiveLocation(
[in] LPCWSTR pwzHiveDir
);
[helpstring("Get schema hive location")]
HRESULT GetSchemaHiveLocation(
[out, retval] BSTR *pHiveLocation
);
[helpstring("Set the name of the mount location of the schema hive")]
HRESULT SetSchemaHiveMountName(
[in] LPCWSTR pwzMountName
);
[helpstring("Get the name of the mount location of the schema hive")]
HRESULT GetSchemaHiveMountName(
[out, retval] BSTR *pMountName
);
};
//_____________________________________________________________________________
//
// ISettingsEngine - Namespace enumeration, access and management APIs
//_____________________________________________________________________________
//
cpp_quote("#define LINK_STORE_TO_ENGINE_INSTANCE 0x00000001")
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsEngine),
helpstring("ISettingsEngine Interface")
]
interface ISettingsEngine : IUnknown
{
[helpstring("Returns the dictionary of installed namespaces")]
HRESULT GetNamespaces(
[in] WcmNamespaceEnumerationFlags Flags,
[in] void* Reserved,
[out, retval] IItemEnumerator** Namespaces);
[helpstring("Opens an existing namespace")]
HRESULT GetNamespace(
[in] ISettingsIdentity* SettingsID,
[in] WcmNamespaceAccess Access,
[in] void* Reserved,
[out, retval] ISettingsNamespace** NamespaceItem);
[helpstring("Get a message to describe an HRESULT code")]
HRESULT GetErrorDescription(
[in] LONG HResult,
[out, retval] BSTR* Message);
//
// Create other objects
//
[helpstring("Creates an empty settings identity")]
HRESULT CreateSettingsIdentity(
[out, retval] ISettingsIdentity** SettingsID);
[helpstring("Get the status of the schema store")]
HRESULT GetStoreStatus(
[in] void* Reserved,
[out] WcmUserStatus* Status);
[helpstring("Initialize and load the schema store")]
HRESULT LoadStore(
[in] DWORD Flags);
[helpstring("Unload the schema store and free resources")]
HRESULT UnloadStore(
[in] void* Reserved);
[helpstring("Registers a namespace from stream, and upgrades setting values from older version")]
HRESULT RegisterNamespace(
[in] ISettingsIdentity* SettingsID,
[in] IStream* Stream,
[in] BOOL PushSettings,
[out, retval] VARIANT* Results);
[helpstring("Unregisters an existing namespace")]
HRESULT UnregisterNamespace(
[in] ISettingsIdentity* SettingsID,
[in] BOOL RemoveSettings);
//
// Support for offline and other scenarios
//
[helpstring("Creates an empty target")]
HRESULT CreateTargetInfo(
[out, retval] ITargetInfo** Target);
[helpstring("Gets the current offline target for engine")]
HRESULT GetTargetInfo(
[out, retval] ITargetInfo** Target);
[helpstring("Sets the current offline target for engine")]
HRESULT SetTargetInfo(
[in] ITargetInfo* Target);
[helpstring("Creates an settings context")]
HRESULT CreateSettingsContext(
[in] DWORD Flags,
[in] void* Reserved,
[out, retval] ISettingsContext** SettingsContext);
[helpstring("Sets the current settings context for engine")]
HRESULT SetSettingsContext(
[in] ISettingsContext* SettingsContext);
[helpstring("Applies the context to this engine")]
HRESULT ApplySettingsContext(
[in] ISettingsContext *SettingsContext,
[out, size_is(,*pcIdentities)][annotation("__deref_out_ecount(*pcIdentities)")] LPWSTR **pppwzIdentities,
[out, retval] SIZE_T *pcIdentities);
[helpstring("Gets the current settings context for engine")]
HRESULT GetSettingsContext(
[out, retval] ISettingsContext** SettingsContext);
};
//_____________________________________________________________________________
//
// ISettingsItem - Generic item class for navigating namespace virtual doc.
// This class describe the common functionality of config
// item - like get/put value of the item, enumerating
// attributes associted with config item, getting or enumerating
// child items, add child items etc.
//_____________________________________________________________________________
//
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsItem),
helpstring("ISettingsItem Interface")
]
interface ISettingsItem : IUnknown
{
[helpstring("Gets the name of the current item")]
HRESULT GetName(
[out, retval] BSTR* Name);
[helpstring("Gets the current value from this item")]
HRESULT GetValue(
[out, retval] VARIANT* Value);
[helpstring("Sets the current value in this item")]
HRESULT SetValue(
[in] const VARIANT* Value);
//
// Type Information
//
[helpstring("Gets the type information for this item")]
HRESULT GetSettingType(
[out, retval] WcmSettingType* Type);
[helpstring("Gets the type information for this item")]
HRESULT GetDataType(
[out, retval] WcmDataType* Type);
//
// GetValueRaw - Gets the value from the current item as
// a byte array. The caller must release the
// returned data by calling CoTaskMemFree.
//
HRESULT GetValueRaw(
[out, size_is(,*DataSize)] BYTE** Data,
[out, retval] ULONG* DataSize);
//
// SetValueRaw - Sets the value of the current item.
// The value is given as a byte array.
//
HRESULT SetValueRaw(
[in] LONG DataType,
[in, size_is(DataSize)] const BYTE* Data,
[in] ULONG DataSize);
//
// Child access api
//
[helpstring("Reports whether the current item has any child item")]
HRESULT HasChild(
[out, retval] BOOL* ItemHasChild);
[helpstring("Gets the dictionary of children")]
HRESULT Children(
[out, retval] IItemEnumerator** Children);
[helpstring("Gets an existing child")]
HRESULT GetChild(
[in, string] const WCHAR* Name,
[out, retval] ISettingsItem** Child);
[helpstring("Gets a setting object specified by path")]
HRESULT GetSettingByPath(
[in, string] const WCHAR* Path,
[out, retval] ISettingsItem** Setting);
[helpstring("Creates a setting object specified by path")]
HRESULT CreateSettingByPath(
[in, string] const WCHAR* Path,
[out, retval] ISettingsItem** Setting);
[helpstring("Removes a setting object specified by path")]
HRESULT RemoveSettingByPath(
[in, string] const WCHAR* Path);
//
// List api
[helpstring("Gets the list information for this item")]
HRESULT GetListKeyInformation(
[out] BSTR* KeyName,
[out, retval] WcmDataType* DataType);
[helpstring("Creates a new list element")]
HRESULT CreateListElement(
[in] const VARIANT* KeyData,
[out, retval] ISettingsItem** Child);
[helpstring("Removes an existing list element")]
HRESULT RemoveListElement(
[in, string] LPCWSTR ElementName);
//
// Attribute access API
//
[helpstring("Gets the dictionary of attributes")]
HRESULT Attributes(
[out, retval] IItemEnumerator** Attributes);
[helpstring("Gets value from an attribute")]
HRESULT GetAttribute(
[in, string] const WCHAR* Name,
[out, retval] VARIANT* Value);
[helpstring("Get the full path of the current item")]
HRESULT GetPath(
[out, retval] BSTR* Path);
[helpstring("Get the restrictions defined on this item")]
HRESULT GetRestrictionFacets(
[out, retval] WcmRestrictionFacets* RestrictionFacets);
[helpstring("Get the information for a given restriction")]
HRESULT GetRestriction(
[in] WcmRestrictionFacets RestrictionFacet,
[out, retval] VARIANT *FacetData);
[helpstring("Get the value of the key for this list item")]
HRESULT GetKeyValue(
[out, retval] VARIANT *Value);
};
//_____________________________________________________________________________
//
// ISettingsNamespace interface
//_____________________________________________________________________________
//
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsNamespace),
helpstring("ISettingsNamespace Interface")
]
interface ISettingsNamespace : IUnknown
{
[helpstring("Gets the identity of this namespace")]
HRESULT GetIdentity(
[out, retval] ISettingsIdentity** SettingsID);
[helpstring("Gets the settings enumerator of this namespace")]
HRESULT Settings(
[out, retval] IItemEnumerator** Settings);
//
// Methods
//
[helpstring("Makes changes to be persistent and visible to next client")]
HRESULT Save(
[in] BOOL PushSettings,
[out, retval] ISettingsResult** Result);
[helpstring("Gets a setting object specified by path")]
HRESULT GetSettingByPath(
[in, string] const WCHAR* Path,
[out, retval] ISettingsItem** Setting);
[helpstring("Creates a setting object specified by path")]
HRESULT CreateSettingByPath(
[in, string] const WCHAR* Path,
[out, retval] ISettingsItem** Setting);
[helpstring("Removes a setting object specified by path")]
HRESULT RemoveSettingByPath(
[in, string] const WCHAR* Path);
[helpstring("Gets value from an attribute")]
HRESULT GetAttribute(
[in, string] const WCHAR* Name,
[out, retval] VARIANT* Value);
};
//_____________________________________________________________________________
//
// ISettingsResult interface
//_____________________________________________________________________________
//
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsResult),
helpstring("ISettingsResult Interface")
]
interface ISettingsResult : IUnknown
{
[helpstring("Returns the description of the error")]
HRESULT GetDescription([out,retval] BSTR* description);
[helpstring("Returns the HRESULT error code for the error")]
HRESULT GetErrorCode([out,retval] HRESULT * hrOut);
[helpstring("Returns the description of the context surrounding the error")]
HRESULT GetContextDescription([out,retval] BSTR * description);
[helpstring("Returns the line on which the error occurred")]
HRESULT GetLine([out,retval] DWORD * dwLine);
[helpstring("Returns the column on which the error occurred")]
HRESULT GetColumn([out,retval] DWORD * dwColumn);
[helpstring("Returns the file or path where the error occured")]
HRESULT GetSource([out,retval] BSTR * file);
};
//_____________________________________________________________________________
//
// ISettingsContext interface
//_____________________________________________________________________________
//
cpp_quote("#define LIMITED_VALIDATION_MODE 0x00000001")
[
local,
object, nonextensible, pointer_default(unique),
uuid(UUID_ISettingsContext),
helpstring("ISettingsContext Interface"),
]
interface ISettingsContext : IUnknown
{
[helpstring("Serializes the data in this context into the provided stream")]
HRESULT Serialize(
[in] IStream *pStream,
[in] ITargetInfo *pTarget);
[helpstring("Deserializes the data in the provided stream into this context")]
HRESULT Deserialize(
[in] IStream *pStream,
[in] ITargetInfo *pTarget,
[out, size_is(,*pcResultCount)] ISettingsResult ***pppResults,
[out, retval] SIZE_T *pcResultCount);
[helpstring("Sets a user defined piece of data")]
HRESULT SetUserData([in] void *pUserData);
[helpstring("Gets a user defined piece of data")]
HRESULT GetUserData([out, retval] void **pUserData);
[helpstring("Gets the namespaces that exist in the context")]
HRESULT GetNamespaces([out, retval] IItemEnumerator **ppNamespaceIds);
[helpstring("Gets the setting changes from the context for the given namespace")]
HRESULT GetStoredSettings(
[in] ISettingsIdentity *pIdentity,
[out] IItemEnumerator **ppAddedSettings,
[out] IItemEnumerator **ppModifiedSettings,
[out] IItemEnumerator **ppDeletedSettings);
[helpstring("Reverts the setting in the namespace")]
HRESULT RevertSetting(
[in] ISettingsIdentity *pIdentity,
[in] LPCWSTR pwzSetting);
};
//_____________________________________________________________________________
//
// Type library and CoClass definitions for dispatch api
//_____________________________________________________________________________
//
#ifndef MAKE_VERSION
#define MAKE_VERSION(a,b) a##.##b
#endif
[
uuid(UUID_LibraryWcm),
helpfile("WcmConfig.HLP"),
helpstring("Settings Management Infrastructure Library"),
lcid(0), //lcid(0x0409),
version( MAKE_VERSION(WCMTYPELIB_MAJOR_VERSION, WCMTYPELIB_MINOR_VERSION) )
]
library Wcm
{
importlib("stdole32.tlb");
[
uuid(UUID_ClassSettingsEngine),
helpstring("SMI engine class")
]
coclass SettingsEngine
{
[default] interface ISettingsEngine;
};
};