2025-11-28 00:35:46 +09:00

83 lines
2.7 KiB
C++

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
#include <windows.h>
#include <EvColl.h>
#include <vector>
#include <string>
#include <strsafe.h>
//Track properties of the Subscription
typedef struct _SUBSCRIPTION
{
std::wstring Name;
std::wstring Description;
std::wstring URI;
std::wstring Query;
std::wstring DestinationLog;
std::wstring EventSource;
BOOL EventSourceStatus;
std::wstring EventSourceUserName;
std::wstring EventSourcePassword;
std::wstring CommonUserName;
std::wstring CommonPassword;
EC_SUBSCRIPTION_CONFIGURATION_MODE ConfigMode;
EC_SUBSCRIPTION_DELIVERY_MODE DeliveryMode;
DWORD MaxItems;
DWORD MaxLatencyTime;
DWORD HeartbeatInerval;
EC_SUBSCRIPTION_CONTENT_FORMAT ContentFormat;
EC_SUBSCRIPTION_CREDENTIALS_TYPE CredentialsType;
BOOL SubscriptionStatus;
BOOL ReadExistingEvents;
} SUBSCRIPTION;
//Track Runtime Status
typedef struct _RUNTIME_STATUS
{
std::wstring ActiveStatus;
DWORD LastError;
std::wstring LastErrorMessage;
std::wstring NextRetryTime;
} RUNTIME_STATUS;
//Subscription Management Functions
DWORD CreateSubscription ( const SUBSCRIPTION& sub);
DWORD EnumerateSubscriptions ( void );
DWORD GetRuntimeStatus ( LPCWSTR subscriptionName);
DWORD RetrySubscription(LPCWSTR subscriptionName);
DWORD GetSubscription(LPCWSTR subscriptionName);
//Subscription Information
DWORD GetProperty(EC_HANDLE hSubscription, EC_SUBSCRIPTION_PROPERTY_ID propID, DWORD flags, std::vector<BYTE>& buffer, PEC_VARIANT& vProperty);
DWORD SetProperty(EC_HANDLE hSubscription, EC_SUBSCRIPTION_PROPERTY_ID propID, DWORD flags, PEC_VARIANT& propertyValue);
DWORD GetArrayProperty(EC_OBJECT_ARRAY_PROPERTY_HANDLE hArray, EC_SUBSCRIPTION_PROPERTY_ID propID, DWORD arrayIndex, DWORD flags, std::vector<BYTE>& buffer, PEC_VARIANT& vProperty);
DWORD GetStatus(LPCWSTR subscriptionName, LPCWSTR eventSource, EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID statusInfoID, DWORD flags, std::vector<BYTE>& buffer, PEC_VARIANT& vStatus);
//Event Source Management Functions
DWORD AddEventSource ( EC_HANDLE hSubscription, std::wstring eventSource, BOOL status, std::wstring eventSourceUserName, std::wstring eventSourcePassword );
//Helpers - Conversion Functions - Utils.cpp
std::wstring ConvertEcConfigurationMode( DWORD code );
std::wstring ConvertEcDeliveryMode( DWORD code );
std::wstring ConvertEcContentFormat( DWORD code );
std::wstring ConvertEcCredentialsType( DWORD code );
std::wstring ConvertEcDateTime( ULONGLONG code );