[XDK][PSDK][DDK] Share some Se types between winnt and ntifs/wdm. WIP.

svn path=/trunk/; revision=68058
This commit is contained in:
Amine Khaldi 2015-06-07 09:57:36 +00:00
parent 42d76b52a0
commit b0f2f00f53
5 changed files with 67 additions and 52 deletions

View file

@ -30,6 +30,7 @@
extern "C" { extern "C" {
#endif #endif
/* Dependencies */ /* Dependencies */
#include <ntddk.h> #include <ntddk.h>
#include <excpt.h> #include <excpt.h>
@ -63,6 +64,7 @@ typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
/****************************************************************************** /******************************************************************************
* Security Manager Types * * Security Manager Types *
******************************************************************************/ ******************************************************************************/
#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
#define SID_IDENTIFIER_AUTHORITY_DEFINED #define SID_IDENTIFIER_AUTHORITY_DEFINED
typedef struct _SID_IDENTIFIER_AUTHORITY { typedef struct _SID_IDENTIFIER_AUTHORITY {
@ -84,6 +86,7 @@ typedef struct _SID {
} SID, *PISID; } SID, *PISID;
#endif #endif
#define SID_REVISION 1 #define SID_REVISION 1
#define SID_MAX_SUB_AUTHORITIES 15 #define SID_MAX_SUB_AUTHORITIES 15
#define SID_RECOMMENDED_SUB_AUTHORITIES 1 #define SID_RECOMMENDED_SUB_AUTHORITIES 1

View file

@ -76,6 +76,7 @@ __drv_Mode_impl(WDM_INCLUDED)
extern "C" { extern "C" {
#endif #endif
#if !defined(_NTHALDLL_) && !defined(_BLDR_) #if !defined(_NTHALDLL_) && !defined(_BLDR_)
#define NTHALAPI DECLSPEC_IMPORT #define NTHALAPI DECLSPEC_IMPORT
#else #else
@ -2514,9 +2515,12 @@ extern NTKERNELAPI ULONG NtGlobalFlag;
typedef PVOID PSECURITY_DESCRIPTOR; typedef PVOID PSECURITY_DESCRIPTOR;
typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION; typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
typedef ULONG ACCESS_MASK, *PACCESS_MASK; typedef ULONG ACCESS_MASK, *PACCESS_MASK;
typedef PVOID PACCESS_TOKEN; typedef PVOID PACCESS_TOKEN;
typedef PVOID PSID; typedef PVOID PSID;
#define DELETE 0x00010000L #define DELETE 0x00010000L
#define READ_CONTROL 0x00020000L #define READ_CONTROL 0x00020000L
#define WRITE_DAC 0x00040000L #define WRITE_DAC 0x00040000L
@ -2594,6 +2598,7 @@ typedef struct _PRIVILEGE_SET {
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
} PRIVILEGE_SET,*PPRIVILEGE_SET; } PRIVILEGE_SET,*PPRIVILEGE_SET;
typedef enum _SECURITY_IMPERSONATION_LEVEL { typedef enum _SECURITY_IMPERSONATION_LEVEL {
SecurityAnonymous, SecurityAnonymous,
SecurityIdentification, SecurityIdentification,
@ -2601,6 +2606,7 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL {
SecurityDelegation SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
@ -2609,6 +2615,7 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL {
#define SECURITY_DYNAMIC_TRACKING (TRUE) #define SECURITY_DYNAMIC_TRACKING (TRUE)
#define SECURITY_STATIC_TRACKING (FALSE) #define SECURITY_STATIC_TRACKING (FALSE)
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
typedef struct _SECURITY_QUALITY_OF_SERVICE { typedef struct _SECURITY_QUALITY_OF_SERVICE {
@ -2625,6 +2632,7 @@ typedef struct _SE_IMPERSONATION_STATE {
SECURITY_IMPERSONATION_LEVEL Level; SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
#define OWNER_SECURITY_INFORMATION (0x00000001L) #define OWNER_SECURITY_INFORMATION (0x00000001L)
#define GROUP_SECURITY_INFORMATION (0x00000002L) #define GROUP_SECURITY_INFORMATION (0x00000002L)
#define DACL_SECURITY_INFORMATION (0x00000004L) #define DACL_SECURITY_INFORMATION (0x00000004L)

View file

@ -4462,43 +4462,60 @@ typedef struct _SECURITY_ATTRIBUTES {
BOOL bInheritHandle; BOOL bInheritHandle;
} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
/******************************************************************************
* Security Manager Types *
******************************************************************************/
typedef PVOID PACCESS_TOKEN;
typedef PVOID PSID;
typedef enum _SECURITY_IMPERSONATION_LEVEL { typedef enum _SECURITY_IMPERSONATION_LEVEL {
SecurityAnonymous, SecurityAnonymous,
SecurityIdentification, SecurityIdentification,
SecurityImpersonation, SecurityImpersonation,
SecurityDelegation SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
typedef struct _SECURITY_QUALITY_OF_SERVICE { typedef struct _SECURITY_QUALITY_OF_SERVICE {
DWORD Length; DWORD Length;
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
BOOLEAN EffectiveOnly; BOOLEAN EffectiveOnly;
} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; } SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
typedef PVOID PACCESS_TOKEN;
typedef struct _SE_IMPERSONATION_STATE { typedef struct _SE_IMPERSONATION_STATE {
PACCESS_TOKEN Token; PACCESS_TOKEN Token;
BOOLEAN CopyOnOpen; BOOLEAN CopyOnOpen;
BOOLEAN EffectiveOnly; BOOLEAN EffectiveOnly;
SECURITY_IMPERSONATION_LEVEL Level; SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
#define SID_IDENTIFIER_AUTHORITY_DEFINED
typedef struct _SID_IDENTIFIER_AUTHORITY { typedef struct _SID_IDENTIFIER_AUTHORITY {
BYTE Value[6]; BYTE Value[6];
} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
#endif
typedef PVOID PSID; #ifndef SID_DEFINED
#define SID_DEFINED
typedef struct _SID { typedef struct _SID {
BYTE Revision; BYTE Revision;
BYTE SubAuthorityCount; BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority; SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
#ifdef MIDL_PASS
[size_is(SubAuthorityCount)] DWORD SubAuthority[*];
#else
DWORD SubAuthority[ANYSIZE_ARRAY]; DWORD SubAuthority[ANYSIZE_ARRAY];
#endif
} SID, *PISID; } SID, *PISID;
#endif
#define SECURITY_MIN_SID_SIZE (sizeof(SID)) #define SECURITY_MIN_SID_SIZE (sizeof(SID))
#define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)) #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))

View file

@ -7,9 +7,16 @@ $if (_WDMDDK_)
typedef PVOID PSECURITY_DESCRIPTOR; typedef PVOID PSECURITY_DESCRIPTOR;
typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION; typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
typedef ULONG ACCESS_MASK, *PACCESS_MASK; typedef ULONG ACCESS_MASK, *PACCESS_MASK;
$endif (_WDMDDK_)
$if (_WDMDDK_ || _WINNT_)
typedef PVOID PACCESS_TOKEN; typedef PVOID PACCESS_TOKEN;
typedef PVOID PSID; typedef PVOID PSID;
$endif (_WDMDDK_ || _WINNT_)
$if (_WDMDDK_)
#define DELETE 0x00010000L #define DELETE 0x00010000L
#define READ_CONTROL 0x00020000L #define READ_CONTROL 0x00020000L
#define WRITE_DAC 0x00040000L #define WRITE_DAC 0x00040000L
@ -87,6 +94,9 @@ typedef struct _PRIVILEGE_SET {
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
} PRIVILEGE_SET,*PPRIVILEGE_SET; } PRIVILEGE_SET,*PPRIVILEGE_SET;
$endif(_WDMDDK_)
$if(_WDMDDK_ || _WINNT_)
typedef enum _SECURITY_IMPERSONATION_LEVEL { typedef enum _SECURITY_IMPERSONATION_LEVEL {
SecurityAnonymous, SecurityAnonymous,
SecurityIdentification, SecurityIdentification,
@ -94,6 +104,9 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL {
SecurityDelegation SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
$endif (_WDMDDK_ || _WINNT_)
$if (_WDMDDK_)
#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
@ -102,10 +115,13 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL {
#define SECURITY_DYNAMIC_TRACKING (TRUE) #define SECURITY_DYNAMIC_TRACKING (TRUE)
#define SECURITY_STATIC_TRACKING (FALSE) #define SECURITY_STATIC_TRACKING (FALSE)
$endif (_WDMDDK_)
$if (_WDMDDK_ || _WINNT_)
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
typedef struct _SECURITY_QUALITY_OF_SERVICE { typedef struct _SECURITY_QUALITY_OF_SERVICE {
ULONG Length; $ULONG Length;
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
BOOLEAN EffectiveOnly; BOOLEAN EffectiveOnly;
@ -118,6 +134,9 @@ typedef struct _SE_IMPERSONATION_STATE {
SECURITY_IMPERSONATION_LEVEL Level; SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
$endif (_WDMDDK_ || _WINNT_)
$if (_WDMDDK_)
#define OWNER_SECURITY_INFORMATION (0x00000001L) #define OWNER_SECURITY_INFORMATION (0x00000001L)
#define GROUP_SECURITY_INFORMATION (0x00000002L) #define GROUP_SECURITY_INFORMATION (0x00000002L)
#define DACL_SECURITY_INFORMATION (0x00000004L) #define DACL_SECURITY_INFORMATION (0x00000004L)
@ -393,28 +412,32 @@ typedef enum _WELL_KNOWN_SID_TYPE {
WinThisOrganizationCertificateSid = 82, WinThisOrganizationCertificateSid = 82,
} WELL_KNOWN_SID_TYPE; } WELL_KNOWN_SID_TYPE;
$endif (_NTDDK_) $endif (_NTDDK_)
$if (_NTIFS_) $if (_NTIFS_ || _WINNT_)
#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
#define SID_IDENTIFIER_AUTHORITY_DEFINED #define SID_IDENTIFIER_AUTHORITY_DEFINED
typedef struct _SID_IDENTIFIER_AUTHORITY { typedef struct _SID_IDENTIFIER_AUTHORITY {
UCHAR Value[6]; $UCHAR Value[6];
} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
#endif #endif
#ifndef SID_DEFINED #ifndef SID_DEFINED
#define SID_DEFINED #define SID_DEFINED
typedef struct _SID { typedef struct _SID {
UCHAR Revision; $UCHAR Revision;
UCHAR SubAuthorityCount; $UCHAR SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority; SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
#ifdef MIDL_PASS #ifdef MIDL_PASS
[size_is(SubAuthorityCount)] ULONG SubAuthority[*]; [size_is(SubAuthorityCount)] $ULONG SubAuthority[*];
#else #else
ULONG SubAuthority[ANYSIZE_ARRAY]; $ULONG SubAuthority[ANYSIZE_ARRAY];
#endif #endif
} SID, *PISID; } SID, *PISID;
#endif #endif
$endif (_NTIFS_ || _WINNT_)
$if (_NTIFS_)
#define SID_REVISION 1 #define SID_REVISION 1
#define SID_MAX_SUB_AUTHORITIES 15 #define SID_MAX_SUB_AUTHORITIES 15
#define SID_RECOMMENDED_SUB_AUTHORITIES 1 #define SID_RECOMMENDED_SUB_AUTHORITIES 1

View file

@ -2567,43 +2567,7 @@ typedef struct _SECURITY_ATTRIBUTES {
BOOL bInheritHandle; BOOL bInheritHandle;
} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
typedef enum _SECURITY_IMPERSONATION_LEVEL { $include(setypes.h)
SecurityAnonymous,
SecurityIdentification,
SecurityImpersonation,
SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
typedef struct _SECURITY_QUALITY_OF_SERVICE {
DWORD Length;
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
BOOLEAN EffectiveOnly;
} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
typedef PVOID PACCESS_TOKEN;
typedef struct _SE_IMPERSONATION_STATE {
PACCESS_TOKEN Token;
BOOLEAN CopyOnOpen;
BOOLEAN EffectiveOnly;
SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
typedef struct _SID_IDENTIFIER_AUTHORITY {
BYTE Value[6];
} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
typedef PVOID PSID;
typedef struct _SID {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
DWORD SubAuthority[ANYSIZE_ARRAY];
} SID, *PISID;
#define SECURITY_MIN_SID_SIZE (sizeof(SID)) #define SECURITY_MIN_SID_SIZE (sizeof(SID))
#define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)) #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))