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