AdtGen.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:8k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //+-----------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (c) Microsoft Corporation 2000
  6. //
  7. // File:        A D T G E N . H
  8. //
  9. // Contents:    definitions of types/functions required for 
  10. //              generating generic audits.
  11. //
  12. //              !!!WARNING!!!
  13. //              This file is included by lsarpc.idl, therefore, if you
  14. //              change it, make sure to clean build the entire DS depot.
  15. //
  16. //
  17. // History:     
  18. //   07-January-2000  kumarp        created
  19. //
  20. //------------------------------------------------------------------------
  21. #ifndef _ADTGEN_H
  22. #define _ADTGEN_H
  23. //
  24. // type of audit 
  25. //
  26. // AUDIT_TYPE_LEGACY 
  27. //     In this case the audit event schema is stored in a .mc file.
  28. //
  29. // AUDIT_TYPE_WMI    
  30. //     The schema is stored in WMI. (currently not supported)
  31. //
  32. #define AUDIT_TYPE_LEGACY 1
  33. #define AUDIT_TYPE_WMI    2
  34. //
  35. // Type of parameters passed in the AUDIT_PARAMS.Parameters array
  36. // 
  37. // Use the AdtInitParams function to initialize and prepare 
  38. // an array of audit parameters.
  39. //
  40. typedef enum _AUDIT_PARAM_TYPE
  41. {
  42.     //
  43.     // do we need this?
  44.     //
  45.     APT_None = 1,
  46.     //
  47.     // NULL terminated string 
  48.     //
  49.     APT_String,
  50.     //
  51.     // unsigned long
  52.     //
  53.     APT_Ulong,
  54.     //
  55.     // a pointer. use for specifying handles/pointers
  56.     // (32 bit on 32 bit systems and 64 bit on 64 bit systems)
  57.     // Note that the memory to which the pointer points to
  58.     // is not marshalled when using this type. Use this when you
  59.     // are interested in the absolute value of the pointer.
  60.     // A good example of this is when specifying HANDLE values.
  61.     //
  62.     APT_Pointer,
  63.     //
  64.     // SID
  65.     //
  66.     APT_Sid,
  67.     //
  68.     // Logon ID (LUID)
  69.     //
  70.     APT_LogonId,
  71.     //
  72.     // Object Type List
  73.     //
  74.     APT_ObjectTypeList,
  75.     
  76. } AUDIT_PARAM_TYPE;
  77. // 
  78. // There are two types of flags that can be used with a parameter.
  79. //
  80. // - formatting flag
  81. //   This defines the appearance of a parameter when
  82. //   written to the eventlog. Such flags may become obsolete
  83. //   when we move to WMI auditing.
  84. //
  85. // - control flag
  86. //   This causes a specified action to be taken that affects 
  87. //   a parameter value.
  88. //
  89. //   For example:
  90. //   If you use the AP_PrimaryLogonId/AP_ClientLogonId flag,
  91. //   the system will capture the logon-id from the process/thread token.
  92. //
  93. #define AP_ParamTypeBits  8
  94. #define AP_ParamTypeMask  0x000000ffL
  95. //
  96. // the flags values below have overlapping values. this is ok since
  97. // the scope of each flag is limited to the type to which it applies.
  98. //
  99. //
  100. // APT_Ulong : format flag : causes a number to appear in hex
  101. //
  102. #define AP_FormatHex      (0x0001L << AP_ParamTypeBits)
  103. //
  104. // APT_Ulong : format flag : causes a number to be treated as access-mask.
  105. //                           The meaning of each bit depends on the associated
  106. //                           object type.
  107. //
  108. #define AP_AccessMask     (0x0002L << AP_ParamTypeBits)
  109.                                                        
  110. //
  111. // APT_String : format flag : causes a string to be treated as a file-path
  112. //
  113. #define AP_Filespec       (0x0001L << AP_ParamTypeBits)
  114. //
  115. // APT_LogonId : control flag : logon-id is captured from the process token
  116. //
  117. #define AP_PrimaryLogonId (0x0001L << AP_ParamTypeBits)
  118. //
  119. // APT_LogonId : control flag : logon-id is captured from the thread token
  120. //
  121. #define AP_ClientLogonId  (0x0002L << AP_ParamTypeBits)
  122. //
  123. // internal helper macros
  124. //
  125. #define ApExtractType(TypeFlags)  ((AUDIT_PARAM_TYPE)(TypeFlags & AP_ParamTypeMask))
  126. #define ApExtractFlags(TypeFlags) ((TypeFlags & ~AP_ParamTypeMask))
  127. //
  128. // Element of an object-type-list
  129. //
  130. // The AUDIT_OBJECT_TYPES structure identifies an object type element 
  131. // in a hierarchy of object types. The AccessCheckByType functions use 
  132. // an array of such structures to define a hierarchy of an object and 
  133. // its subobjects, such as property sets and properties.
  134. //
  135. typedef struct _AUDIT_OBJECT_TYPE
  136. {
  137.     GUID        ObjectType;     // guid of the (sub)object
  138.     USHORT      Flags;          // currently not defined
  139.     USHORT      Level;          // level within the hierarchy. 
  140.                                 // 0 is the root level
  141.     ACCESS_MASK AccessMask;     // access-mask for this (sub)object
  142. } AUDIT_OBJECT_TYPE, *PAUDIT_OBJECT_TYPE;
  143. typedef struct _AUDIT_OBJECT_TYPES
  144. {
  145.     USHORT Count;               // number of object-types in pObjectTypes
  146.     USHORT Flags;               // currently not defined
  147. #ifdef MIDL_PASS
  148.     [size_is(Count)]
  149. #endif
  150.     AUDIT_OBJECT_TYPE* pObjectTypes; // array of object-types
  151. } AUDIT_OBJECT_TYPES, *PAUDIT_OBJECT_TYPES;
  152. //
  153. // Structure that defines a single audit parameter.
  154. //
  155. // LsaGenAuditEvent accepts an array of such elements to
  156. // represent the parameters of the audit to be generated.
  157. //
  158. // It is best to initialize this structure using AdtInitParams function.
  159. // This will ensure compatibility with any future changes to this
  160. // structure.
  161. //
  162. typedef struct _AUDIT_PARAM
  163. {
  164.     AUDIT_PARAM_TYPE Type;      // type
  165.     ULONG Length;               // currently unused
  166.     DWORD Flags;                // currently unused
  167. #ifdef MIDL_PASS
  168.     [switch_type(AUDIT_PARAM_TYPE),switch_is(Type)]
  169. #endif
  170.     union 
  171.     {
  172. #ifdef MIDL_PASS
  173.         [default]
  174. #endif
  175.         ULONG_PTR Data0;
  176. #ifdef MIDL_PASS
  177.         [case(APT_String)]
  178.         [string]
  179. #endif
  180.         PWSTR  String;
  181.         
  182. #ifdef MIDL_PASS
  183.         [case(APT_Ulong,
  184.               APT_Pointer)]
  185. #endif
  186.         ULONG_PTR u;
  187.         
  188. #ifdef MIDL_PASS
  189.         [case(APT_Sid)]
  190. #endif
  191.         SID* psid;
  192.         
  193. #ifdef MIDL_PASS
  194.         [case(APT_LogonId)]
  195. #endif
  196.         ULONG LogonId_LowPart;
  197. #ifdef MIDL_PASS
  198.         [case(APT_ObjectTypeList)]
  199. #endif
  200.         AUDIT_OBJECT_TYPES* pObjectTypes;
  201.     };
  202.     
  203. #ifdef MIDL_PASS
  204.     [switch_type(AUDIT_PARAM_TYPE),switch_is(Type)]
  205. #endif
  206.     union 
  207.     {
  208. #ifdef MIDL_PASS
  209.         [default]
  210. #endif
  211.         ULONG_PTR Data1;
  212. #ifdef MIDL_PASS
  213.         [case(APT_LogonId)]
  214. #endif
  215.         LONG LogonId_HighPart;
  216.     };
  217.     
  218. } AUDIT_PARAM, *PAUDIT_PARAM;
  219. //
  220. // Audit control flags. To be used with AUDIT_PARAMS.Flags
  221. //
  222. #define APF_AuditFailure 0x00000000  // generate a failure audit
  223. #define APF_AuditSuccess 0x00000001  // generate a success audit when set,
  224.                                      // a failure audit otherwise. 
  225. //
  226. // set of valid audit control flags 
  227. //
  228. #define APF_ValidFlags   (APF_AuditSuccess)
  229. //
  230. // Audit parameters passed to LsaGenAuditEvent
  231. //
  232. typedef struct _AUDIT_PARAMS
  233. {
  234.     ULONG  Length;              // size in bytes
  235.     DWORD  Flags;               // currently unused
  236.     USHORT Count;               // number of parameters
  237. #ifdef MIDL_PASS
  238.     [size_is(Count)]
  239. #endif    
  240.     AUDIT_PARAM* Parameters;    // array of parameters
  241. } AUDIT_PARAMS, *PAUDIT_PARAMS;
  242. //
  243. // Defines the elements of a legacy audit event.
  244. //
  245. typedef struct _AUTHZ_AUDIT_EVENT_TYPE_LEGACY
  246. {
  247.     //
  248.     // Audit category ID
  249.     //
  250.     USHORT CategoryId;
  251.     //
  252.     // Audit event ID
  253.     //
  254.     USHORT AuditId;
  255.     //
  256.     // Parameter count
  257.     //
  258.     USHORT ParameterCount;
  259.     
  260. } AUTHZ_AUDIT_EVENT_TYPE_LEGACY, *PAUTHZ_AUDIT_EVENT_TYPE_LEGACY;
  261. typedef
  262. #ifdef MIDL_PASS
  263. [switch_type(BYTE)]
  264. #endif
  265. union _AUTHZ_AUDIT_EVENT_TYPE_UNION
  266. {
  267. #ifdef MIDL_PASS
  268.         [case(AUDIT_TYPE_LEGACY)]
  269. #endif
  270.         AUTHZ_AUDIT_EVENT_TYPE_LEGACY Legacy;
  271. } AUTHZ_AUDIT_EVENT_TYPE_UNION, *PAUTHZ_AUDIT_EVENT_TYPE_UNION;
  272. //
  273. // description of an audit event
  274. //
  275. typedef
  276. struct _AUTHZ_AUDIT_EVENT_TYPE_OLD
  277. {
  278.     // version number
  279.     ULONG Version;
  280.     DWORD dwFlags;
  281.     LONG  RefCount;
  282.     ULONG_PTR hAudit;
  283.     LUID  LinkId;
  284. #ifdef MIDL_PASS
  285.     [switch_is(Version)] 
  286. #endif
  287.     AUTHZ_AUDIT_EVENT_TYPE_UNION u;
  288. } AUTHZ_AUDIT_EVENT_TYPE_OLD;
  289. typedef
  290. #ifdef MIDL_PASS
  291. [handle]
  292. #endif
  293. AUTHZ_AUDIT_EVENT_TYPE_OLD* PAUTHZ_AUDIT_EVENT_TYPE_OLD;
  294. typedef
  295. #ifdef MIDL_PASS
  296. [context_handle]
  297. #endif
  298. PVOID AUDIT_HANDLE, *PAUDIT_HANDLE;
  299. BOOL
  300. AuthzpRegisterAuditEvent(
  301.     IN  PAUTHZ_AUDIT_EVENT_TYPE_OLD pAuditEventType,
  302.     OUT PAUDIT_HANDLE     phAuditContext
  303.     );
  304. BOOL
  305. AuthzpUnregisterAuditEvent(
  306.     IN OUT AUDIT_HANDLE* phAuditContext
  307.     );
  308. #endif //_ADTGEN_H