1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_EVCOLL
7 #define _INC_EVCOLL
8 #if (_WIN32_WINNT >= 0x0600)
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 typedef enum _EC_SUBSCRIPTION_CONFIGURATION_MODE {
14   EcConfigurationModeNormal         = 0,
15   EcConfigurationModeCustom         = 1,
16   EcConfigurationModeMinLatency     = 2,
17   EcConfigurationModeMinBandwidth   = 3
18 } EC_SUBSCRIPTION_CONFIGURATION_MODE;
19 
20 typedef enum _EC_SUBSCRIPTION_CONTENT_FORMAT {
21   EcContentFormatEvents         = 1,
22   EcContentFormatRenderedText   = 2
23 } EC_SUBSCRIPTION_CONTENT_FORMAT;
24 
25 typedef enum _EC_SUBSCRIPTION_CREDENTIALS_TYPE {
26   EcSubscriptionCredDefault        = 0,
27   EcSubscriptionCredNegotiate      = 1,
28   EcSubscriptionCredDigest         = 2,
29   EcSubscriptionCredBasic          = 3,
30   EcSubscriptionCredLocalMachine   = 4
31 } EC_SUBSCRIPTION_CREDENTIALS_TYPE;
32 
33 typedef enum _EC_SUBSCRIPTION_DELIVERY_MODE {
34   EcDeliveryModePull   = 1,
35   EcDeliveryModePush   = 2
36 } EC_SUBSCRIPTION_DELIVERY_MODE;
37 
38 typedef enum _EC_SUBSCRIPTION_PROPERTY_ID {
39   EcSubscriptionEnabled                        = 0,
40   EcSubscriptionEventSources                   = 1,
41   EcSubscriptionEventSourceAddress             = 2,
42   EcSubscriptionEventSourceEnabled             = 3,
43   EcSubscriptionEventSourceUserName            = 4,
44   EcSubscriptionEventSourcePassword            = 5,
45   EcSubscriptionDescription                    = 6,
46   EcSubscriptionURI                            = 7,
47   EcSubscriptionConfigurationMode              = 8,
48   EcSubscriptionExpires                        = 9,
49   EcSubscriptionQuery                          = 10,
50   EcSubscriptionTransportName                  = 11,
51   EcSubscriptionTransportPort                  = 12,
52   EcSubscriptionDeliveryMode                   = 13,
53   EcSubscriptionDeliveryMaxItems               = 14,
54   EcSubscriptionDeliveryMaxLatencyTime         = 15,
55   EcSubscriptionHeartbeatInterval              = 16,
56   EcSubscriptionLocale                         = 17,
57   EcSubscriptionContentFormat                  = 18,
58   EcSubscriptionLogFile                        = 19,
59   EcSubscriptionPublisherName                  = 20,
60   EcSubscriptionCredentialsType                = 21,
61   EcSubscriptionCommonUserName                 = 22,
62   EcSubscriptionCommonPassword                 = 23,
63   EcSubscriptionHostName                       = 24,
64   EcSubscriptionReadExistingEvents             = 25,
65   EcSubscriptionDialect                        = 26,
66   EcSubscriptionType                           = 27,
67   EcSubscriptionAllowedIssuerCAs               = 28,
68   EcSubscriptionAllowedSubjects                = 29,
69   EcSubscriptionDeniedSubjects                 = 30,
70   EcSubscriptionAllowedSourceDomainComputers   = 31
71 } EC_SUBSCRIPTION_PROPERTY_ID;
72 
73 typedef enum _EC_SUBSCRIPTION_RUNTIME_STATUS_ACTIVE_STATUS {
74   EcRuntimeStatusActiveStatusDisabled   = 1,
75   EcRuntimeStatusActiveStatusActive     = 2,
76   EcRuntimeStatusActiveStatusInactive   = 3,
77   EcRuntimeStatusActiveStatusTrying     = 4
78 } EC_SUBSCRIPTION_RUNTIME_STATUS_ACTIVE_STATUS;
79 
80 typedef enum _EC_SUBSCRIPTION_TYPE {
81   EcSubscriptionTypeSourceInitiated      = 0,
82   EcSubscriptionTypeCollectorInitiated   = 1
83 } EC_SUBSCRIPTION_TYPE;
84 
85 typedef enum _EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID {
86   EcSubscriptionRunTimeStatusActive              = 0,
87   EcSubscriptionRunTimeStatusLastError           = 1,
88   EcSubscriptionRunTimeStatusLastErrorMessage    = 2,
89   EcSubscriptionRunTimeStatusLastErrorTime       = 3,
90   EcSubscriptionRunTimeStatusNextRetryTime       = 4,
91   EcSubscriptionRunTimeStatusEventSources        = 5,
92   EcSubscriptionRunTimeStatusLastHeartbeatTime   = 6
93 } EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID;
94 
95 typedef struct _EC_VARIANT {
96   __C89_NAMELESS union {
97     BOOL      BooleanVal;
98     UINT32    UInt32Val;
99     ULONGLONG DateTimeVal;
100     LPCWSTR   StringVal;
101     PBYTE     BinaryVal;
102     WINBOOL   *BooleanArr;
103     INT32*    Int32Arr;
104     LPWSTR    *StringArr;
105   };
106   DWORD Count;
107   DWORD Type;
108 } EC_VARIANT, *PEC_VARIANT;
109 
110 typedef enum _EC_VARIANT_TYPE {
111   EcVarTypeNull                    = 0,
112   EcVarTypeBoolean                 = 1,
113   EcVarTypeUInt32                  = 2,
114   EcVarTypeDateTime                = 3,
115   EcVarTypeString                  = 4,
116   EcVarObjectArrayPropertyHandle   = 5
117 } EC_VARIANT_TYPE;
118 
119 typedef LPVOID EC_HANDLE;
120 
121 WINBOOL WINAPI EcClose(
122   EC_HANDLE Object
123 );
124 
125 WINBOOL WINAPI EcDeleteSubscription(
126   LPCWSTR SubscriptionName,
127   DWORD Flags
128 );
129 
130 WINBOOL WINAPI EcEnumNextSubscription(
131   EC_HANDLE SubscriptionEnum,
132   DWORD SubscriptionNameBufferSize,
133   LPWSTR SubscriptionNameBuffer,
134   PDWORD SubscriptionNameBufferUsed
135 );
136 
137 WINBOOL WINAPI EcGetObjectArrayProperty(
138   EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
139   EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
140   DWORD ArrayIndex,
141   DWORD Flags,
142   DWORD PropertyValueBufferSize,
143   PEC_VARIANT PropertyValueBuffer,
144   PDWORD PropertyValueBufferUsed
145 );
146 
147 WINBOOL WINAPI EcGetObjectArraySize(
148   EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
149   PDWORD ObjectArraySize
150 );
151 
152 WINBOOL WINAPI EcGetSubscriptionProperty(
153   EC_HANDLE Subscription,
154   EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
155   DWORD Flags,
156   DWORD PropertyValueBufferSize,
157   PEC_VARIANT PropertyValueBuffer,
158   PDWORD PropertyValueBufferUsed
159 );
160 
161 WINBOOL WINAPI EcGetSubscriptionRunTimeStatus(
162   LPCWSTR SubscriptionName,
163   EC_SUBSCRIPTION_RUNTIME_STATUS_INFO_ID StatusInfoId,
164   LPCWSTR EventSourceName,
165   DWORD Flags,
166   DWORD StatusValueBufferSize,
167   PEC_VARIANT StatusValueBuffer,
168   PDWORD StatusValueBufferUsed
169 );
170 
171 WINBOOL WINAPI EcInsertObjectArrayElement(
172   EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
173   DWORD ArrayIndex
174 );
175 
176 EC_HANDLE WINAPI EcOpenSubscription(
177   LPCWSTR SubscriptionName,
178   DWORD AccessMask,
179   DWORD Flags
180 );
181 
182 EC_HANDLE WINAPI EcOpenSubscriptionEnum(
183   DWORD Flags
184 );
185 
186 WINBOOL WINAPI EcRemoveObjectArrayElement(
187   EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
188   DWORD ArrayIndex
189 );
190 
191 WINBOOL WINAPI EcRetrySubscription(
192   LPCWSTR SubscriptionName,
193   LPCWSTR EventSourceName,
194   DWORD Flags
195 );
196 
197 WINBOOL WINAPI EcSaveSubscription(
198   EC_HANDLE Subscription,
199   DWORD Flags
200 );
201 
202 WINBOOL WINAPI EcSetObjectArrayProperty(
203   EC_OBJECT_ARRAY_PROPERTY_HANDLE ObjectArray,
204   EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
205   DWORD ArrayIndex,
206   DWORD Flags,
207   PEC_VARIANT PropertyValue
208 );
209 
210 WINBOOL WINAPI EcSetSubscriptionProperty(
211   EC_HANDLE Subscription,
212   EC_SUBSCRIPTION_PROPERTY_ID PropertyId,
213   DWORD Flags,
214   PEC_VARIANT PropertyValue
215 );
216 
217 #ifdef __cplusplus
218 }
219 #endif
220 #endif /*(_WIN32_WINNT >= 0x0600)*/
221 #endif /*_INC_EVCOLL*/
222