Headers diff for ntdsapi.dll between 5.2.3790.3959-Windows 5.0 and 6.0.6001.18000-Windows 6.0 versions



 ntdsapi.h (5.2.3790.3959-Windows 5.0)   ntdsapi.h (6.0.6001.18000-Windows 6.0) 
skipping to change at line 64 skipping to change at line 64
typedef GUID UUID; typedef GUID UUID;
typedef void * RPC_AUTH_IDENTITY_HANDLE; typedef void * RPC_AUTH_IDENTITY_HANDLE;
typedef void VOID; typedef void VOID;
#endif #endif
// Following constants define the Active Directory Behavior // Following constants define the Active Directory Behavior
// Version numbers. // Version numbers.
#define DS_BEHAVIOR_WIN2000 0 #define DS_BEHAVIOR_WIN2000 0
#define DS_BEHAVIOR_WIN2003_WITH_MIXED_DOMAINS 1 #define DS_BEHAVIOR_WIN2003_WITH_MIXED_DOMAINS 1
#define DS_BEHAVIOR_WIN2003 2 #define DS_BEHAVIOR_WIN2003 2
#define DS_BEHAVIOR_LONGHORN 3
#define DS_DEFAULT_LOCALE \ #define DS_DEFAULT_LOCALE \
(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), \ (MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), \
SORT_DEFAULT)) SORT_DEFAULT))
#define DS_DEFAULT_LOCALE_COMPARE_FLAGS (NORM_IGNORECASE | \ #define DS_DEFAULT_LOCALE_COMPARE_FLAGS (NORM_IGNORECASE | \
NORM_IGNOREKANATYPE | \ NORM_IGNOREKANATYPE | \
NORM_IGNORENONSPACE | \ NORM_IGNORENONSPACE | \
NORM_IGNOREWIDTH | \ NORM_IGNOREWIDTH | \
SORT_STRINGSORT ) SORT_STRINGSORT )
skipping to change at line 347 skipping to change at line 348
// ******************** // ********************
// Allow the Bind to use delegate service level, so that you can // Allow the Bind to use delegate service level, so that you can
// do ntdsapi operations that require delegation, such as // do ntdsapi operations that require delegation, such as
// DsAddSidHistory, and DsReplicaSyncAll(). Most operations do // DsAddSidHistory, and DsReplicaSyncAll(). Most operations do
// not require DELEGATE so this flag should only be specified // not require DELEGATE so this flag should only be specified
// if you need it, because if you bind to a rogue server with // if you need it, because if you bind to a rogue server with
// the DELEGATE flag, you'll allow the rogue server to use your // the DELEGATE flag, you'll allow the rogue server to use your
// credentials to connect back to a non-rogue server and perform // credentials to connect back to a non-rogue server and perform
// operations other than you intended. // operations other than you intended.
#define NTDSAPI_BIND_ALLOW_DELEGATION (0x00000001) #define NTDSAPI_BIND_ALLOW_DELEGATION (0x00000001)
// With AD/AM, a single machine, could have multiple "AD's" on a
// single server. Since DsBindXxxx() will not pick an AD/AM
// instance without an instance specifier ( ":389" ), it can be
// difficult (well impossible) to determine from just a server
// name, what the instance annotation or instance guid is. This
// option will take a server name and find the first available
// AD or AD/AM instance. WARNING: The results could be non-
// deterministic on a server w/ multiple instances.
#define NTDSAPI_BIND_FIND_BINDING (0x00000002)
// We have a family of API's for binding called DsBindWithSpn.
// Would anyone who called these and passed in a non-NULL SPN
// ever want to negotiate down to something that doesn't use that
// SPN? No, this is a security hole. So, for backwards compatibility
// if you call without an SPN, we'll create one for you, and attempt
// to use it, and allow negotiation to do it's thing if it doesn't
// work.
#define NTDSAPI_BIND_FORCE_KERBEROS (0x00000004)
// ******************** // ********************
// Replica Sync flags // Replica Sync flags
// These flag values are used both as input to DsReplicaSync and // These flag values are used both as input to DsReplicaSync and
// as output from DsReplicaGetInfo, PENDING_OPS, DS_REPL_OPW.ulOptions // as output from DsReplicaGetInfo, PENDING_OPS, DS_REPL_OPW.ulOptions
// ******************** // ********************
// Perform this operation asynchronously. // Perform this operation asynchronously.
// Required when using DS_REPSYNC_ALL_SOURCES // Required when using DS_REPSYNC_ALL_SOURCES
#define DS_REPSYNC_ASYNCHRONOUS_OPERATION 0x00000001 #define DS_REPSYNC_ASYNCHRONOUS_OPERATION 0x00000001
skipping to change at line 405 skipping to change at line 423
#define DS_REPSYNC_NEVER_NOTIFY 0x00001000 #define DS_REPSYNC_NEVER_NOTIFY 0x00001000
// Sync the NC from this source when the DSA is started. // Sync the NC from this source when the DSA is started.
#define DS_REPSYNC_INITIAL 0x00002000 #define DS_REPSYNC_INITIAL 0x00002000
// Use compression when replicating. Saves message size (e.g., network // Use compression when replicating. Saves message size (e.g., network
// bandwidth) at the expense of extra CPU overhead at both the source and // bandwidth) at the expense of extra CPU overhead at both the source and
// destination servers. // destination servers.
#define DS_REPSYNC_USE_COMPRESSION 0x00004000 #define DS_REPSYNC_USE_COMPRESSION 0x00004000
// Sync was abandoned for lack of updates // Sync was abandoned for lack of updates (W2K, W2K3)
#define DS_REPSYNC_ABANDONED 0x00008000 #define DS_REPSYNC_ABANDONED 0x00008000
// Special secret processing
#define DS_REPSYNC_SELECT_SECRETS 0x00008000
// Initial sync in progress // Initial sync in progress
#define DS_REPSYNC_INITIAL_IN_PROGRESS 0x00010000 #define DS_REPSYNC_INITIAL_IN_PROGRESS 0x00010000
// Partial Attribute Set sync in progress // Partial Attribute Set sync in progress
#define DS_REPSYNC_PARTIAL_ATTRIBUTE_SET 0x00020000 #define DS_REPSYNC_PARTIAL_ATTRIBUTE_SET 0x00020000
// Sync is being retried // Sync is being retried
#define DS_REPSYNC_REQUEUE 0x00040000 #define DS_REPSYNC_REQUEUE 0x00040000
// Sync is a notification request from a source // Sync is a notification request from a source
skipping to change at line 433 skipping to change at line 454
// Request critical objects only // Request critical objects only
#define DS_REPSYNC_CRITICAL 0x00200000 #define DS_REPSYNC_CRITICAL 0x00200000
// A full synchronization is in progress // A full synchronization is in progress
#define DS_REPSYNC_FULL_IN_PROGRESS 0x00400000 #define DS_REPSYNC_FULL_IN_PROGRESS 0x00400000
// Synchronization request was previously preempted // Synchronization request was previously preempted
#define DS_REPSYNC_PREEMPTED 0x00800000 #define DS_REPSYNC_PREEMPTED 0x00800000
// Replica has a full (not partial) set of attributes
#define DS_REPSYNC_FULL_REPLICA 0x01000000
// ******************** // ********************
// Replica Add flags // Replica Add flags
// ******************** // ********************
// Perform this operation asynchronously. // Perform this operation asynchronously.
#define DS_REPADD_ASYNCHRONOUS_OPERATION 0x00000001 #define DS_REPADD_ASYNCHRONOUS_OPERATION 0x00000001
// Create a writeable replica. Otherwise, read-only. // Create a writeable replica. Otherwise, read-only.
#define DS_REPADD_WRITEABLE 0x00000002 #define DS_REPADD_WRITEABLE 0x00000002
skipping to change at line 490 skipping to change at line 514
#define DS_REPADD_TWO_WAY 0x00000400 #define DS_REPADD_TWO_WAY 0x00000400
// Request critical objects only // Request critical objects only
// Critical only is only allowed while installing // Critical only is only allowed while installing
// A critical only sync does not bring all objects in the partition. It // A critical only sync does not bring all objects in the partition. It
// replicates just the ones necessary for minimal directory operation. // replicates just the ones necessary for minimal directory operation.
// A normal, non-critical sync must be performed before the partition // A normal, non-critical sync must be performed before the partition
// can be considered fully synchronized. // can be considered fully synchronized.
#define DS_REPADD_CRITICAL 0x00000800 #define DS_REPADD_CRITICAL 0x00000800
// Special secret processing
#define DS_REPADD_SELECT_SECRETS 0x00001000
// Replica has a full (not partial) set of attributes
#define DS_REPADD_FULL_REPLICA 0x01000000
// ******************** // ********************
// Replica Delete flags // Replica Delete flags
// ******************** // ********************
// Perform this operation asynchronously. // Perform this operation asynchronously.
#define DS_REPDEL_ASYNCHRONOUS_OPERATION 0x00000001 #define DS_REPDEL_ASYNCHRONOUS_OPERATION 0x00000001
// The replica being deleted is writeable. // The replica being deleted is writeable.
#define DS_REPDEL_WRITEABLE 0x00000002 #define DS_REPDEL_WRITEABLE 0x00000002
skipping to change at line 538 skipping to change at line 568
#define DS_REPMOD_ASYNCHRONOUS_OPERATION 0x00000001 #define DS_REPMOD_ASYNCHRONOUS_OPERATION 0x00000001
// The replica is writeable. // The replica is writeable.
#define DS_REPMOD_WRITEABLE 0x00000002 #define DS_REPMOD_WRITEABLE 0x00000002
// ******************** // ********************
// Replica Modify fields // Replica Modify fields
// ******************** // ********************
#define DS_REPMOD_UPDATE_FLAGS 0x00000001 #define DS_REPMOD_UPDATE_FLAGS 0x00000001
#define DS_REPMOD_UPDATE_ADDRESS 0x00000002 #define DS_REPMOD_UPDATE_INSTANCE 0x00000002
#define DS_REPMOD_UPDATE_ADDRESS DS_REPMOD_UPDATE_INSTANCE
#define DS_REPMOD_UPDATE_SCHEDULE 0x00000004 #define DS_REPMOD_UPDATE_SCHEDULE 0x00000004
#define DS_REPMOD_UPDATE_RESULT 0x00000008 #define DS_REPMOD_UPDATE_RESULT 0x00000008
#define DS_REPMOD_UPDATE_TRANSPORT 0x00000010 #define DS_REPMOD_UPDATE_TRANSPORT 0x00000010
// ******************** // ********************
// Update Refs fields // Update Refs fields
// ******************** // ********************
// Perform this operation asynchronously. // Perform this operation asynchronously.
#define DS_REPUPD_ASYNCHRONOUS_OPERATION 0x00000001 #define DS_REPUPD_ASYNCHRONOUS_OPERATION 0x00000001
skipping to change at line 583 skipping to change at line 614
// These macros define bit flags which can be set in the "options" attribute // These macros define bit flags which can be set in the "options" attribute
// of objects of the specified object class. // of objects of the specified object class.
// Bit flags valid for options attribute on NTDS-DSA objects. // Bit flags valid for options attribute on NTDS-DSA objects.
// //
#define NTDSDSA_OPT_IS_GC ( 1 << 0 ) /* DSA is a global cata log */ #define NTDSDSA_OPT_IS_GC ( 1 << 0 ) /* DSA is a global cata log */
#define NTDSDSA_OPT_DISABLE_INBOUND_REPL ( 1 << 1 ) /* disable inbound repl ication */ #define NTDSDSA_OPT_DISABLE_INBOUND_REPL ( 1 << 1 ) /* disable inbound repl ication */
#define NTDSDSA_OPT_DISABLE_OUTBOUND_REPL ( 1 << 2 ) /* disable outbound rep lication */ #define NTDSDSA_OPT_DISABLE_OUTBOUND_REPL ( 1 << 2 ) /* disable outbound rep lication */
#define NTDSDSA_OPT_DISABLE_NTDSCONN_XLATE ( 1 << 3 ) /* disable logical conn xlation */ #define NTDSDSA_OPT_DISABLE_NTDSCONN_XLATE ( 1 << 3 ) /* disable logical conn xlation */
#define NTDSDSA_OPT_DISABLE_SPN_REGISTRATION ( 1 << 4 ) /* disable SPN registra
tion for ADAM */
#define NTDSDSA_OPT_DISABLE_OUTBOUND_SELECT_SECRET_NULL ( 1 << 5 ) /* disable
null'ing of secrets */
#define NTDSDSA_OPT_DISABLE_OUTBOUND_REPL_OBJ ( 1 << 6 ) /* disable outbound
replication */
#define NTDSDSA_OPT_DISABLE_OUTBOUND_REPL_SECRET ( 1 << 7 ) /* disable outbo
und replication */
// Bit flags for options attribute on NTDS-Connection objects. // Bit flags for options attribute on NTDS-Connection objects.
// //
// The reasons that two bits are required to control notification are as follows . // The reasons that two bits are required to control notification are as follows .
// We must support existing connections with the old behavior and the UI does no t // We must support existing connections with the old behavior and the UI does no t
// create manual connections with the new bit set. // create manual connections with the new bit set.
// The default for existing and manually created connections with bits 2 and 3 // The default for existing and manually created connections with bits 2 and 3
// clear must be the standard prior behavior: notification for intra-site and // clear must be the standard prior behavior: notification for intra-site and
// no notification for inter-site. // no notification for inter-site.
// We need a way to distinguish a old connection which desires the default // We need a way to distinguish a old connection which desires the default
skipping to change at line 614 skipping to change at line 649
// For inter-site connections, this bit means: // For inter-site connections, this bit means:
// 0 - Compression of replication data enabled // 0 - Compression of replication data enabled
// 1 - Compression of replication data disabled // 1 - Compression of replication data disabled
#define NTDSCONN_OPT_DISABLE_INTERSITE_COMPRESSION (1 << 4) #define NTDSCONN_OPT_DISABLE_INTERSITE_COMPRESSION (1 << 4)
// For connections whose IS_GENERATED bit is 0, this bit has no effect. // For connections whose IS_GENERATED bit is 0, this bit has no effect.
// For KCC-generated connections, this bit indicates that the schedule attribute // For KCC-generated connections, this bit indicates that the schedule attribute
// is owned by the user and should not be touched by the KCC. // is owned by the user and should not be touched by the KCC.
#define NTDSCONN_OPT_USER_OWNED_SCHEDULE (1 << 5) #define NTDSCONN_OPT_USER_OWNED_SCHEDULE (1 << 5)
// This is the default rodc connection - 1 per rodc for FRS's uses
#define NTDSCONN_OPT_RODC_TOPOLOGY (1 << 6)
// Connection reasons // Connection reasons
// //
// Values for "reason for connection". A connection can be needed for // Values for "reason for connection". A connection can be needed for
// more than one reason. // more than one reason.
// //
#define NTDSCONN_KCC_NO_REASON ( 0 ) // 000 #define NTDSCONN_KCC_NO_REASON ( 0 ) // 000
#define NTDSCONN_KCC_GC_TOPOLOGY ( 1 << 0 ) // 001 #define NTDSCONN_KCC_GC_TOPOLOGY ( 1 << 0 ) // 001
#define NTDSCONN_KCC_RING_TOPOLOGY ( 1 << 1 ) // 002 #define NTDSCONN_KCC_RING_TOPOLOGY ( 1 << 1 ) // 002
#define NTDSCONN_KCC_MINIMIZE_HOPS_TOPOLOGY ( 1 << 2 ) // 004 #define NTDSCONN_KCC_MINIMIZE_HOPS_TOPOLOGY ( 1 << 2 ) // 004
#define NTDSCONN_KCC_STALE_SERVERS_TOPOLOGY ( 1 << 3 ) // 008 #define NTDSCONN_KCC_STALE_SERVERS_TOPOLOGY ( 1 << 3 ) // 008
skipping to change at line 783 skipping to change at line 821
// The value for DomainControllerName is assumed to have been // The value for DomainControllerName is assumed to have been
// obtained via DsGetDcName (i.e. Field with the same name in a // obtained via DsGetDcName (i.e. Field with the same name in a
// DOMAIN_CONTROLLER_INFO struct on return from DsGetDcName call.) // DOMAIN_CONTROLLER_INFO struct on return from DsGetDcName call.)
// The client is bound to the domain controller at this name. // The client is bound to the domain controller at this name.
// //
// Mutual authentication will be performed using an SPN of // Mutual authentication will be performed using an SPN of
// LDAP/DomainControllerName provided DomainControllerName // LDAP/DomainControllerName provided DomainControllerName
// is not a NETBIOS name or IP address - i.e. it must be a // is not a NETBIOS name or IP address - i.e. it must be a
// DNS host name. // DNS host name.
// //
// For AD/AM, the DomainControllerName is treated as a Binding String,
// where the first part is the ServerName (some sort of Network
// identifier - such as DNS, IP address, NetBios Name, etc), and the
// 2nd part is the public LDAP port. The AD/AM RPC interface uses
// the LDAP port as our public annotation for RPC. Ex:
//
// MyNetBiosName:3030
// 192.0.0.1:2020
// server1.microsoft.com:389
//
// Alternatively, clients can use DsBindByInstance() to specify a
// a specific RPC Annotation, and an even more specific InstanceGuid,
// (or "objectGuid" in RPC) which is the "objectGuid" off the servers'
// DSA (aka "NTDS Settings") object.
//
// DomainControllerName(value), DnsDomainName(value) // DomainControllerName(value), DnsDomainName(value)
// //
// DsBind will connect to the server identified by DomainControllerName. // DsBind will connect to the server identified by DomainControllerName.
// //
// Mutual authentication will be performed using an SPN of // Mutual authentication will be performed using an SPN of
// LDAP/DomainControllerName/DnsDomainName provided neither value // LDAP/DomainControllerName/DnsDomainName provided neither value
// is a NETBIOS names or IP address - i.e. they must be // is a NETBIOS names or IP address - i.e. they must be
// valid DNS names. // valid DNS names.
// //
// DomainControllerName(NULL), DnsDomainName(NULL) // DomainControllerName(NULL), DnsDomainName(NULL)
skipping to change at line 908 skipping to change at line 961
// DsBindWithSpn(), plus the added benefit of specifying some optional // DsBindWithSpn(), plus the added benefit of specifying some optional
// Binding flags. Currently if you pass NTDSAPI_BIND_ALLOW_DELEGATION, // Binding flags. Currently if you pass NTDSAPI_BIND_ALLOW_DELEGATION,
// you will get the exact old behaviour. If you can avoid it, you // you will get the exact old behaviour. If you can avoid it, you
// should not specify this flag, see flag above for details. // should not specify this flag, see flag above for details.
// //
NTDSAPI_POSTXP NTDSAPI_POSTXP
DWORD DWORD
WINAPI WINAPI
DsBindWithSpnExW( DsBindWithSpnExW(
LPCWSTR DomainControllerName, // in, optional __in LPCWSTR DomainControllerName, // in, optional
LPCWSTR DnsDomainName, // in, optional __in LPCWSTR DnsDomainName, // in, optional
RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional
LPCWSTR ServicePrincipalName, // in, optional __in LPCWSTR ServicePrincipalName, // in, optional
DWORD BindFlags, // in, optional DWORD BindFlags, // in, optional
HANDLE *phDS); HANDLE *phDS);
NTDSAPI_POSTXP NTDSAPI_POSTXP
DWORD DWORD
WINAPI WINAPI
DsBindWithSpnExA( DsBindWithSpnExA(
LPCSTR DomainControllerName, // in, optional __in LPCSTR DomainControllerName, // in, optional
LPCSTR DnsDomainName, // in, optional __in LPCSTR DnsDomainName, // in, optional
RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional
LPCSTR ServicePrincipalName, // in, optional __in LPCSTR ServicePrincipalName, // in, optional
DWORD BindFlags, // in, optional DWORD BindFlags, // in, optional
HANDLE *phDS); HANDLE *phDS);
#ifdef UNICODE #ifdef UNICODE
#define DsBindWithSpnEx DsBindWithSpnExW #define DsBindWithSpnEx DsBindWithSpnExW
#else #else
#define DsBindWithSpnEx DsBindWithSpnExA #define DsBindWithSpnEx DsBindWithSpnExA
#endif #endif
// //
// DsBindByInstance{A|W} Allows the explicit binding to any AD/AM
// or AD instance by Annotation or InstanceGuid. For binding to
// an AD instance the Annotation and InstanceGuid can be left NULL.
// To Bind to an AD/AM instance one or the other must be specified
// to specify the AD/AM instance desired.
//
NTDSAPI_POSTXP
DWORD
WINAPI
DsBindByInstanceW(
LPCWSTR ServerName, // in, optional
LPCWSTR Annotation, // in, optional
GUID * InstanceGuid, // in, optional
LPCWSTR DnsDomainName, // in, optional
RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional
LPCWSTR ServicePrincipalName, // in, optional
DWORD BindFlags, // in, optional
HANDLE *phDS);
NTDSAPI_POSTXP
DWORD
WINAPI
DsBindByInstanceA(
LPCSTR ServerName, // in, optional
LPCSTR Annotation, // in, optional
GUID * InstanceGuid, // in, optional
LPCSTR DnsDomainName, // in, optional
RPC_AUTH_IDENTITY_HANDLE AuthIdentity, // in, optional
LPCSTR ServicePrincipalName, // in, optional
DWORD BindFlags, // in, optional
HANDLE *phDS);
#ifdef UNICODE
#define DsBindByInstance DsBindByInstanceW
#else
#define DsBindByInstance DsBindByInstanceA
#endif
//
// DsBindToISTG{A|W} allows the caller to bind to the server which // DsBindToISTG{A|W} allows the caller to bind to the server which
// holds the Inter-Site Topology Generator role in the specified site. // holds the Inter-Site Topology Generator role in the specified site.
// The site name should be the RDN of a site. If no site is specified, // The site name should be the RDN of a site. If no site is specified,
// the function will try to bind to the ISTG in a nearby site. // the function will try to bind to the ISTG in a nearby site.
// //
NTDSAPI_POSTXP NTDSAPI_POSTXP
DWORD DWORD
WINAPI WINAPI
DsBindToISTGW( DsBindToISTGW(
skipping to change at line 1150 skipping to change at line 1243
// //
// If buffer is not large enough, ERROR_BUFFER_OVERFLOW is returned and the // If buffer is not large enough, ERROR_BUFFER_OVERFLOW is returned and the
// needed length is returned in pcSpnLength. // needed length is returned in pcSpnLength.
// //
// //
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsMakeSpnW( DsMakeSpnW(
IN LPCWSTR ServiceClass, __in IN LPCWSTR ServiceClass,
IN LPCWSTR ServiceName, __in IN LPCWSTR ServiceName,
IN LPCWSTR InstanceName, __in_opt IN LPCWSTR InstanceName,
IN USHORT InstancePort, IN USHORT InstancePort,
IN LPCWSTR Referrer, __in_opt IN LPCWSTR Referrer,
IN OUT DWORD *pcSpnLength, IN OUT DWORD *pcSpnLength,
OUT LPWSTR pszSpn __out_ecount_part (*pcSpnLength, *pcSpnLength) OUT LPWSTR pszSpn
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsMakeSpnA( DsMakeSpnA(
IN LPCSTR ServiceClass, __in IN LPCSTR ServiceClass,
IN LPCSTR ServiceName, __in IN LPCSTR ServiceName,
IN LPCSTR InstanceName, __in_opt IN LPCSTR InstanceName,
IN USHORT InstancePort, IN USHORT InstancePort,
IN LPCSTR Referrer, __in_opt IN LPCSTR Referrer,
IN OUT DWORD *pcSpnLength, IN OUT DWORD *pcSpnLength,
OUT LPSTR pszSpn __out_ecount_part (*pcSpnLength, *pcSpnLength) OUT LPSTR pszSpn
); );
#ifdef UNICODE #ifdef UNICODE
#define DsMakeSpn DsMakeSpnW #define DsMakeSpn DsMakeSpnW
#else #else
#define DsMakeSpn DsMakeSpnA #define DsMakeSpn DsMakeSpnA
#endif #endif
// ========================================================== // ==========================================================
// DsGetSPN -- server's call to gets SPNs for a service name by which it is // DsGetSPN -- server's call to gets SPNs for a service name by which it is
skipping to change at line 1213 skipping to change at line 1306
WINAPI WINAPI
DsGetSpnA( DsGetSpnA(
IN DS_SPN_NAME_TYPE ServiceType, IN DS_SPN_NAME_TYPE ServiceType,
IN LPCSTR ServiceClass, IN LPCSTR ServiceClass,
IN LPCSTR ServiceName, IN LPCSTR ServiceName,
IN USHORT InstancePort, IN USHORT InstancePort,
IN USHORT cInstanceNames, IN USHORT cInstanceNames,
IN LPCSTR *pInstanceNames, IN LPCSTR *pInstanceNames,
IN const USHORT *pInstancePorts, IN const USHORT *pInstancePorts,
OUT DWORD *pcSpn, OUT DWORD *pcSpn,
OUT LPSTR **prpszSpn __deref_out_ecount (*pcSpn) OUT LPSTR **prpszSpn
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsGetSpnW( DsGetSpnW(
IN DS_SPN_NAME_TYPE ServiceType, IN DS_SPN_NAME_TYPE ServiceType,
IN LPCWSTR ServiceClass, IN LPCWSTR ServiceClass,
IN LPCWSTR ServiceName, IN LPCWSTR ServiceName,
IN USHORT InstancePort, IN USHORT InstancePort,
IN USHORT cInstanceNames, IN USHORT cInstanceNames,
IN LPCWSTR *pInstanceNames, IN LPCWSTR *pInstanceNames,
IN const USHORT *pInstancePorts, IN const USHORT *pInstancePorts,
OUT DWORD *pcSpn, OUT DWORD *pcSpn,
OUT LPWSTR **prpszSpn __deref_out_ecount(*pcSpn) OUT LPWSTR **prpszSpn
); );
#ifdef UNICODE #ifdef UNICODE
#define DsGetSpn DsGetSpnW #define DsGetSpn DsGetSpnW
#else #else
#define DsGetSpn DsGetSpnA #define DsGetSpn DsGetSpnA
#endif #endif
// ========================================================== // ==========================================================
// DsFreeSpnArray() -- Free array returned by DsGetSpn{A,W} // DsFreeSpnArray() -- Free array returned by DsGetSpn{A,W}
NTDSAPI NTDSAPI
void void
WINAPI WINAPI
DsFreeSpnArrayA( DsFreeSpnArrayA(
IN DWORD cSpn, __in IN DWORD cSpn,
IN OUT LPSTR *rpszSpn __deref_out_ecount(cSpn) IN OUT LPSTR *rpszSpn
); );
NTDSAPI NTDSAPI
void void
WINAPI WINAPI
DsFreeSpnArrayW( DsFreeSpnArrayW(
IN DWORD cSpn, __in DWORD cSpn,
IN OUT LPWSTR *rpszSpn __deref_out_ecount_part(cSpn,0) LPWSTR *rpszSpn
); );
#ifdef UNICODE #ifdef UNICODE
#define DsFreeSpnArray DsFreeSpnArrayW #define DsFreeSpnArray DsFreeSpnArrayW
#else #else
#define DsFreeSpnArray DsFreeSpnArrayA #define DsFreeSpnArray DsFreeSpnArrayA
#endif #endif
// ========================================================== // ==========================================================
// DsCrackSpn() -- parse an SPN into the ServiceClass, // DsCrackSpn() -- parse an SPN into the ServiceClass,
skipping to change at line 1292 skipping to change at line 1385
// OUT PUSHORT InstancePort // instance port // OUT PUSHORT InstancePort // instance port
// //
// Note: lengths are in characters; all string lengths include terminators // Note: lengths are in characters; all string lengths include terminators
// All arguments except pszSpn are optional. // All arguments except pszSpn are optional.
// //
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsCrackSpnA( DsCrackSpnA(
IN LPCSTR pszSpn, __in IN LPCSTR pszSpn,
IN OUT LPDWORD pcServiceClass, IN OUT LPDWORD pcServiceClass,
OUT LPSTR ServiceClass, __out_ecount_part (*pcServiceClass, *pcServiceClass) OUT LPSTR ServiceClass,
IN OUT LPDWORD pcServiceName, IN OUT LPDWORD pcServiceName,
OUT LPSTR ServiceName, __out_ecount_part_opt (*pcServiceName, *pcServiceName) OUT LPSTR ServiceName ,
IN OUT LPDWORD pcInstanceName, IN OUT LPDWORD pcInstanceName,
OUT LPSTR InstanceName, __out_ecount_part_opt (*pcInstanceName, *pcInstanceName) OUT LPSTR InstanceN ame,
OUT USHORT *pInstancePort OUT USHORT *pInstancePort
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsCrackSpnW( DsCrackSpnW(
IN LPCWSTR pszSpn, __in IN LPCWSTR pszSpn,
IN OUT DWORD *pcServiceClass, IN OUT DWORD *pcServiceClass,
OUT LPWSTR ServiceClass, __out_ecount_part (*pcServiceClass, *pcServiceClass) OUT LPWSTR ServiceClass ,
IN OUT DWORD *pcServiceName, IN OUT DWORD *pcServiceName,
OUT LPWSTR ServiceName, __out_ecount_part_opt (*pcServiceName, *pcServiceName) OUT LPWSTR ServiceNam e,
IN OUT DWORD *pcInstanceName, IN OUT DWORD *pcInstanceName,
OUT LPWSTR InstanceName, __out_ecount_part_opt (*pcInstanceName, *pcInstanceName) OUT LPWSTR Instance Name,
OUT USHORT *pInstancePort OUT USHORT *pInstancePort
); );
#ifdef UNICODE #ifdef UNICODE
#define DsCrackSpn DsCrackSpnW #define DsCrackSpn DsCrackSpnW
#else #else
#define DsCrackSpn DsCrackSpnA #define DsCrackSpn DsCrackSpnA
#endif #endif
// ========================================================== // ==========================================================
skipping to change at line 1416 skipping to change at line 1509
Return Value: Return Value:
WINAPI - Win32 error code WINAPI - Win32 error code
--*/ --*/
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsClientMakeSpnForTargetServerW( DsClientMakeSpnForTargetServerW(
IN LPCWSTR ServiceClass, __in IN LPCWSTR ServiceClass,
IN LPCWSTR ServiceName, __in IN LPCWSTR ServiceName,
IN OUT DWORD *pcSpnLength, IN OUT DWORD *pcSpnLength,
OUT LPWSTR pszSpn __out_ecount_part (*pcSpnLength, *pcSpnLength) OUT LPWSTR pszSpn
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsClientMakeSpnForTargetServerA( DsClientMakeSpnForTargetServerA(
IN LPCSTR ServiceClass, IN LPCSTR ServiceClass,
IN LPCSTR ServiceName, IN LPCSTR ServiceName,
IN OUT DWORD *pcSpnLength, IN OUT DWORD *pcSpnLength,
OUT LPSTR pszSpn __out_ecount_part(*pcSpnLength, *pcSpnLength) OUT LPSTR pszSpn
); );
#ifdef UNICODE #ifdef UNICODE
#define DsClientMakeSpnForTargetServer DsClientMakeSpnForTargetServerW #define DsClientMakeSpnForTargetServer DsClientMakeSpnForTargetServerW
#else #else
#define DsClientMakeSpnForTargetServer DsClientMakeSpnForTargetServerA #define DsClientMakeSpnForTargetServer DsClientMakeSpnForTargetServerA
#endif #endif
/*++ /*++
skipping to change at line 1671 skipping to change at line 1764
// //
// Either the UUID or the address may be used to identify the current value. // Either the UUID or the address may be used to identify the current value.
// If a UUID is specified, the UUID will be used for comparison. Otherwise, // If a UUID is specified, the UUID will be used for comparison. Otherwise,
// the address will be used for comparison. // the address will be used for comparison.
// //
// PARAMETERS: // PARAMETERS:
// pNC (DSNAME *) // pNC (DSNAME *)
// Name of the NC for which the Reps-From should be modified. // Name of the NC for which the Reps-From should be modified.
// puuidSourceDRA (UUID *) // puuidSourceDRA (UUID *)
// Guid of the DSA object for the source server. May be NULL if: // Guid of the DSA object for the source server. May be NULL if:
// . ulModifyFields does not include DS_REPMOD_UPDATE_ADDRESS and // . ulModifyFields does not include DS_REPMOD_UPDATE_INSTANCE and
// . pmtxSourceDRA is non-NULL. // . pmtxSourceDRA is non-NULL.
// puuidTransportObj (UUID *) // puuidTransportObj (UUID *)
// objectGuid of the transport by which replication is to be performed // objectGuid of the transport by which replication is to be performed
// Ignored if ulModifyFields does not include // Ignored if ulModifyFields does not include
// DS_REPMOD_UPDATE_TRANSPORT. // DS_REPMOD_UPDATE_TRANSPORT.
// pszSourceDRA (SZ) // pszSourceDRA (SZ)
// DSA for which the reference should be added or deleted. Ignored if // DSA for which the reference should be added or deleted. Ignored if
// puuidSourceDRA is non-NULL and ulModifyFields does not include // puuidSourceDRA is non-NULL and ulModifyFields does not include
// DS_REPMOD_UPDATE_ADDRESS. // DS_REPMOD_UPDATE_INSTANCE.
// prtSchedule (REPLTIMES *) // prtSchedule (REPLTIMES *)
// Periodic replication schedule for this replica. Ignored if // Periodic replication schedule for this replica. Ignored if
// ulModifyFields does not include DS_REPMOD_UPDATE_SCHEDULE. // ulModifyFields does not include DS_REPMOD_UPDATE_SCHEDULE.
// ulReplicaFlags (ULONG) // ulReplicaFlags (ULONG)
// Flags to set for this replica. Ignored if ulModifyFields does not // Flags to set for this replica. Ignored if ulModifyFields does not
// include DS_REPMOD_UPDATE_FLAGS. // include DS_REPMOD_UPDATE_FLAGS.
// ulModifyFields (ULONG) // ulModifyFields (ULONG)
// Fields to update. One or more of the following bit flags: // Fields to update. One or more of the following bit flags:
// UPDATE_ADDRESS // UPDATE_ADDRESS
// Update the MTX_ADDR associated with the referenced server. // Update the MTX_ADDR associated with the referenced server.
skipping to change at line 1944 skipping to change at line 2037
// pCallbackData (IN, OPTIONAL) - A pointer that will be passed to the // pCallbackData (IN, OPTIONAL) - A pointer that will be passed to the
// first argument of the callback function. // first argument of the callback function.
// pErrors (OUT, OPTIONAL) - Pointer to a (PDS_REPSYNCALL_ERRINFO *) // pErrors (OUT, OPTIONAL) - Pointer to a (PDS_REPSYNCALL_ERRINFO *)
// object that will hold an array of error structure s. // object that will hold an array of error structure s.
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsReplicaSyncAllA ( DsReplicaSyncAllA (
HANDLE hDS, HANDLE hDS,
LPCSTR pszNameContext, __in LPCSTR pszNameContext,
ULONG ulFlags, ULONG ulFlags,
BOOL (__stdcall * pFnCallBack) (LPVOID, PDS_REPSYNCALL_UPDA TEA), BOOL (__stdcall * pFnCallBack) (LPVOID, PDS_REPSYNCALL_UPDA TEA),
LPVOID pCallbackData, LPVOID pCallbackData,
PDS_REPSYNCALL_ERRINFOA ** pErrors PDS_REPSYNCALL_ERRINFOA ** pErrors
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsReplicaSyncAllW ( DsReplicaSyncAllW (
HANDLE hDS, HANDLE hDS,
LPCWSTR pszNameContext, __in LPCWSTR pszNameContext,
ULONG ulFlags, ULONG ulFlags,
BOOL (__stdcall * pFnCallBack) (LPVOID, PDS_REPSYNCALL_UPDA TEW), BOOL (__stdcall * pFnCallBack) (LPVOID, PDS_REPSYNCALL_UPDA TEW),
LPVOID pCallbackData, LPVOID pCallbackData,
PDS_REPSYNCALL_ERRINFOW ** pErrors PDS_REPSYNCALL_ERRINFOW ** pErrors
); );
#ifdef UNICODE #ifdef UNICODE
#define DsReplicaSyncAll DsReplicaSyncAllW #define DsReplicaSyncAll DsReplicaSyncAllW
#else #else
#define DsReplicaSyncAll DsReplicaSyncAllA #define DsReplicaSyncAll DsReplicaSyncAllA
#endif #endif
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsRemoveDsServerW( DsRemoveDsServerW(
HANDLE hDs, // in HANDLE hDs, // in
LPWSTR ServerDN, // in __in LPWSTR ServerDN, // in
LPWSTR DomainDN, // in, optional __in_opt LPWSTR DomainDN, // in, optional
BOOL *fLastDcInDomain, // out, optional BOOL *fLastDcInDomain, // out, optional
BOOL fCommit // in BOOL fCommit // in
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsRemoveDsServerA( DsRemoveDsServerA(
HANDLE hDs, // in HANDLE hDs, // in
LPSTR ServerDN, // in __in LPSTR ServerDN, // in
LPSTR DomainDN, // in, optional __in_opt LPSTR DomainDN, // in, optional
BOOL *fLastDcInDomain, // out, optional BOOL *fLastDcInDomain, // out, optional
BOOL fCommit // in BOOL fCommit // in
); );
#ifdef UNICODE #ifdef UNICODE
#define DsRemoveDsServer DsRemoveDsServerW #define DsRemoveDsServer DsRemoveDsServerW
#else #else
#define DsRemoveDsServer DsRemoveDsServerA #define DsRemoveDsServer DsRemoveDsServerA
#endif #endif
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsRemoveDsDomainW( DsRemoveDsDomainW(
HANDLE hDs, // in HANDLE hDs, // in
LPWSTR DomainDN // in __in LPWSTR DomainDN // in
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsRemoveDsDomainA( DsRemoveDsDomainA(
HANDLE hDs, // in HANDLE hDs, // in
LPSTR DomainDN // in __in LPSTR DomainDN // in
); );
#ifdef UNICODE #ifdef UNICODE
#define DsRemoveDsDomain DsRemoveDsDomainW #define DsRemoveDsDomain DsRemoveDsDomainW
#else #else
#define DsRemoveDsDomain DsRemoveDsDomainA #define DsRemoveDsDomain DsRemoveDsDomainA
#endif #endif
NTDSAPI NTDSAPI
DWORD DWORD
skipping to change at line 2186 skipping to change at line 2279
typedef struct { typedef struct {
DWORD errorCode; DWORD errorCode;
DWORD cost; DWORD cost;
} DS_SITE_COST_INFO, *PDS_SITE_COST_INFO; } DS_SITE_COST_INFO, *PDS_SITE_COST_INFO;
NTDSAPI_POSTXP NTDSAPI_POSTXP
DWORD DWORD
WINAPI WINAPI
DsQuerySitesByCostW( DsQuerySitesByCostW(
HANDLE hDS, // in HANDLE hDS, // in
LPWSTR pwszFromSite, // in __in LPWSTR pwszFromSite, // in
LPWSTR *rgwszToSites, // in __deref_in_ecount (cToSites) LPWSTR *rgwszToSites, // in
DWORD cToSites, // in DWORD cToSites, // in
DWORD dwFlags, // in DWORD dwFlags, // in
PDS_SITE_COST_INFO *prgSiteInfo // out PDS_SITE_COST_INFO *prgSiteInfo // out
); );
NTDSAPI_POSTXP NTDSAPI_POSTXP
DWORD DWORD
WINAPI WINAPI
DsQuerySitesByCostA( DsQuerySitesByCostA(
HANDLE hDS, // in HANDLE hDS, // in
LPSTR pwszFromSite, // in __in LPSTR pszFromSite, // in
LPSTR *rgwszToSites, // in __deref_in_ecount (cToSites) LPSTR *rgszToSites, // in
DWORD cToSites, // in DWORD cToSites, // in
DWORD dwFlags, // in DWORD dwFlags, // in
PDS_SITE_COST_INFO *prgSiteInfo // out PDS_SITE_COST_INFO *prgSiteInfo // out
); );
#ifdef UNICODE #ifdef UNICODE
#define DsQuerySitesByCost DsQuerySitesByCostW #define DsQuerySitesByCost DsQuerySitesByCostW
#else #else
#define DsQuerySitesByCost DsQuerySitesByCostA #define DsQuerySitesByCost DsQuerySitesByCostA
#endif #endif
// //
// DsQuerySitesByCost will free the site info array returned // DsQuerySitesByCost will free the site info array returned
// from DsQuerySitesByCost{A|W}. // from DsQuerySitesByCost{A|W}.
// //
VOID VOID
WINAPI
DsQuerySitesFree( DsQuerySitesFree(
PDS_SITE_COST_INFO rgSiteInfo PDS_SITE_COST_INFO rgSiteInfo
); );
// Definitions required for DsMapSchemaGuid routines. // Definitions required for DsMapSchemaGuid routines.
#define DS_SCHEMA_GUID_NOT_FOUND 0 #define DS_SCHEMA_GUID_NOT_FOUND 0
#define DS_SCHEMA_GUID_ATTR 1 #define DS_SCHEMA_GUID_ATTR 1
#define DS_SCHEMA_GUID_ATTR_SET 2 #define DS_SCHEMA_GUID_ATTR_SET 2
#define DS_SCHEMA_GUID_CLASS 3 #define DS_SCHEMA_GUID_CLASS 3
skipping to change at line 2402 skipping to change at line 2496
GUID SiteObjectGuid; GUID SiteObjectGuid;
// Valid iff ComputerObjectName non-NULL. // Valid iff ComputerObjectName non-NULL.
GUID ComputerObjectGuid; GUID ComputerObjectGuid;
// Valid iff ServerObjectName non-NULL; // Valid iff ServerObjectName non-NULL;
GUID ServerObjectGuid; GUID ServerObjectGuid;
// Valid iff fDsEnabled is TRUE. // Valid iff fDsEnabled is TRUE.
GUID NtdsDsaObjectGuid; GUID NtdsDsaObjectGuid;
} DS_DOMAIN_CONTROLLER_INFO_2W, *PDS_DOMAIN_CONTROLLER_INFO_2W; } DS_DOMAIN_CONTROLLER_INFO_2W, *PDS_DOMAIN_CONTROLLER_INFO_2W;
typedef struct
{
#ifdef MIDL_PASS
[string,unique] CHAR *NetbiosName; // might be NULL
[string,unique] CHAR *DnsHostName; // might be NULL
[string,unique] CHAR *SiteName; // might be NULL
[string,unique] CHAR *SiteObjectName; // might be NULL
[string,unique] CHAR *ComputerObjectName; // might be NULL
[string,unique] CHAR *ServerObjectName; // might be NULL
[string,unique] CHAR *NtdsDsaObjectName; // might be NULL
#else
LPSTR NetbiosName; // might be NULL
LPSTR DnsHostName; // might be NULL
LPSTR SiteName; // might be NULL
LPSTR SiteObjectName; // might be NULL
LPSTR ComputerObjectName; // might be NULL
LPSTR ServerObjectName; // might be NULL
LPSTR NtdsDsaObjectName; // might be NULL
#endif
BOOL fIsPdc;
BOOL fDsEnabled;
BOOL fIsGc;
BOOL fIsRodc;
// Valid iff SiteObjectName non-NULL.
GUID SiteObjectGuid;
// Valid iff ComputerObjectName non-NULL.
GUID ComputerObjectGuid;
// Valid iff ServerObjectName non-NULL;
GUID ServerObjectGuid;
// Valid iff fDsEnabled is TRUE.
GUID NtdsDsaObjectGuid;
} DS_DOMAIN_CONTROLLER_INFO_3A, *PDS_DOMAIN_CONTROLLER_INFO_3A;
typedef struct
{
#ifdef MIDL_PASS
[string,unique] WCHAR *NetbiosName; // might be NULL
[string,unique] WCHAR *DnsHostName; // might be NULL
[string,unique] WCHAR *SiteName; // might be NULL
[string,unique] WCHAR *SiteObjectName; // might be NULL
[string,unique] WCHAR *ComputerObjectName; // might be NULL
[string,unique] WCHAR *ServerObjectName; // might be NULL
[string,unique] WCHAR *NtdsDsaObjectName; // might be NULL
#else
LPWSTR NetbiosName; // might be NULL
LPWSTR DnsHostName; // might be NULL
LPWSTR SiteName; // might be NULL
LPWSTR SiteObjectName; // might be NULL
LPWSTR ComputerObjectName; // might be NULL
LPWSTR ServerObjectName; // might be NULL
LPWSTR NtdsDsaObjectName; // might be NULL
#endif
BOOL fIsPdc;
BOOL fDsEnabled;
BOOL fIsGc;
BOOL fIsRodc;
// Valid iff SiteObjectName non-NULL.
GUID SiteObjectGuid;
// Valid iff ComputerObjectName non-NULL.
GUID ComputerObjectGuid;
// Valid iff ServerObjectName non-NULL;
GUID ServerObjectGuid;
// Valid iff fDsEnabled is TRUE.
GUID NtdsDsaObjectGuid;
} DS_DOMAIN_CONTROLLER_INFO_3W, *PDS_DOMAIN_CONTROLLER_INFO_3W;
// The following APIs strictly find domain controller account objects // The following APIs strictly find domain controller account objects
// in the DS and return information associated with them. As such, they // in the DS and return information associated with them. As such, they
// may return entries which correspond to domain controllers long since // may return entries which correspond to domain controllers long since
// decommissioned, etc. and there is no guarantee that there exists a // decommissioned, etc. and there is no guarantee that there exists a
// physical domain controller at all. Use DsGetDcName (dsgetdc.h) to find // physical domain controller at all. Use DsGetDcName (dsgetdc.h) to find
// live domain controllers for a domain. // live domain controllers for a domain.
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
skipping to change at line 2448 skipping to change at line 2612
VOID VOID
WINAPI WINAPI
DsFreeDomainControllerInfoW( DsFreeDomainControllerInfoW(
DWORD InfoLevel, // in DWORD InfoLevel, // in
DWORD cInfo, // in DWORD cInfo, // in
VOID *pInfo); // in VOID *pInfo); // in
#ifdef UNICODE #ifdef UNICODE
#define DS_DOMAIN_CONTROLLER_INFO_1 DS_DOMAIN_CONTROLLER_INFO_1W #define DS_DOMAIN_CONTROLLER_INFO_1 DS_DOMAIN_CONTROLLER_INFO_1W
#define DS_DOMAIN_CONTROLLER_INFO_2 DS_DOMAIN_CONTROLLER_INFO_2W #define DS_DOMAIN_CONTROLLER_INFO_2 DS_DOMAIN_CONTROLLER_INFO_2W
#define DS_DOMAIN_CONTROLLER_INFO_3 DS_DOMAIN_CONTROLLER_INFO_3W
#define PDS_DOMAIN_CONTROLLER_INFO_1 PDS_DOMAIN_CONTROLLER_INFO_1W #define PDS_DOMAIN_CONTROLLER_INFO_1 PDS_DOMAIN_CONTROLLER_INFO_1W
#define PDS_DOMAIN_CONTROLLER_INFO_2 PDS_DOMAIN_CONTROLLER_INFO_2W #define PDS_DOMAIN_CONTROLLER_INFO_2 PDS_DOMAIN_CONTROLLER_INFO_2W
#define PDS_DOMAIN_CONTROLLER_INFO_3 PDS_DOMAIN_CONTROLLER_INFO_3W
#define DsGetDomainControllerInfo DsGetDomainControllerInfoW #define DsGetDomainControllerInfo DsGetDomainControllerInfoW
#define DsFreeDomainControllerInfo DsFreeDomainControllerInfoW #define DsFreeDomainControllerInfo DsFreeDomainControllerInfoW
#else #else
#define DS_DOMAIN_CONTROLLER_INFO_1 DS_DOMAIN_CONTROLLER_INFO_1A #define DS_DOMAIN_CONTROLLER_INFO_1 DS_DOMAIN_CONTROLLER_INFO_1A
#define DS_DOMAIN_CONTROLLER_INFO_2 DS_DOMAIN_CONTROLLER_INFO_2A #define DS_DOMAIN_CONTROLLER_INFO_2 DS_DOMAIN_CONTROLLER_INFO_2A
#define DS_DOMAIN_CONTROLLER_INFO_3 DS_DOMAIN_CONTROLLER_INFO_3A
#define PDS_DOMAIN_CONTROLLER_INFO_1 PDS_DOMAIN_CONTROLLER_INFO_1A #define PDS_DOMAIN_CONTROLLER_INFO_1 PDS_DOMAIN_CONTROLLER_INFO_1A
#define PDS_DOMAIN_CONTROLLER_INFO_2 PDS_DOMAIN_CONTROLLER_INFO_2A #define PDS_DOMAIN_CONTROLLER_INFO_2 PDS_DOMAIN_CONTROLLER_INFO_2A
#define PDS_DOMAIN_CONTROLLER_INFO_3 PDS_DOMAIN_CONTROLLER_INFO_3A
#define DsGetDomainControllerInfo DsGetDomainControllerInfoA #define DsGetDomainControllerInfo DsGetDomainControllerInfoA
#define DsFreeDomainControllerInfo DsFreeDomainControllerInfoA #define DsFreeDomainControllerInfo DsFreeDomainControllerInfoA
#endif #endif
// Which task should be run? // Which task should be run?
typedef enum { typedef enum {
DS_KCC_TASKID_UPDATE_TOPOLOGY = 0 DS_KCC_TASKID_UPDATE_TOPOLOGY = 0
} DS_KCC_TASKID; } DS_KCC_TASKID;
// Don't wait for completion of the task; queue it and return. // Don't wait for completion of the task; queue it and return.
skipping to change at line 2543 skipping to change at line 2711
// Bit values for flags argument to DsReplicaGetInfo2 // Bit values for flags argument to DsReplicaGetInfo2
#define DS_REPL_INFO_FLAG_IMPROVE_LINKED_ATTRS (0x00000001) #define DS_REPL_INFO_FLAG_IMPROVE_LINKED_ATTRS (0x00000001)
// Bit values for the dwReplicaFlags field of the DS_REPL_NEIGHBOR structure. // Bit values for the dwReplicaFlags field of the DS_REPL_NEIGHBOR structure.
// Also used for the ulReplicaFlags argument to DsReplicaModify // Also used for the ulReplicaFlags argument to DsReplicaModify
#define DS_REPL_NBR_WRITEABLE (0x00000010) #define DS_REPL_NBR_WRITEABLE (0x00000010)
#define DS_REPL_NBR_SYNC_ON_STARTUP (0x00000020) #define DS_REPL_NBR_SYNC_ON_STARTUP (0x00000020)
#define DS_REPL_NBR_DO_SCHEDULED_SYNCS (0x00000040) #define DS_REPL_NBR_DO_SCHEDULED_SYNCS (0x00000040)
#define DS_REPL_NBR_USE_ASYNC_INTERSITE_TRANSPORT (0x00000080) #define DS_REPL_NBR_USE_ASYNC_INTERSITE_TRANSPORT (0x00000080)
#define DS_REPL_NBR_TWO_WAY_SYNC (0x00000200) #define DS_REPL_NBR_TWO_WAY_SYNC (0x00000200)
#define DS_REPL_NBR_FULL_REPLICA (0x00000400)
#define DS_REPL_NBR_RETURN_OBJECT_PARENTS (0x00000800) #define DS_REPL_NBR_RETURN_OBJECT_PARENTS (0x00000800)
#define DS_REPL_NBR_SELECT_SECRETS (0x00001000)
#define DS_REPL_NBR_FULL_SYNC_IN_PROGRESS (0x00010000) #define DS_REPL_NBR_FULL_SYNC_IN_PROGRESS (0x00010000)
#define DS_REPL_NBR_FULL_SYNC_NEXT_PACKET (0x00020000) #define DS_REPL_NBR_FULL_SYNC_NEXT_PACKET (0x00020000)
#define DS_REPL_NBR_NEVER_SYNCED (0x00200000) #define DS_REPL_NBR_NEVER_SYNCED (0x00200000)
#define DS_REPL_NBR_PREEMPTED (0x01000000) #define DS_REPL_NBR_PREEMPTED (0x01000000)
#define DS_REPL_NBR_IGNORE_CHANGE_NOTIFICATIONS (0x04000000) #define DS_REPL_NBR_IGNORE_CHANGE_NOTIFICATIONS (0x04000000)
#define DS_REPL_NBR_DISABLE_SCHEDULED_SYNC (0x08000000) #define DS_REPL_NBR_DISABLE_SCHEDULED_SYNC (0x08000000)
#define DS_REPL_NBR_COMPRESS_CHANGES (0x10000000) #define DS_REPL_NBR_COMPRESS_CHANGES (0x10000000)
#define DS_REPL_NBR_NO_CHANGE_NOTIFICATIONS (0x20000000) #define DS_REPL_NBR_NO_CHANGE_NOTIFICATIONS (0x20000000)
#define DS_REPL_NBR_PARTIAL_ATTRIBUTE_SET (0x40000000) #define DS_REPL_NBR_PARTIAL_ATTRIBUTE_SET (0x40000000)
skipping to change at line 3078 skipping to change at line 3248
ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY
Allocation error. Allocation error.
--*/ --*/
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsQuoteRdnValueW( DsQuoteRdnValueW(
IN DWORD cUnquotedRdnValueLength, IN DWORD cUnquotedRdnValueLength,
IN LPCWCH psUnquotedRdnValue, __in_ecount(cUnquotedRdnValueLength) IN LPCWCH psUnquotedRdnValue,
IN OUT DWORD *pcQuotedRdnValueLength, IN OUT DWORD *pcQuotedRdnValueLength,
OUT LPWCH psQuotedRdnValue __out_ecount_part(*pcQuotedRdnValueLength, *pcQuotedRdnValueLength) OUT L PWCH psQuotedRdnValue
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsQuoteRdnValueA( DsQuoteRdnValueA(
IN DWORD cUnquotedRdnValueLength, IN DWORD cUnquotedRdnValueLength,
IN LPCCH psUnquotedRdnValue, __in_ecount (cUnquotedRdnValueLength) IN LPCCH psUnquotedRdnValue,
IN OUT DWORD *pcQuotedRdnValueLength, IN OUT DWORD *pcQuotedRdnValueLength,
OUT LPCH psQuotedRdnValue __out_ecount_part (*pcQuotedRdnValueLength, *pcQuotedRdnValueLength) OUT LPCH psQuotedRdnValue
); );
#ifdef UNICODE #ifdef UNICODE
#define DsQuoteRdnValue DsQuoteRdnValueW #define DsQuoteRdnValue DsQuoteRdnValueW
#else #else
#define DsQuoteRdnValue DsQuoteRdnValueA #define DsQuoteRdnValue DsQuoteRdnValueA
#endif #endif
/*++ /*++
========================================================== ==========================================================
skipping to change at line 3183 skipping to change at line 3353
ERROR_NOT_ENOUGH_MEMORY ERROR_NOT_ENOUGH_MEMORY
Allocation error. Allocation error.
--*/ --*/
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsUnquoteRdnValueW( DsUnquoteRdnValueW(
IN DWORD cQuotedRdnValueLength, IN DWORD cQuotedRdnValueLength,
IN LPCWCH psQuotedRdnValue, __in_ecount (cQuotedRdnValueLength) IN LPCWCH psQuotedRdnValue,
IN OUT DWORD *pcUnquotedRdnValueLength, IN OUT DWORD *pcUnquotedRdnValueLength,
OUT LPWCH psUnquotedRdnValue __out_ecount_part (*pcUnquotedRdnValueLength, *pcUnquotedRdnValueLength) OUT LPWCH psUnquotedRdnValue
); );
NTDSAPI NTDSAPI
DWORD DWORD
WINAPI WINAPI
DsUnquoteRdnValueA( DsUnquoteRdnValueA(
IN DWORD cQuotedRdnValueLength, IN DWORD cQuotedRdnValueLength,
IN LPCCH psQuotedRdnValue, __in_ecount (cQuotedRdnValueLength) IN LPCCH psQuotedRdnValue,
IN OUT DWORD *pcUnquotedRdnValueLength, IN OUT DWORD *pcUnquotedRdnValueLength,
OUT LPCH psUnquotedRdnValue __out_ecount_part (*pcUnquotedRdnValueLength, *pcUnquotedRdnValueLength) OUT LPCH psUnquotedRdnValue
); );
#ifdef UNICODE #ifdef UNICODE
#define DsUnquoteRdnValue DsUnquoteRdnValueW #define DsUnquoteRdnValue DsUnquoteRdnValueW
#else #else
#define DsUnquoteRdnValue DsUnquoteRdnValueA #define DsUnquoteRdnValue DsUnquoteRdnValueA
#endif #endif
/*++ /*++
========================================================== ==========================================================
skipping to change at line 3499 skipping to change at line 3669
LPCWSTR pszDn, LPCWSTR pszDn,
DS_MANGLE_FOR eDsMangleFor DS_MANGLE_FOR eDsMangleFor
); );
#ifdef UNICODE #ifdef UNICODE
#define DsIsMangledDn DsIsMangledDnW #define DsIsMangledDn DsIsMangledDnW
#else #else
#define DsIsMangledDn DsIsMangledDnA #define DsIsMangledDn DsIsMangledDnA
#endif #endif
// -------------------------------------------------------------------------
// strings used by ADAM for constructing keywords values for SCP publication
// -------------------------------------------------------------------------
// Site name, e.g. "site:Default-First-Site-Name"
#define ADAM_SCP_SITE_NAME_STRING "site:"
#define ADAM_SCP_SITE_NAME_STRING_W L"site:"
// Partition DN, e.g. "partition:O=MSFT,L=WA,C=US"
#define ADAM_SCP_PARTITION_STRING "partition:"
#define ADAM_SCP_PARTITION_STRING_W L"partition:"
// Instance name, e.g. "instance:instance1"
#define ADAM_SCP_INSTANCE_NAME_STRING "instance:"
#define ADAM_SCP_INSTANCE_NAME_STRING_W L"instance:"
// FSMO, e.g. "fsmo:naming"
#define ADAM_SCP_FSMO_STRING "fsmo:"
#define ADAM_SCP_FSMO_STRING_W L"fsmo:"
// FSMO values, e.g. "fsmo:naming"
#define ADAM_SCP_FSMO_NAMING_STRING "naming"
#define ADAM_SCP_FSMO_NAMING_STRING_W L"naming"
#define ADAM_SCP_FSMO_SCHEMA_STRING "schema"
#define ADAM_SCP_FSMO_SCHEMA_STRING_W L"schema"
// -------------------------------------------------------------------------
// ADAM repl authenticaion mode: Stored as an attribute on the config NC.
// -------------------------------------------------------------------------
// Negotiate with pass-through authentication. All instances must run using
// service accounts with the same name and password.
#define ADAM_REPL_AUTHENTICATION_MODE_NEGOTIATE_PASS_THROUGH 0
// Negotiate authentication. If Kerberos is available, it will be used.
// Otherwise, authentication will fall back to NTLM (unless machine policy
// forbids this).
#define ADAM_REPL_AUTHENTICATION_MODE_NEGOTIATE 1
// ADAM will require Kerberos mutual authentication.
#define ADAM_REPL_AUTHENTICATION_MODE_MUTUAL_AUTH_REQUIRED 2
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif !MIDL_PASS #endif !MIDL_PASS
#endif // _NTDSAPI_H_ #endif // _NTDSAPI_H_
 End of changes. 63 change blocks. 
58 lines changed or deleted 275 lines changed or added

This html diff was produced by rfcdiff 1.41.