1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #include <winapifamily.h>
7 
8 #ifndef _ADTGEN_H
9 #define _ADTGEN_H
10 
11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
12 
13 #define AUDIT_TYPE_LEGACY 1
14 #define AUDIT_TYPE_WMI 2
15 
16 typedef enum _AUDIT_PARAM_TYPE {
17   APT_None = 1,
18   APT_String,
19   APT_Ulong,
20   APT_Pointer,
21   APT_Sid,
22   APT_LogonId,
23   APT_ObjectTypeList,
24   APT_Luid,
25   APT_Guid,
26   APT_Time,
27   APT_Int64,
28   APT_IpAddress,
29   APT_LogonIdWithSid
30 } AUDIT_PARAM_TYPE;
31 
32 #define AP_ParamTypeBits 8
33 #define AP_ParamTypeMask __MSABI_LONG(0xff)
34 
35 #define AP_FormatHex (__MSABI_LONG(0x1) << AP_ParamTypeBits)
36 #define AP_AccessMask (__MSABI_LONG(0x2) << AP_ParamTypeBits)
37 #define AP_Filespec (__MSABI_LONG(0x1) << AP_ParamTypeBits)
38 #define AP_SidAsLogonId (__MSABI_LONG(0x1) << AP_ParamTypeBits)
39 #define AP_PrimaryLogonId (__MSABI_LONG(0x1) << AP_ParamTypeBits)
40 #define AP_ClientLogonId (__MSABI_LONG(0x2) << AP_ParamTypeBits)
41 #define ApExtractType(TypeFlags) ((AUDIT_PARAM_TYPE) (TypeFlags & AP_ParamTypeMask))
42 #define ApExtractFlags(TypeFlags) ((TypeFlags & ~AP_ParamTypeMask))
43 
44 #define _AUTHZ_SS_MAXSIZE 128
45 
46 #define APF_AuditFailure 0x0
47 #define APF_AuditSuccess 0x1
48 
49 #define APF_ValidFlags (APF_AuditSuccess)
50 
51 #define AUTHZ_ALLOW_MULTIPLE_SOURCE_INSTANCES 0x1
52 #define AUTHZ_MIGRATED_LEGACY_PUBLISHER 0x2
53 
54 #define AUTHZ_AUDIT_INSTANCE_INFORMATION 0x2
55 
56 typedef struct _AUDIT_OBJECT_TYPE {
57   GUID ObjectType;
58   USHORT Flags;
59   USHORT Level;
60   ACCESS_MASK AccessMask;
61 } AUDIT_OBJECT_TYPE,*PAUDIT_OBJECT_TYPE;
62 
63 typedef struct _AUDIT_OBJECT_TYPES {
64   USHORT Count;
65   USHORT Flags;
66 #ifdef __WIDL__
67   [size_is (Count)]
68 #endif
69   AUDIT_OBJECT_TYPE *pObjectTypes;
70 } AUDIT_OBJECT_TYPES,*PAUDIT_OBJECT_TYPES;
71 
72 typedef struct _AUDIT_IP_ADDRESS {
73   BYTE pIpAddress[_AUTHZ_SS_MAXSIZE];
74 } AUDIT_IP_ADDRESS,*PAUDIT_IP_ADDRESS;
75 
76 typedef struct _AUDIT_PARAM {
77   AUDIT_PARAM_TYPE Type;
78   ULONG Length;
79   DWORD Flags;
80 #ifdef __WIDL__
81   [switch_type (AUDIT_PARAM_TYPE), switch_is (Type)]
82 #else
83   __C89_NAMELESS
84 #endif
85   union {
86 #ifdef __WIDL__
87     [default]
88 #endif
89     ULONG_PTR Data0;
90 #ifdef __WIDL__
91     [case (APT_String)]
92     [string]
93 #endif
94     PWSTR String;
95 #ifdef __WIDL__
96     [case (APT_Ulong, APT_Pointer)]
97 #endif
98     ULONG_PTR u;
99 #ifdef __WIDL__
100     [case (APT_Sid)]
101 #endif
102     SID *psid;
103 #ifdef __WIDL__
104     [case (APT_Guid)]
105 #endif
106     GUID *pguid;
107 #ifdef __WIDL__
108     [case (APT_LogonId)]
109 #endif
110     ULONG LogonId_LowPart;
111 #ifdef __WIDL__
112     [case (APT_ObjectTypeList)]
113 #endif
114     AUDIT_OBJECT_TYPES *pObjectTypes;
115 #ifdef __WIDL__
116     [case (APT_IpAddress)]
117 #endif
118     AUDIT_IP_ADDRESS *pIpAddress;
119   };
120 #ifdef __WIDL__
121   [switch_type (AUDIT_PARAM_TYPE), switch_is (Type)]
122 #else
123   __C89_NAMELESS
124 #endif
125   union {
126 #ifdef __WIDL__
127     [default]
128 #endif
129     ULONG_PTR Data1;
130 #ifdef __WIDL__
131     [case (APT_LogonId)]
132 #endif
133     LONG LogonId_HighPart;
134   };
135 } AUDIT_PARAM,*PAUDIT_PARAM;
136 
137 typedef struct _AUDIT_PARAMS {
138   ULONG Length;
139   DWORD Flags;
140   USHORT Count;
141 #ifdef __WIDL__
142   [size_is (Count)]
143 #endif
144   AUDIT_PARAM *Parameters;
145 } AUDIT_PARAMS,*PAUDIT_PARAMS;
146 typedef struct _AUTHZ_AUDIT_EVENT_TYPE_LEGACY {
147   USHORT CategoryId;
148   USHORT AuditId;
149   USHORT ParameterCount;
150 } AUTHZ_AUDIT_EVENT_TYPE_LEGACY,*PAUTHZ_AUDIT_EVENT_TYPE_LEGACY;
151 
152 typedef
153 #ifdef __WIDL__
154 [switch_type (BYTE)]
155 #endif
156 union _AUTHZ_AUDIT_EVENT_TYPE_UNION {
157 #ifdef __WIDL__
158   [case (AUDIT_TYPE_LEGACY)]
159 #endif
160   AUTHZ_AUDIT_EVENT_TYPE_LEGACY Legacy;
161 } AUTHZ_AUDIT_EVENT_TYPE_UNION,*PAUTHZ_AUDIT_EVENT_TYPE_UNION;
162 
163 typedef
164 struct _AUTHZ_AUDIT_EVENT_TYPE_OLD {
165   ULONG Version;
166   DWORD dwFlags;
167   LONG RefCount;
168   ULONG_PTR hAudit;
169   LUID LinkId;
170 #ifdef __WIDL__
171   [switch_is (Version)]
172 #endif
173   AUTHZ_AUDIT_EVENT_TYPE_UNION u;
174 } AUTHZ_AUDIT_EVENT_TYPE_OLD;
175 
176 typedef
177 #ifdef __WIDL__
178 [handle]
179 #endif
180 AUTHZ_AUDIT_EVENT_TYPE_OLD *PAUTHZ_AUDIT_EVENT_TYPE_OLD;
181 #define AUTHZP_WPD_EVENT 0x10
182 
183 typedef
184 #ifdef __WIDL__
185 [context_handle]
186 #endif
187 PVOID AUDIT_HANDLE,*PAUDIT_HANDLE;
188 
189 #endif
190 #endif
191