mirror of https://github.com/UMSKT/xpmgr.git
138 lines
6.2 KiB
Plaintext
138 lines
6.2 KiB
Plaintext
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
import "objidl.idl";
|
|
import "propidl.idl";
|
|
|
|
typedef [v1_enum] enum tagCONDITION_TYPE
|
|
{
|
|
CT_AND_CONDITION, // AND of subconditions
|
|
CT_OR_CONDITION, // OR of subconditions
|
|
CT_NOT_CONDITION, // NOT of a single subcondition
|
|
CT_LEAF_CONDITION, // No subcondition: property, operation, value.
|
|
} CONDITION_TYPE; // Prefix CT
|
|
|
|
typedef [v1_enum] enum tagCONDITION_OPERATION
|
|
{
|
|
COP_IMPLICIT,
|
|
COP_EQUAL,
|
|
COP_NOTEQUAL,
|
|
COP_LESSTHAN,
|
|
COP_GREATERTHAN,
|
|
COP_LESSTHANOREQUAL,
|
|
COP_GREATERTHANOREQUAL,
|
|
COP_VALUE_STARTSWITH, // LIKE FOO%
|
|
COP_VALUE_ENDSWITH, // LIKE %FOO
|
|
COP_VALUE_CONTAINS, // LIKE %FOO%
|
|
COP_VALUE_NOTCONTAINS, // NOT LIKE %FOO%
|
|
COP_DOSWILDCARDS, // "DOS wildcards" and the like
|
|
COP_WORD_EQUAL, // Contains a word/phrase somewhere.
|
|
COP_WORD_STARTSWITH, // Contains a word/phrase beginning with this
|
|
COP_APPLICATION_SPECIFIC, // Application specific, presumably uses the Value.
|
|
} CONDITION_OPERATION; // Prefix COP
|
|
|
|
[
|
|
object,
|
|
uuid(4FDEF69C-DBC9-454e-9910-B34F3C64B510),
|
|
pointer_default(unique),
|
|
]
|
|
interface IRichChunk : IUnknown
|
|
{
|
|
// The position *pFirstPos is zero-based.
|
|
// Any one of pFirstPos, pLength, ppsz and pValue may be NULL.
|
|
[local]
|
|
HRESULT GetData([out, unique, annotation("__out_opt")] ULONG* pFirstPos,
|
|
[out, unique, annotation("__out_opt")] ULONG* pLength,
|
|
[out, unique, annotation("__deref_opt_out_opt")] LPWSTR* ppsz,
|
|
[out, unique, annotation("__out_opt")] PROPVARIANT* pValue);
|
|
|
|
[call_as(GetData)]
|
|
HRESULT RemoteGetData([out] ULONG* pFirstPos,
|
|
[out] ULONG* pLength,
|
|
[out] LPWSTR* ppsz,
|
|
[out] PROPVARIANT* pValue);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(0FC988D4-C935-4b97-A973-46282EA175C8),
|
|
pointer_default(unique),
|
|
]
|
|
interface ICondition : IPersistStream
|
|
{
|
|
// For any node, return what kind of node it is.
|
|
HRESULT GetConditionType([out, retval] CONDITION_TYPE* pNodeType);
|
|
|
|
// riid must be IID_IEnumUnknown, IID_IEnumVARIANT or IID_IObjectArray, or in the case of a negation node IID_ICondition.
|
|
// If this is a leaf node, E_FAIL will be returned.
|
|
// If this is a negation node, then if riid is IID_ICondition, *ppv will be set to a single ICondition, otherwise an enumeration of one.
|
|
// If this is a conjunction or a disjunction, *ppv will be set to an enumeration of the subconditions.
|
|
HRESULT GetSubConditions([in] REFIID riid, [out, retval, iid_is(riid)] void** ppv);
|
|
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// Retrieve the property name, operation and value from the leaf node.
|
|
// Any one of ppszPropertyName, pcop and ppropvar may be NULL.
|
|
[local]
|
|
HRESULT GetComparisonInfo([out, unique, annotation("__deref_opt_out_opt")] LPWSTR *ppszPropertyName,
|
|
[out, unique, annotation("__out_opt")] CONDITION_OPERATION *pcop,
|
|
[out, unique, annotation("__out_opt")] PROPVARIANT *ppropvar);
|
|
|
|
[call_as(GetComparisonInfo)]
|
|
HRESULT RemoteGetComparisonInfo([out] LPWSTR *ppszPropertyName,
|
|
[out] CONDITION_OPERATION *pcop,
|
|
[out] PROPVARIANT *ppropvar);
|
|
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// *ppszValueTypeName will be set to the semantic type of the value, or to NULL if this is not meaningful.
|
|
HRESULT GetValueType([out, retval] LPWSTR* ppszValueTypeName);
|
|
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// If the value of the leaf node is VT_EMPTY, *ppszNormalization will be set to an empty string.
|
|
// If the value is a string (VT_LPWSTR, VT_BSTR or VT_LPSTR), then *ppszNormalization will be set to a
|
|
// character-normalized form of the value.
|
|
// Otherwise, *ppszNormalization will be set to some (character-normalized) string representation of the value.
|
|
HRESULT GetValueNormalization([out, retval] LPWSTR* ppszNormalization);
|
|
|
|
// Return information about what parts of the input produced the property, the operation and the value.
|
|
// Any one of ppPropertyTerm, ppOperationTerm and ppValueTerm may be NULL.
|
|
// For a leaf node returned by the parser, the position information of each IRichChunk identifies the tokens that
|
|
// contributed the property/operation/value, the string value is the corresponding part of the input string, and
|
|
// the PROPVARIANT is VT_EMPTY.
|
|
[local]
|
|
HRESULT GetInputTerms([out, unique, annotation("__out_opt")] IRichChunk** ppPropertyTerm,
|
|
[out, unique, annotation("__out_opt")] IRichChunk** ppOperationTerm,
|
|
[out, unique, annotation("__out_opt")] IRichChunk** ppValueTerm);
|
|
|
|
[call_as(GetInputTerms)]
|
|
HRESULT RemoteGetInputTerms([out] IRichChunk** ppPropertyTerm,
|
|
[out] IRichChunk** ppOperationTerm,
|
|
[out] IRichChunk** ppValueTerm);
|
|
|
|
// Make a deep copy of this ICondition.
|
|
HRESULT Clone([out, retval] ICondition** ppc);
|
|
};
|
|
|
|
[
|
|
uuid(0DB8851D-2E5B-47eb-9208-D28C325A01D7),
|
|
object,
|
|
pointer_default(unique),
|
|
]
|
|
interface ICondition2 : ICondition
|
|
{
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// *ppszLocaleName will be set to the locale name of the value,
|
|
// which may be NULL.
|
|
HRESULT GetLocale([out] LPWSTR* ppszLocaleName);
|
|
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// Retrieve the property key, operation and value from the leaf node.
|
|
// Any one of ppropkey, pcop and ppropvar may be NULL.
|
|
[local] HRESULT GetLeafConditionInfo([out, annotation("__out_opt")] PROPERTYKEY* ppropkey, [out, annotation("__out_opt")] CONDITION_OPERATION* pcop, [out, annotation("__out_opt")] PROPVARIANT* ppropvar);
|
|
|
|
// If this is not a leaf node, E_FAIL will be returned.
|
|
// Retrieve the property key, operation and value from the leaf node.
|
|
// Any one of ppropkey, pcop and ppropvar may be NULL.
|
|
[call_as(GetLeafConditionInfo)]
|
|
HRESULT RemoteGetLeafConditionInfo([out] PROPERTYKEY* ppropkey, [out] CONDITION_OPERATION* pcop, [out] PROPVARIANT* ppropvar);
|
|
}
|
|
|