You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
595 lines
17 KiB
595 lines
17 KiB
/*++
|
|
|
|
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 __DSP_H__
|
|
#define __DSP_H__
|
|
|
|
#include <filtypes.h>
|
|
#include <attids.h>
|
|
#include <dsattrs.h>
|
|
|
|
#ifndef PDSNAME
|
|
typedef DSNAME *PDSNAME;
|
|
#endif
|
|
|
|
#ifndef PATTR
|
|
typedef ATTR *PATTR;
|
|
#endif
|
|
|
|
#ifndef PGUID
|
|
typedef GUID *PGUID;
|
|
#endif
|
|
|
|
#define TENMEG 10485760
|
|
|
|
//
|
|
// Retuns the string name embedded in a DSNAME structure
|
|
//
|
|
#define LsapDsNameFromDsName(pdsname) \
|
|
((pdsname) == NULL ? NULL : (pdsname)->StringName)
|
|
|
|
//
|
|
// Returns the length of the string name embedded in a DSNAME structure
|
|
//
|
|
#define LsapDsNameLenFromDsName(pdsname) \
|
|
((pdsname) == NULL ? 0 : (pdsname)->NameLen)
|
|
|
|
//
|
|
// Returns the length of a unicode string buffer without the trailing NULL
|
|
//
|
|
#define LsapDsGetUnicodeStringLenNoNull(punicode) \
|
|
(((PWSTR)(punicode)->Buffer)[(punicode)->Length / sizeof(WCHAR) - 1] == UNICODE_NULL ? \
|
|
(punicode)->Length - sizeof(WCHAR) : \
|
|
(punicode)->Length)
|
|
|
|
#define LsapDsGetSelfRelativeUnicodeStringLenNoNull(punicode) \
|
|
(((PWSTR)((PBYTE)(punicode) + sizeof(UNICODE_STRING_SR)))[(punicode)->Length / sizeof(WCHAR) - 1] == UNICODE_NULL ? \
|
|
(punicode)->Length - sizeof(WCHAR) : \
|
|
(punicode)->Length)
|
|
|
|
#define LsapDsIsWriteDs( objhandle ) \
|
|
((((LSAP_DB_HANDLE)(objhandle))->fWriteDs && \
|
|
(((LSAP_DB_HANDLE)(objhandle))->ObjectTypeId == TrustedDomainObject || \
|
|
((LSAP_DB_HANDLE)(objhandle))->ObjectTypeId == SecretObject)) ? TRUE : FALSE )
|
|
|
|
#define LsapDsSetHandleWriteDs( objhandle ) (((LSAP_DB_HANDLE)(objhandle))->fWriteDs = TRUE)
|
|
|
|
#define LsapDsWriteDs ( LsaDsStateInfo.UseDs )
|
|
|
|
#define LSAPDS_ALLOC_AND_COPY_STRING_TO_UNICODE_ON_SUCCESS( status, dest, src, len )\
|
|
if ( NT_SUCCESS( status ) ) { \
|
|
\
|
|
(dest)->MaximumLength = (USHORT)(len) + sizeof(WCHAR); \
|
|
(dest)->Buffer = LsapAllocateLsaHeap( (dest)->MaximumLength ); \
|
|
\
|
|
if ( (dest)->Buffer == NULL ) { \
|
|
\
|
|
(status) = STATUS_INSUFFICIENT_RESOURCES; \
|
|
\
|
|
} else { \
|
|
\
|
|
(dest)->Length = (dest)->MaximumLength - sizeof( WCHAR ); \
|
|
RtlCopyMemory( (dest)->Buffer, (src), (dest)->Length ); \
|
|
((WCHAR*)((dest)->Buffer))[(len)/sizeof(WCHAR)] = L'\0'; \
|
|
} \
|
|
}
|
|
|
|
#define LSAPDS_ALLOC_AND_COPY_UNICODE_STRING_ON_SUCCESS( status, _dest_, _src_ ) \
|
|
if ( NT_SUCCESS( status ) ) { \
|
|
\
|
|
( _dest_ )->MaximumLength = ( _src_ )->MaximumLength; \
|
|
( _dest_ )->Buffer = LsapAllocateLsaHeap( (_dest_ )->MaximumLength ); \
|
|
\
|
|
if ( ( _dest_ )->Buffer == NULL ) { \
|
|
\
|
|
(status) = STATUS_INSUFFICIENT_RESOURCES; \
|
|
\
|
|
} else { \
|
|
\
|
|
RtlZeroMemory(( _dest_ )->Buffer, ( _dest_ )->MaximumLength ); \
|
|
( _dest_ )->Length = ( _src_ )->Length; \
|
|
RtlCopyMemory( ( _dest_ )->Buffer, ( _src_ )->Buffer, ( _dest_ )->Length ); \
|
|
} \
|
|
}
|
|
|
|
|
|
#define LSAPDS_ALLOC_AND_COPY_SID_ON_SUCCESS( status, dest, sid ) \
|
|
if ( NT_SUCCESS( status ) ) { \
|
|
\
|
|
(dest) = LsapAllocateLsaHeap( RtlLengthSid( sid ) ); \
|
|
if ( (dest) == NULL ) { \
|
|
\
|
|
(status) = STATUS_INSUFFICIENT_RESOURCES; \
|
|
\
|
|
} else { \
|
|
\
|
|
RtlCopyMemory( (dest), (sid), RtlLengthSid( sid ) ); \
|
|
} \
|
|
}
|
|
|
|
#define LSAPDS_COPY_GUID_ON_SUCCESS( status, dest, src ) \
|
|
if ( NT_SUCCESS( status ) ) { RtlCopyMemory((dest), (src), sizeof( GUID ) ); }
|
|
|
|
|
|
#define LsapDsReturnSuccessIfNoDs \
|
|
if ( !LsapDsWriteDs ) { \
|
|
\
|
|
return( STATUS_SUCCESS ); \
|
|
}
|
|
|
|
BOOL
|
|
SampExistsDsTransaction(
|
|
void
|
|
);
|
|
|
|
//
|
|
// Determines whether a bit is on or not
|
|
//
|
|
#define FLAG_ON(flags,bit) ((flags) & (bit))
|
|
|
|
#define LsapDsLengthAppendRdnLength( dsname, length ) \
|
|
DSNameSizeFromLen( ( LsapDsNameLenFromDsName( dsname ) + 5 + ( ( ( length ) / sizeof( WCHAR ) * 2 ) ) ) )
|
|
|
|
#define LsapDsSetDsaFlags( flag ) \
|
|
SampSetDsa( flag ); \
|
|
|
|
#define LsapDsInitializeAttrBlock( attrblock, attrs, count ) \
|
|
{ (attrblock)->attrCount = (count); \
|
|
(attrblock)->pAttr = (attrs); }
|
|
|
|
#define LSAP_DS_PARTITIONS_CONTAINER L"Partitions"
|
|
#define LSAP_DS_SYSTEM_CONTAINER L"System"
|
|
#define LSAP_DS_TRUSTED_DOMAIN L"trustedDomain"
|
|
#define LSAP_DS_SECRET L"secret"
|
|
#define LSAP_DS_SITES_CONTAINER L"CN=Sites"
|
|
#define LSAP_DS_SUBNET_CONTAINER L"CN=Subnets," LSAP_DS_SITES_CONTAINER
|
|
#define LSAP_DS_PATH_SEP L','
|
|
#define LSAP_DS_PATH_SEP_AS_STRING L","
|
|
#define LSAP_DS_CONTAINER_PREFIX L"CN="
|
|
#define LSAP_DS_SECRET_POSTFIX L" Secret"
|
|
#define LSAP_DS_SECRET_POSTFIX_LEN ((sizeof(LSAP_DS_SECRET_POSTFIX)/sizeof(WCHAR))-1)
|
|
#define LSAP_DS_TRUSTED_DOMAIN_SECRET_PREFIX L"G$$"
|
|
#define LSAP_DS_TRUSTED_DOMAIN_SECRET_PREFIX_SIZE \
|
|
(sizeof( LSAP_DS_TRUSTED_DOMAIN_SECRET_PREFIX ) - sizeof( WCHAR ) )
|
|
#define LSAP_DS_TRUSTED_DOMAIN_SECRET_PREFIX_LENGTH \
|
|
(LSAP_DS_TRUSTED_DOMAIN_SECRET_PREFIX_SIZE/sizeof(WCHAR))
|
|
|
|
#define LSAP_DS_INIT_ATTR(attr, type, cnt, vals) \
|
|
{ (attr).attrTyp = (type); \
|
|
(attr).AttrVal.valCount = (cnt); \
|
|
(attr).AttrVal.pAVal = (vals); }
|
|
|
|
//
|
|
// General flags to be used for all operations
|
|
//
|
|
#define LSAPDS_OP_NO_LOCK 0x00000001
|
|
#define LSAPDS_OP_NO_TRANS 0x00000002
|
|
|
|
//
|
|
// Flags to use for search
|
|
//
|
|
#define LSAPDS_SEARCH_ROOT 0x00008000
|
|
#define LSAPDS_SEARCH_ALL_NCS 0x00010000
|
|
#define LSAPDS_SEARCH_LEVEL 0x00020000
|
|
#define LSAPDS_SEARCH_TREE 0x00040000
|
|
#define LSAPDS_SEARCH_OR 0x00100000
|
|
|
|
#define LSAPDS_SEARCH_FLAGS 0x00168000
|
|
|
|
//
|
|
// Flags to use for Write
|
|
//
|
|
#define LSAPDS_REMOVE_ATTRIBUTE AT_CHOICE_REMOVE_ATT
|
|
#define LSAPDS_REPLACE_ATTRIBUTE AT_CHOICE_REPLACE_ATT
|
|
|
|
#define LSAPDS_WRITE_TYPES 0x00000FFF
|
|
#define LSAPDS_REPL_CHANGE_URGENTLY 0x00002000
|
|
#define LSAPDS_USE_PERMISSIVE_WRITE 0x00001000
|
|
|
|
|
|
//
|
|
// Flags to use for Read
|
|
//
|
|
#define LSAPDS_READ_NO_LOCK LSAPDS_OP_NO_LOCK
|
|
#define LSAPDS_READ_DELETED 0x00002000
|
|
#define LSAPDS_READ_RETURN_NOT_FOUND 0x10000000
|
|
|
|
//
|
|
// Flags to use for Create
|
|
//
|
|
#define LSAPDS_CREATE_TRUSTED 0x00002000
|
|
#define LSAPDS_CREATE_WITH_SD 0x00004000
|
|
|
|
NTSTATUS
|
|
LsapDsMapDsReturnToStatus (
|
|
ULONG DsStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsMapDsReturnToStatusEx (
|
|
IN COMMRES *pComRes
|
|
);
|
|
|
|
VOID
|
|
LsapDsInitializeStdCommArg (
|
|
IN COMMARG *pCommArg,
|
|
IN ULONG Flags
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapAllocAndInitializeDsNameFromUnicode(
|
|
IN PLSA_UNICODE_STRING pObjectName,
|
|
OUT PDSNAME *pDsName
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsSearchUnique(
|
|
IN ULONG Flags,
|
|
IN PDSNAME pContainer,
|
|
IN PATTR pAttrsToMatch,
|
|
IN ULONG cAttrs,
|
|
OUT PDSNAME *ppFoundName
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsSearchNonUnique(
|
|
IN ULONG Flags,
|
|
IN PDSNAME pContainer,
|
|
IN PATTR pAttrToMatch,
|
|
IN ULONG Attrs,
|
|
OUT PDSNAME **pppFoundNames,
|
|
OUT PULONG pcNames
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsFindUnique(
|
|
IN ULONG Flags,
|
|
IN PDSNAME NCName OPTIONAL,
|
|
IN LSAP_DB_OBJECT_TYPE_ID ObjectTypeId,
|
|
IN ATTRVAL *Attribute,
|
|
IN ATTRTYP AttId,
|
|
OUT PDSNAME *FoundObject
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCreateAndSetObject(
|
|
IN PLSA_UNICODE_STRING pObjectName,
|
|
IN ULONG Flags,
|
|
IN ULONG cItems,
|
|
IN ATTRTYP *pAttrTypeList,
|
|
IN ATTRVAL *pAttrValList
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCreateObjectDs(
|
|
IN PDSNAME ObjectName,
|
|
IN ULONG Flags,
|
|
IN ATTRBLOCK *AttrBlock
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsRead (
|
|
IN PUNICODE_STRING pObject,
|
|
IN ULONG fFlags,
|
|
IN ATTRBLOCK *pAttributesToRead,
|
|
OUT ATTRBLOCK *pAttributeValues
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsReadByDsName (
|
|
IN PDSNAME DsName,
|
|
IN ULONG fFlags,
|
|
IN ATTRBLOCK *pAttributesToRead,
|
|
OUT ATTRBLOCK *pAttributeValues
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsRemove (
|
|
IN PDSNAME pObject
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsWrite(
|
|
IN PUNICODE_STRING pObject,
|
|
IN ULONG Flags,
|
|
IN ATTRBLOCK *Attributes
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsWriteByDsName(
|
|
IN PDSNAME DsName,
|
|
IN ULONG Flags,
|
|
IN ATTRBLOCK *Attributes
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsLsaAttributeToDsAttribute(
|
|
IN PLSAP_DB_ATTRIBUTE LsaAttribute,
|
|
OUT PATTR Attr
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsDsAttributeToLsaAttribute(
|
|
IN ATTRVAL *AttVal,
|
|
OUT PLSAP_DB_ATTRIBUTE LsaAttribute
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsIsSecretDsTrustedDomain(
|
|
IN PUNICODE_STRING SecretName,
|
|
IN PLSAP_DB_OBJECT_INFORMATION ObjectInformation,
|
|
IN ULONG Options,
|
|
IN ACCESS_MASK DesiredAccess,
|
|
OUT PLSAPR_HANDLE TDObjHandle,
|
|
OUT BOOLEAN *IsTrustedDomainSecret
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsIsHandleDsObjectTypeHandle(
|
|
IN LSAP_DB_HANDLE Handle,
|
|
IN LSAP_DB_OBJECT_TYPE_ID ObjectType,
|
|
OUT BOOLEAN *IsObjectHandle
|
|
);
|
|
|
|
#define LsapDsIsHandleDsHandle( handle ) \
|
|
(LsaDsStateInfo.UseDs && ((LSAP_DB_HANDLE) (handle))->PhysicalNameDs.Length != 0 )
|
|
#define LsapDsIsFunctionTableValid() LsaDsStateInfo.FunctionTableInitialized
|
|
|
|
NTSTATUS
|
|
LsapDsTrustedDomainSidToLogicalName(
|
|
IN PSID Sid,
|
|
OUT PUNICODE_STRING LogicalNameU
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsInitAllocAsNeededEx(
|
|
IN ULONG Options,
|
|
IN LSAP_DB_OBJECT_TYPE_ID ObjectTypeId,
|
|
OUT PBOOLEAN Reset
|
|
);
|
|
|
|
VOID
|
|
LsapDsDeleteAllocAsNeededEx(
|
|
IN ULONG Options,
|
|
IN LSAP_DB_OBJECT_TYPE_ID ObjectTypeId,
|
|
IN BOOLEAN Reset
|
|
);
|
|
|
|
VOID
|
|
LsapDsDeleteAllocAsNeededEx2(
|
|
IN ULONG Options,
|
|
IN LSAP_DB_OBJECT_TYPE_ID ObjectTypeId,
|
|
IN BOOLEAN Reset,
|
|
IN BOOLEAN RollbackTransaction
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCauseTransactionToCommitOrAbort (
|
|
IN BOOLEAN Commit
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsGetListOfSystemContainerItems(
|
|
IN ULONG ClassId,
|
|
OUT PULONG Items,
|
|
OUT PDSNAME **DsNames
|
|
);
|
|
|
|
//
|
|
// Enumeration flags defined in dbp.h
|
|
//
|
|
NTSTATUS
|
|
LsapDsEnumerateTrustedDomainsEx(
|
|
IN PLSA_ENUMERATION_HANDLE EnumerationContext,
|
|
IN TRUSTED_INFORMATION_CLASS InformationClass,
|
|
OUT PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation,
|
|
IN ULONG PreferedMaximumLength,
|
|
IN OUT PULONG CountReturned,
|
|
IN ULONG EnumerationFlags
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsGetTrustedDomainInfoEx(
|
|
IN PDSNAME ObjectPath,
|
|
IN ULONG ReadOptions,
|
|
IN TRUSTED_INFORMATION_CLASS InformationClass,
|
|
OUT PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation,
|
|
OUT PULONG Size OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsBuildAuthInfoAttribute(
|
|
IN LSAPR_HANDLE Handle,
|
|
IN PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF NewAuthInfo,
|
|
IN PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF PreviousAuthInfo,
|
|
OUT PBYTE *Buffer,
|
|
OUT PULONG Len
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsBuildAuthInfoFromAttribute(
|
|
IN LSAPR_HANDLE Handle,
|
|
IN PBYTE Buffer,
|
|
IN ULONG Len,
|
|
OUT PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF NewAuthInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDecryptAuthDataWithSessionKey(
|
|
IN PLSAP_CR_CIPHER_KEY SessionKey,
|
|
IN PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthInformationInternal,
|
|
IN PTRUSTED_DOMAIN_AUTH_INFORMATION AuthInfo
|
|
);
|
|
|
|
VOID
|
|
LsapDsFreeUnmarshaledAuthInfo(
|
|
IN ULONG Items,
|
|
IN PLSAPR_AUTH_INFORMATION AuthInfo
|
|
);
|
|
|
|
VOID
|
|
LsapDsFreeUnmarshalAuthInfoHalf(
|
|
IN PLSAPR_TRUST_DOMAIN_AUTH_INFO_HALF AuthInfo
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsGetSecretOnTrustedDomainObject(
|
|
IN LSAP_DB_HANDLE TrustedDomainHandle,
|
|
IN OPTIONAL PLSAP_CR_CIPHER_KEY SessionKey OPTIONAL,
|
|
OUT PLSAP_CR_CIPHER_VALUE *CipherCurrent OPTIONAL,
|
|
OUT PLSAP_CR_CIPHER_VALUE *CipherOld OPTIONAL,
|
|
OUT PLARGE_INTEGER CurrentValueSetTime OPTIONAL,
|
|
OUT PLARGE_INTEGER OldValueSetTime OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsSetSecretOnTrustedDomainObject(
|
|
IN LSAP_DB_HANDLE TrustedDomainHandle,
|
|
IN ULONG AuthDataType,
|
|
IN PLSAP_CR_CLEAR_VALUE ClearCurrent,
|
|
IN PLSAP_CR_CLEAR_VALUE ClearOld,
|
|
IN PLARGE_INTEGER CurrentValueSetTime
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsAuthDataOnTrustedDomainObject(
|
|
IN LSAP_DB_HANDLE TrustedDomainHandle,
|
|
IN BOOLEAN Incoming,
|
|
IN ULONG AuthDataType,
|
|
IN PLSAP_CR_CLEAR_VALUE ClearCurrent,
|
|
IN PLSAP_CR_CLEAR_VALUE ClearOld,
|
|
IN PLARGE_INTEGER CurrentValueSetTime
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsEnumerateTrustedDomainsAsSecrets(
|
|
IN OUT PLSAP_DB_NAME_ENUMERATION_BUFFER DbEnumerationBuffer
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsEnumerateSecrets(
|
|
IN OUT PLSAP_DB_NAME_ENUMERATION_BUFFER EnumerationBuffer
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDbOpenObjectDs(
|
|
IN PLSAP_DB_OBJECT_INFORMATION ObjectInformation,
|
|
IN PDSNAME DsName,
|
|
IN ACCESS_MASK DesiredAccess,
|
|
IN ULONG Options,
|
|
OUT PLSAPR_HANDLE ObjectHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapSceNotify(
|
|
IN SECURITY_DB_DELTA_TYPE DeltaType,
|
|
IN SECURITY_DB_OBJECT_TYPE ObjectType,
|
|
IN PSID ObjectSid OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapNetNotifyDelta (
|
|
IN SECURITY_DB_TYPE DbType,
|
|
IN LARGE_INTEGER SerialNumber,
|
|
IN SECURITY_DB_DELTA_TYPE DeltaType,
|
|
IN SECURITY_DB_OBJECT_TYPE ObjectType,
|
|
IN ULONG ObjectRid,
|
|
IN PSID ObjectSid,
|
|
IN PUNICODE_STRING ObjectName,
|
|
IN DWORD ReplicateImmediately,
|
|
IN PSAM_DELTA_DATA MemberId
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCopyDsNameLsa(
|
|
OUT PDSNAME *Dest,
|
|
IN PDSNAME Source
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsDomainUpgradeRegistryToDs(
|
|
IN BOOLEAN DeleteOldValues
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsSecretUpgradeRegistryToDs(
|
|
IN BOOLEAN DeleteOldValues
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsDomainUpgradeInterdomainTrustAccountsToDs(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCreateInterdomainTrustAccount(
|
|
IN LSAPR_HANDLE TrustedDomainObject
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsDeleteInterdomainTrustAccount(
|
|
IN LSAPR_HANDLE TrustedDomainObject
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsCreateInterdomainTrustAccountByDsName(
|
|
IN PDSNAME TrustedDomainPath,
|
|
IN PUNICODE_STRING FlatName
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsFixupTrustedDomainObjectOnRestart(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
LsapDsContinueTransaction(
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapBuildForestTrustInfoLists(
|
|
IN LSAPR_HANDLE PolicyHandle,
|
|
IN PLIST_ENTRY TrustList
|
|
);
|
|
|
|
VOID
|
|
LsapDsForestFreeTrustBlobList(
|
|
IN PLIST_ENTRY TrustList
|
|
);
|
|
|
|
NTSTATUS
|
|
LsapDsTrustedDomainObjectNameForDomain(
|
|
IN PUNICODE_STRING TrustedDomainName,
|
|
IN BOOLEAN NameAsFlatName,
|
|
OUT PDSNAME *DsObjectName
|
|
);
|
|
|
|
BOOLEAN
|
|
LsapNullUuid(
|
|
IN const UUID *pUuid
|
|
);
|
|
|
|
#endif
|