xpmgr/BuildTools/Include/EvColl.h

284 lines
7.8 KiB
C

/*++
Copyright (C) Microsoft Corporation. All rights reserved.
Module Name:
evcoll.h
Abstract:
Event Collector API
--*/
#ifndef __EVCOLL_H__
#define __EVCOLL_H__
#ifdef __cplusplus
extern "C"
{
#endif
typedef HANDLE EC_HANDLE;
typedef HANDLE EC_OBJECT_ARRAY_PROPERTY_HANDLE;
//
// Access Control Permissions
//
/*--------------------------------------------------------------------------
Subscription Definitions
--------------------------------------------------------------------------*/
typedef enum _EC_SUBSCRIPTION_PROPERTY_ID
{
EcSubscriptionEnabled = 0, // EcVarTypeBoolean
EcSubscriptionEventSources, // EcVarObjectArrayPropertyHandle
EcSubscriptionEventSourceAddress, // EcVarTypeString
EcSubscriptionEventSourceEnabled, // EcVarTypeBoolean
EcSubscriptionEventSourceUserName, // EcVarTypeString
EcSubscriptionEventSourcePassword, // EcVarTypeString
EcSubscriptionDescription, // EcVarTypeString
EcSubscriptionURI, // EcVarTypeString
EcSubscriptionConfigurationMode, // EcVarTypeUInt32, EC_SUBSCRIPTION_CONFIGURATION_MODE
EcSubscriptionExpires, // EcVarTypeDateTime
EcSubscriptionQuery, // EcVarTypeString
EcSubscriptionTransportName, // EcVarTypeString
EcSubscriptionTransportPort, // EcVarTypeUInt32
EcSubscriptionDeliveryMode, // EcVarTypeUInt32, EC_SUBSCRIPTION_DELIVERY_MODE
EcSubscriptionDeliveryMaxItems, // EcVarTypeUInt32
EcSubscriptionDeliveryMaxLatencyTime, // EcVarTypeUInt32
EcSubscriptionHeartbeatInterval, // EcVarTypeUInt32
EcSubscriptionLocale, // EcVarTypeString
EcSubscriptionContentFormat, // EcVarTypeUInt32, EC_SUBSCRIPTION_CONTENT_FORMAT
EcSubscriptionLogFile, // EcVarTypeString
EcSubscriptionPublisherName, // EcVarTypeString
EcSubscriptionCredentialsType, // EcVarTypeUInt32, EC_SUBSCRIPTION_CREDENTIALS_TYPE
EcSubscriptionCommonUserName, // EcVarTypeString
EcSubscriptionCommonPassword, // EcVarTypeString
EcSubscriptionHostName, // EcVarTypeString
EcSubscriptionReadExistingEvents, // EcVarTypeBoolean
EcSubscriptionDialect, // EcVarTypeString
EcSubscriptionType, // EcVarTypeUInt32, EC_SUBSCRIPTION_TYPE
EcSubscriptionAllowedIssuerCAs, // EcVarTypeString | EcArrayBitMask
EcSubscriptionAllowedSubjects, // EcVarTypeString | EcArrayBitMask
EcSubscriptionDeniedSubjects, // EcVarTypeString | EcArrayBitMask
EcSubscriptionAllowedSourceDomainComputers, // EcVarTypeString SDDL
EcSubscriptionPropertyIdEND
} EC_SUBSCRIPTION_PROPERTY_ID;
typedef enum _EC_SUBSCRIPTION_CREDENTIALS_TYPE {
EcSubscriptionCredDefault = 0,
EcSubscriptionCredNegotiate,
EcSubscriptionCredDigest,
EcSubscriptionCredBasic,
EcSubscriptionCredLocalMachine
} EC_SUBSCRIPTION_CREDENTIALS_TYPE;
typedef enum _EC_SUBSCRIPTION_TYPE {
EcSubscriptionTypeSourceInitiated = 0,
EcSubscriptionTypeCollectorInitiated = 1
} EC_SUBSCRIPTION_TYPE;
typedef enum _EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID
{
EcSubscriptionRunTimeStatusActive = 0, // EcVarTypeUInt32, EC_SUBSCRIPTION_RUNTIME_STATUS_ACTIVE_STATUS
EcSubscriptionRunTimeStatusLastError, // EcVarTypeUInt32
EcSubscriptionRunTimeStatusLastErrorMessage, // EcVarTypeString
EcSubscriptionRunTimeStatusLastErrorTime, // EcVarTypeDateTime
EcSubscriptionRunTimeStatusNextRetryTime, // EcVarTypeDateTime
EcSubscriptionRunTimeStatusEventSources, // EcVarTypeString | ArrayBitMask
EcSubscriptionRunTimeStatusLastHeartbeatTime, // EcVarTypeDateTime
EcSubscriptionRunTimeStatusInfoIdEND
} EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID;
typedef enum _EC_VARIANT_TYPE
{
EcVarTypeNull = 0,
EcVarTypeBoolean,
EcVarTypeUInt32,
EcVarTypeDateTime,
EcVarTypeString,
EcVarObjectArrayPropertyHandle
} EC_VARIANT_TYPE;
#define EC_VARIANT_TYPE_MASK 0x7f
#define EC_VARIANT_TYPE_ARRAY 128
typedef struct _EC_VARIANT
{
union
{
BOOL BooleanVal;
UINT32 UInt32Val;
ULONGLONG DateTimeVal;
LPCWSTR StringVal;
PBYTE BinaryVal;
BOOL* BooleanArr;
INT32* Int32Arr;
LPWSTR* StringArr;
EC_OBJECT_ARRAY_PROPERTY_HANDLE PropertyHandleVal;
};
DWORD Count; // number of elements not length in bytes. Used for arrays
// and binary/string types.
DWORD Type;
} EC_VARIANT, *PEC_VARIANT;
#define EC_READ_ACCESS 1
#define EC_WRITE_ACCESS 2
#define EC_OPEN_ALWAYS 0
#define EC_CREATE_NEW 1
#define EC_OPEN_EXISTING 2
typedef enum _EC_SUBSCRIPTION_CONFIGURATION_MODE
{
EcConfigurationModeNormal = 0,
EcConfigurationModeCustom,
EcConfigurationModeMinLatency,
EcConfigurationModeMinBandwidth
} EC_SUBSCRIPTION_CONFIGURATION_MODE;
typedef enum _EC_SUBSCRIPTION_DELIVERY_MODE
{
EcDeliveryModePull = 1,
EcDeliveryModePush
} EC_SUBSCRIPTION_DELIVERY_MODE;
typedef enum _EC_SUBSCRIPTION_CONTENT_FORMAT
{
EcContentFormatEvents = 1,
EcContentFormatRenderedText
} EC_SUBSCRIPTION_CONTENT_FORMAT;
typedef enum _EC_SUBSCRIPTION_RUNTIME_STATUS_ACTIVE_STATUS
{
EcRuntimeStatusActiveStatusDisabled = 1,
EcRuntimeStatusActiveStatusActive,
EcRuntimeStatusActiveStatusInactive,
EcRuntimeStatusActiveStatusTrying
} EC_SUBSCRIPTION_RUNTIME_STATUS_ACTIVE_STATUS;
EC_HANDLE WINAPI EcOpenSubscriptionEnum(
DWORD Flags
);
BOOL WINAPI EcEnumNextSubscription(
EC_HANDLE SubscriptionEnum,
DWORD SubscriptionNameBufferSize,
__out_ecount_part_opt(SubscriptionNameBufferSize,*SubscriptionNameBufferUsed)
LPWSTR SubscriptionNameBuffer,
__out PDWORD SubscriptionNameBufferUsed
);
EC_HANDLE WINAPI EcOpenSubscription(
LPCWSTR SubscriptionName,
DWORD AccessMask,
DWORD Flags
);
BOOL WINAPI EcSetSubscriptionProperty(
EC_HANDLE Subscription,
EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
DWORD Flags,
PEC_VARIANT PropertyValue
);
BOOL WINAPI EcGetSubscriptionProperty(
EC_HANDLE Subscription,
EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
DWORD Flags,
DWORD PropertyValueBufferSize,
PEC_VARIANT PropertyValueBuffer,
__out PDWORD PropertyValueBufferUsed
);
BOOL WINAPI EcSaveSubscription(
EC_HANDLE Subscription,
DWORD Flags
);
BOOL WINAPI EcDeleteSubscription(
LPCWSTR SubscriptionName,
DWORD Flags
);
BOOL WINAPI EcGetObjectArraySize(
EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
__out PDWORD ObjectArraySize
);
BOOL WINAPI EcSetObjectArrayProperty(
EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
DWORD ArrayIndex,
DWORD Flags,
PEC_VARIANT PropertyValue
);
BOOL WINAPI EcGetObjectArrayProperty(
EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
DWORD ArrayIndex,
DWORD Flags,
DWORD PropertyValueBufferSize,
PEC_VARIANT PropertyValueBuffer,
__out PDWORD PropertyValueBufferUsed
);
BOOL WINAPI EcInsertObjectArrayElement(
EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
DWORD ArrayIndex
);
BOOL WINAPI EcRemoveObjectArrayElement(
EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
DWORD ArrayIndex
);
BOOL WINAPI EcGetSubscriptionRunTimeStatus(
LPCWSTR SubscriptionName,
EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID StatusInfoId,
LPCWSTR EventSourceName,
DWORD Flags,
DWORD StatusValueBufferSize,
PEC_VARIANT StatusValueBuffer,
__out PDWORD StatusValueBufferUsed
);
BOOL WINAPI EcRetrySubscription(
LPCWSTR SubscriptionName,
LPCWSTR EventSourceName,
DWORD Flags
);
BOOL WINAPI EcClose(
EC_HANDLE Object
);
#ifdef __cplusplus
}
#endif
#endif // __EC_H__