|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
dsp.h
Abstract:
Private macros/definitions/prototypes for implementing a portion of the LSA store in the DS
Author:
Mac McLain (MacM) Jan 17, 1997
Environment:
User Mode
Revision History:
--*/
#ifndef __DSATTRS_H__
#define __DSATTRS_H__
typedef enum _LSAPDS_DS_CLASSES {
LsapDsClassXRef = 0, LsapDsClassTrustedDomain, LsapDsClassSecret, LsapDsClassLast
} LSAPDS_DS_CLASSES, *PLSAPDS_DS_CLASSES;
typedef enum _LSAPDS_DS_ATTRS {
LsapDsAttrSamAccountName, // Machines sam account name
LsapDsAttrSid, // Sid attribute
LsapDsAttrSecDesc, LsapDsAttrNamingContext, // Naming context
LsapDsAttrMachineRole, // Machine role
LsapDsAttrMachineDns, // Dns name on the machine object
LsapDsAttrInitialIncomingAuth, LsapDsAttrInitialOutgoingAuth, LsapDsAttrDnsRoot, // Domain Dns root
LsapDsAttrSamAccountControl, // SAM user account control fields
LsapDsAttrTrustPartner, // Trust partner for trusted domain objects
LsapDsAttrTrustPartnerFlat, // Flat name of partner for trusted domain objects
LsapDsAttrDefaultSecDesc, // Default object security descriptor
LsapDsAttrSpn, // Client SPN
LsapDsAttrLast
} LSAPDS_SRCH_ATTRS;
typedef enum _LSAPDS_DS_GUIDS {
LsapDsGuidTrust, LsapDsGuidFlatName, LsapDsGuidInitialIncoming, LsapDsGuidInitialOutgoing, LsapDsGuidSid, LsapDsGuidAttributes, LsapDsGuidIncoming, LsapDsGuidOutgoing, LsapDsGuidDirection, LsapDsGuidPartner, LsapDsGuidPosix, LsapDsGuidType, LsapDsGuidSecret, LsapDsGuidCurrent, LsapDsGuidCurrentTime, LsapDsGuidPrevious, LsapDsguidPreviousTime, LsapDsGuidDelegatedTrustCreation
} LSAPDS_DS_GUIDS, *PLSAPDS_DS_GUIDS;
extern GUID LsapDsGuidList[ ];
extern ULONG LsapDsAttributeIds[LsapDsAttrLast]; extern ULONG LsapDsClassIds[LsapDsClassLast];
extern ATTR LsapDsClasses[LsapDsClassLast]; extern ATTR LsapDsAttrs[LsapDsAttrLast];
//
// Specially constructed multiple attributes that
//
extern ATTR LsapDsMachineDnsHost[ 1 ]; #define LsapDsMachineDnsHostCount ( sizeof( LsapDsMachineDnsHost ) / sizeof( ATTR ) )
#define LsapDsMachineClientSetAttrsCount 5
extern ATTR LsapDsMachineClientSetAttrs[ LsapDsMachineClientSetAttrsCount ];
extern ATTR LsapDsMachineSpn[ 1 ]; #define LsapDsMachineSpnCount ( sizeof( LsapDsMachineSpn ) / sizeof( ATTR ) )
extern ATTR LsapDsServerReferenceBl[ 1 ]; #define LsapDsServerReferenceCountBl ( sizeof( LsapDsServerReferenceBl ) / sizeof( ATTR ) )
#define LsapDsDomainNameSearchCount 2
extern ATTR LsapDsDomainNameSearch [ LsapDsDomainNameSearchCount ];
#define LsapDsDnsRootWellKnownObjectCount 1
extern ATTR LsapDsDnsRootWellKnownObject[ LsapDsDnsRootWellKnownObjectCount ];
extern ATTR LsapDsTDOQuotaAttributes[ 3 ]; #define LsapDsTDOQuotaAttributesCount ( sizeof( LsapDsTDOQuotaAttributes ) / sizeof( ATTR ) )
//
// Used for the trusted domain object fixup on reboot
//
#define LsapDsTrustedDomainFixupAttributeCount 11
extern ATTR LsapDsTrustedDomainFixupAttributes[ LsapDsTrustedDomainFixupAttributeCount ];
#define LsapDsTrustedDomainFixupXRefCount 3
extern ATTR LsapDsTrustedDomainFixupXRefAttributes[ LsapDsTrustedDomainFixupXRefCount ];
#define LsapDsForestInfoSearchAttributeCount 6
extern ATTR LsapDsForestInfoSearchAttributes[ LsapDsForestInfoSearchAttributeCount ];
#define LsapDsITAFixupAttributeCount 2
extern ATTR LsapDsITAFixupAttributes[ LsapDsITAFixupAttributeCount ];
//
// Macros to help with the manipulation of attributes
//
#define LSAP_DS_SET_DS_ATTRIBUTE_STRING( pattr, string ) \
(pattr)->AttrVal.pAVal->valLen = wcslen( string ) * sizeof( WCHAR ); \ (pattr)->AttrVal.pAVal->pVal = (PUCHAR)string; \
#define LSAP_DS_SET_DS_ATTRIBUTE_UNICODE( pattr, string ) \
(pattr)->AttrVal.pAVal->valLen = (string)->Length; \ (pattr)->AttrVal.pAVal->pVal = (PUCHAR)(string)->Buffer; \
#define LSAP_DS_SET_DS_ATTRIBUTE_ULONG( pattr, ulongval ) \
(pattr)->AttrVal.pAVal->valLen = sizeof( ULONG ); \ (pattr)->AttrVal.pAVal->pVal = (PUCHAR)&ulongval; \
#define LSAP_DS_SET_DS_ATTRIBUTE_SID( pattr, sid ) \
(pattr)->AttrVal.pAVal->valLen = RtlLengthSid( sid ); \ (pattr)->AttrVal.pAVal->pVal = (PUCHAR)sid; \
#define LSAP_DS_SET_DS_ATTRIBUTE_DSNAME( pattr, dsname ) \
(pattr)->AttrVal.pAVal->valLen = dsname->structLen; \ (pattr)->AttrVal.pAVal->pVal = (PUCHAR)dsname; \
#define LSAP_DS_GET_DS_ATTRIBUTE_LENGTH( pattr ) \
(pattr)->AttrVal.pAVal->valLen
#define LSAP_DS_GET_DS_ATTRIBUTE_AS_ULONG( pattr ) \
(*(PULONG)((pattr)->AttrVal.pAVal->pVal) )
#define LSAP_DS_GET_DS_ATTRIBUTE_AS_DSNAME( pattr ) \
((PDSNAME)((pattr)->AttrVal.pAVal->pVal ))
#define LSAP_DS_GET_DS_ATTRIBUTE_AS_PWSTR( pattr ) \
((PWSTR)((pattr)->AttrVal.pAVal->pVal ))
#define LSAP_DS_GET_DS_ATTRIBUTE_AS_USN( pattr ) \
((PUSN)((pattr)->AttrVal.pAVal->pVal ))
#define LSAP_DS_GET_DS_ATTRIBUTE_AS_PBYTE( pattr ) \
((PBYTE)((pattr)->AttrVal.pAVal->pVal ))
//
// GUID for the trusted domain auth property set
//
extern GUID LsapDsTrustedDomainAuthPropSet; #endif // __DSATTRS_H__
|