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 |
|