windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/wmicooker/wmicooker.idl
2020-09-26 16:20:57 +08:00

201 lines
6.4 KiB
Plaintext

import "unknwn.idl";
import "wbemcli.idl";
// Following interface allows for management of refreshable objects and enums that
// can be cooked.
[restricted,local,object,uuid(13ED7E55-8D63-41b0-9086-D0C5C17364C8)]
interface IWMIRefreshableCooker : IUnknown
{
// Adds a new instance to the refreshable cooker. The Refreshable Instance
// will be updated on calls to recalc.
HRESULT AddInstance(
[in] IWbemServices* pService, // The object's namespace
[in] IWbemObjectAccess* pCookingClass, // Cooking class
[in] IWbemObjectAccess* pCookingInstance, // An instance of the cooking class
[out] IWbemObjectAccess** ppRefreshableInstance, // A clone of the instance used for refreshing
[out] long* plId // The id of the refreshable cooking instance
);
// Adds a new enumeration to the refreshable cooker. The Refreshable Enumerator
// will be updated on calls to recalc.
HRESULT AddEnum(
[in] IWbemServices* pService, // The object's namespace
[in,string] LPCWSTR szCookingClass, // The cooking class' name
[in] IWbemHiPerfEnum* pRefreshableEnum, // The enumerator passed in from WMI
[out] long* plId // THe id of the refreshable cooking enumerator
);
// Removes the instance or enumerator specified by ulId from the
// Refreshable Cooker.
HRESULT Remove(
[in] long lId
);
// Refreshes all instances and enumerators in the refreshable cooker
HRESULT Refresh();
};
// Following interface allows for refreshable objects of the same class to be
// cooked as a group.
[restricted,local,object,uuid(A239BDF1-0AB1-45a0-8764-159115689589)]
interface IWMISimpleObjectCooker : IUnknown
{
// Sets the class used by the cooker in order to fill out
// instances when cooking. Once the class is set, it cannot
// be reset
HRESULT SetClass(
[in] WCHAR* wszCookingClassName,
[in] IWbemObjectAccess* pCookingClass,
[in] IWbemObjectAccess* pRawClass
);
// Retrieves a new cooked instance and an id which can be used
// to identify it. The instance will not be updated unless
// a sample instance is bound to it via BeginCooking()
HRESULT SetCookedInstance(
[in] IWbemObjectAccess* pCookedInstance,
[out] long* plId
);
// Provides an initial sample for cooking the instance specified
// by ulId. Once the initial sample is set, it can be
// cleared by calling BeginCooking again with another
// instance
HRESULT BeginCooking(
[in] long lId,
[in] IWbemObjectAccess* pSampleInstance,
[in] unsigned long dwRefresherId
);
// Tells the cooker to stop cooking the instance specified
// by ulId. Cooking can be restarted by calling BeginCooking
// again.
HRESULT StopCooking(
[in] long lId
);
// Recalcs all instances using the appropriate cooking instances.
HRESULT Recalc([in] unsigned long dwRefresherId);
// Removes an instance from the object cooker
HRESULT Remove(
[in] long lId
);
// Clears all instances from the cooker.
HRESULT Reset( void );
};
// Following interface allows for simple cooking of properties whose formulas
// can be defined using 1 or 2 value samples.
[restricted,local,object,uuid(510ADF6E-D481-4a64-B74A-CC712E11AA34)]
interface IWMISimpleCooker : IUnknown
{
// Simple method for cooking a two value, one base counter
HRESULT CookRawValues(
[in] DWORD dwCookingType,
[in] DWORD dwNumSamples,
[in, size_is(dwNumSamples)] __int64* anTimeStamp,
[in, size_is(dwNumSamples)] __int64* anRawValue,
[in, size_is(dwNumSamples)] __int64* anBase,
[in] __int64 nTimeFrequency,
[out] __int64* pnResult
);
};
/*
// This interface is a placeholder. We need to decide if the
// methods below are really appropriate for what we are planning
// to do.
[restricted,local,object,uuid(B1ADC67F-09E6-4adc-A45E-05BA3007CE30)]
interface IWMIComplexCooker : public IUnknown
{
// Sets a formula in the cooker. If the formula is known, a known
// id is returned. If not, then the formula is parsed and a new
// id generated
HRESULT SetFormula(
[in] LPCWSTR pwszCookingType,
[out] DWORD* pdwId
);
// General method for cooking a complex value - assumes that the formula follows
// timestamp, time frequency, raw value and base value conventions
HRESULT CookRawValues(
[in] DWORD dwId,
[in] ULONG nNumTimeStamps,
[in,size_is(nNumTimeStamps)] unsigned __int64* pnTimestamps,
[in] unsigned __int64 nTimeFrequency,
[in,size_is(nNumTimeFrequency)] unsigned __int64* pnTimeFrequency,
[in] ULONG nNumRawValues,
[in,size_is(nNumRawValues)] unsigned __int64* pnRawValues,
[in] ULONG nBaseValues,
[in,size_is(nBaseValues)] unsigned __int64* pnBaseValues,
[out] unsigned __int64 pnResult
);
// General method for cooking a free form value by using an array of
// supplied values. The cooker uses the values from the array, in order,
// and applies them to the formula.
HRESULT CookGeneralRawValues(
[in] DWORD dwId,
[in] ULONG nNumValues,
[in,size_is(nNumTimeStamps)] unsigned __int64* pnRawValues
[out] unsigned __int64 pnResult
);
};
// Use arrays of these structures to describe each sample
typedef struct _WMI_COOKING_SAMPLE
{
ULONG ulIndex; // Index in class array
ULONG ulCount; // Num Instances in array
[size_is(ulCount)] IWbemObjectAccess** apInstances;
} WMI_COOKING_SAMPLE;
// This interface is a placeholder. We need to decide if the
// methods below are really appropriate for what we are planning
// to do.
[restricted,local,object,uuid(979FF10D-D616-4448-BF08-3A79E01506B0)]
interface IWMIComplexObjectCooker : public IUnknown
{
// Sets the class used by the cooker in order to fill out
// instances when cooking.
HRESULT SetClass(
[in] IWbemObjectAccess* pCookingClass,
);
// Sets the initial instances. From this point forwards, additional
// instances are supplied at Recalc time.
HRESULT SetFirstSample(
[in] ULONG ulCount,
[in,size_is(ulCount)] WMI_COOKING_SAMPLE* apSampleData
);
// Clears the cooking data and all samples - Initial sample is now required
HRESULT Reset( void );
// Recalcs the specified instance using the supplied raw data. If this
// is an initial sample, this sets the sample but doesn't atually recalc
// anything. Fills out any properties that require cooking. Any others
// must be filled out by the user themselves. This assumes a single instance
// is used for cooking.
HRESULT Recalc(
[in,out] IWbemObjectAccess* pInstance,
[in] ULONG ulCount,
[in,size_is(ulCount)] WMI_COOKING_SAMPLE* apSampleData
);
};
*/