📄 jwantdsapi.pas
字号:
// periodically calls the delete API with the "no source" flag set).
DS_REPDEL_NO_SOURCE = $00000020;
{$EXTERNALSYM DS_REPDEL_NO_SOURCE}
// Allow deletion of read-only replica even if it sources
// other read-only replicas.
DS_REPDEL_REF_OK = $00000040;
{$EXTERNALSYM DS_REPDEL_REF_OK}
// ********************
// Replica Modify flags
// ********************
// Perform this operation asynchronously.
DS_REPMOD_ASYNCHRONOUS_OPERATION = $00000001;
{$EXTERNALSYM DS_REPMOD_ASYNCHRONOUS_OPERATION}
// The replica is writeable.
DS_REPMOD_WRITEABLE = $00000002;
{$EXTERNALSYM DS_REPMOD_WRITEABLE}
// ********************
// Replica Modify fields
// ********************
DS_REPMOD_UPDATE_FLAGS = $00000001;
{$EXTERNALSYM DS_REPMOD_UPDATE_FLAGS}
DS_REPMOD_UPDATE_ADDRESS = $00000002;
{$EXTERNALSYM DS_REPMOD_UPDATE_ADDRESS}
DS_REPMOD_UPDATE_SCHEDULE = $00000004;
{$EXTERNALSYM DS_REPMOD_UPDATE_SCHEDULE}
DS_REPMOD_UPDATE_RESULT = $00000008;
{$EXTERNALSYM DS_REPMOD_UPDATE_RESULT}
DS_REPMOD_UPDATE_TRANSPORT = $00000010;
{$EXTERNALSYM DS_REPMOD_UPDATE_TRANSPORT}
// ********************
// Update Refs fields
// ********************
// Perform this operation asynchronously.
DS_REPUPD_ASYNCHRONOUS_OPERATION = $00000001;
{$EXTERNALSYM DS_REPUPD_ASYNCHRONOUS_OPERATION}
// The replica being deleted is writeable.
DS_REPUPD_WRITEABLE = $00000002;
{$EXTERNALSYM DS_REPUPD_WRITEABLE}
// Add a reference
DS_REPUPD_ADD_REFERENCE = $00000004;
{$EXTERNALSYM DS_REPUPD_ADD_REFERENCE}
// Remove a reference
DS_REPUPD_DELETE_REFERENCE = $00000008;
{$EXTERNALSYM DS_REPUPD_DELETE_REFERENCE}
// ********************
// NC Related Flags
// ********************
//
// Instance Type bits, specifies flags for NC head creation.
//
DS_INSTANCETYPE_IS_NC_HEAD = $00000001; // This if what to specify on an object to indicate it's an NC Head.
{$EXTERNALSYM DS_INSTANCETYPE_IS_NC_HEAD}
DS_INSTANCETYPE_NC_IS_WRITEABLE = $00000004; // This is to indicate that the NC Head is writeable.
{$EXTERNALSYM DS_INSTANCETYPE_NC_IS_WRITEABLE}
DS_INSTANCETYPE_NC_COMING = $00000010; // This is to indicate that this NC is still replicating in objects to this DC, and may not be a complete NC.
{$EXTERNALSYM DS_INSTANCETYPE_NC_COMING}
DS_INSTANCETYPE_NC_GOING = $00000020; // This is to indicate that this NC is in the process of being removed from this DC, and may not be a complete NC.
{$EXTERNALSYM DS_INSTANCETYPE_NC_GOING}
// ********************
// xxx_OPT_xxx Flags
// ********************
// These macros define bit flags which can be set in the "options" attribute
// of objects of the specified object class.
// Bit flags valid for options attribute on NTDS-DSA objects.
//
NTDSDSA_OPT_IS_GC = (1 shl 0); // DSA is a global catalog
{$EXTERNALSYM NTDSDSA_OPT_IS_GC}
NTDSDSA_OPT_DISABLE_INBOUND_REPL = (1 shl 1); // disable inbound replication
{$EXTERNALSYM NTDSDSA_OPT_DISABLE_INBOUND_REPL}
NTDSDSA_OPT_DISABLE_OUTBOUND_REPL = (1 shl 2); // disable outbound replication
{$EXTERNALSYM NTDSDSA_OPT_DISABLE_OUTBOUND_REPL}
NTDSDSA_OPT_DISABLE_NTDSCONN_XLATE = (1 shl 3); // disable logical conn xlation
{$EXTERNALSYM NTDSDSA_OPT_DISABLE_NTDSCONN_XLATE}
// Bit flags for options attribute on NTDS-Connection objects.
//
// 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 not
// create manual connections with the new bit set.
// 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
// no notification for inter-site.
// We need a way to distinguish a old connection which desires the default
// notification rules, and a new connection for which we desire to explicitly
// control the notification state as passed down from a site link. Thus we
// have a new bit to say we are overriding the default, and a new bit to indicate
// what the overridden default shall be.
//
NTDSCONN_OPT_IS_GENERATED = (1 shl 0); // object generated by DS, not admin
{$EXTERNALSYM NTDSCONN_OPT_IS_GENERATED}
NTDSCONN_OPT_TWOWAY_SYNC = (1 shl 1); // force sync in opposite direction at end of sync
{$EXTERNALSYM NTDSCONN_OPT_TWOWAY_SYNC}
NTDSCONN_OPT_OVERRIDE_NOTIFY_DEFAULT = (1 shl 2); // Do not use defaults to determine notification
{$EXTERNALSYM NTDSCONN_OPT_OVERRIDE_NOTIFY_DEFAULT}
NTDSCONN_OPT_USE_NOTIFY = (1 shl 3); // Does source notify destination
{$EXTERNALSYM NTDSCONN_OPT_USE_NOTIFY}
// For intra-site connections, this bit has no meaning.
// For inter-site connections, this bit means:
// 0 - Compression of replication data enabled
// 1 - Compression of replication data disabled
NTDSCONN_OPT_DISABLE_INTERSITE_COMPRESSION = (1 shl 4);
{$EXTERNALSYM NTDSCONN_OPT_DISABLE_INTERSITE_COMPRESSION}
// For connections whose IS_GENERATED bit is 0, this bit has no effect.
// For KCC-generated connections, this bit indicates that the schedule attribute
// is owned by the user and should not be touched by the KCC.
NTDSCONN_OPT_USER_OWNED_SCHEDULE = (1 shl 5);
{$EXTERNALSYM NTDSCONN_OPT_USER_OWNED_SCHEDULE}
//
// The high 4 bits of the options attribute are used by NTFRS to assign priority
// for inbound connections. Bit 31 is used to force FRS to ignore schedule during
// the initial sync. Bits 30 - 28 are used to specify a priority between 0-7.
//
FRSCONN_PRIORITY_MASK = $70000000;
{$EXTERNALSYM FRSCONN_PRIORITY_MASK}
FRSCONN_MAX_PRIORITY = $8;
{$EXTERNALSYM FRSCONN_MAX_PRIORITY}
DSCONN_OPT_IGNORE_SCHEDULE_MASK = DWORD($80000000);
{$EXTERNALSYM DSCONN_OPT_IGNORE_SCHEDULE_MASK}
function NTDSCONN_IGNORE_SCHEDULE(_options_: DWORD): DWORD;
{$EXTERNALSYM NTDSCONN_IGNORE_SCHEDULE}
function FRSCONN_GET_PRIORITY(_options_: DWORD): DWORD;
{$EXTERNALSYM FRSCONN_GET_PRIORITY}
// Bit flags for options attribute on NTDS-Site-Settings objects.
//
const
NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED = (1 shl 0); // automatic topology gen disabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED}
NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED = (1 shl 1); // automatic topology cleanup disabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED}
NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED = (1 shl 2); // automatic minimum hops topology disabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED}
NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED = (1 shl 3); // automatic stale server detection disabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED}
NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED = (1 shl 4); // automatic inter-site topology gen disabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED}
NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED = (1 shl 5); // group memberships for users enabled
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED}
NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR = (1 shl 6); // force KCC to operate in Whistler behavior mode
{$EXTERNALSYM NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR}
NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTION = (1 shl 7); // force KCC to use the Windows 2000 ISTG election algorithm
{$EXTERNALSYM NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTION}
NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED = (1 shl 8); // prevent the KCC from randomly picking a bridgehead when creating a connection
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED}
NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED = (1 shl 9); // allow the KCC to use hashing when creating a replication schedule
{$EXTERNALSYM NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED}
// Bit flags for options attribute on Inter-Site-Transport objects
//
// Note, the sense of the flag should be such that the default state or
// behavior corresponds to the flag NOT being present. Put another way, the
// flag should state the OPPOSITE of the default
//
// default: schedules are significant
NTDSTRANSPORT_OPT_IGNORE_SCHEDULES = (1 shl 0); // Schedules disabled
{$EXTERNALSYM NTDSTRANSPORT_OPT_IGNORE_SCHEDULES}
// default: links transitive (bridges not required)
NTDSTRANSPORT_OPT_BRIDGES_REQUIRED = (1 shl 1); // siteLink bridges are required
{$EXTERNALSYM NTDSTRANSPORT_OPT_BRIDGES_REQUIRED}
// Bit flags for options attribute on site-Connection objects
//
// These are not realized in the DS, but are built up in the KCC
NTDSSITECONN_OPT_USE_NOTIFY = (1 shl 0); // Use notification on this link
{$EXTERNALSYM NTDSSITECONN_OPT_USE_NOTIFY}
NTDSSITECONN_OPT_TWOWAY_SYNC = (1 shl 1); // force sync in opposite direction at end of sync
{$EXTERNALSYM NTDSSITECONN_OPT_TWOWAY_SYNC}
// This bit means:
// 0 - Compression of replication data across this site connection enabled
// 1 - Compression of replication data across this site connection disabled
NTDSSITECONN_OPT_DISABLE_COMPRESSION = (1 shl 2);
{$EXTERNALSYM NTDSSITECONN_OPT_DISABLE_COMPRESSION}
// Bit flags for options attribute on site-Link objects
// Note that these options are AND-ed along a site-link path
//
NTDSSITELINK_OPT_USE_NOTIFY = (1 shl 0); // Use notification on this link
{$EXTERNALSYM NTDSSITELINK_OPT_USE_NOTIFY}
NTDSSITELINK_OPT_TWOWAY_SYNC = (1 shl 1); // force sync in opposite direction at end of sync
{$EXTERNALSYM NTDSSITELINK_OPT_TWOWAY_SYNC}
// This bit means:
// 0 - Compression of replication data across this site link enabled
// 1 - Compression of replication data across this site link disabled
NTDSSITELINK_OPT_DISABLE_COMPRESSION = (1 shl 2);
{$EXTERNALSYM NTDSSITELINK_OPT_DISABLE_COMPRESSION}
// ***********************
// Well Known Object Guids
// ***********************
GUID_USERS_CONTAINER_A = 'a9d1ca15768811d1aded00c04fd8d5cd';
{$EXTERNALSYM GUID_USERS_CONTAINER_A}
GUID_COMPUTRS_CONTAINER_A = 'aa312825768811d1aded00c04fd8d5cd';
{$EXTERNALSYM GUID_COMPUTRS_CONTAINER_A}
GUID_SYSTEMS_CONTAINER_A = 'ab1d30f3768811d1aded00c04fd8d5cd';
{$EXTERNALSYM GUID_SYSTEMS_CONTAINER_A}
GUID_DOMAIN_CONTROLLERS_CONTAINER_A = 'a361b2ffffd211d1aa4b00c04fd7d83a';
{$EXTERNALSYM GUID_DOMAIN_CONTROLLERS_CONTAINER_A}
GUID_INFRASTRUCTURE_CONTAINER_A = '2fbac1870ade11d297c400c04fd8d5cd';
{$EXTERNALSYM GUID_INFRASTRUCTURE_CONTAINER_A}
GUID_DELETED_OBJECTS_CONTAINER_A = '18e2ea80684f11d2b9aa00c04f79f805';
{$EXTERNALSYM GUID_DELETED_OBJECTS_CONTAINER_A}
GUID_LOSTANDFOUND_CONTAINER_A = 'ab8153b7768811d1aded00c04fd8d5cd';
{$EXTERNALSYM GUID_LOSTANDFOUND_CONTAINER_A}
GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_A = '22b70c67d56e4efb91e9300fca3dc1aa';
{$EXTERNALSYM GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_A}
GUID_PROGRAM_DATA_CONTAINER_A = '09460c08ae1e4a4ea0f64aee7daa1e5a';
{$EXTERNALSYM GUID_PROGRAM_DATA_CONTAINER_A}
GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_A = 'f4be92a4c777485e878e9421d53087db';
{$EXTERNALSYM GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_A}
GUID_USERS_CONTAINER_W = WideString('a9d1ca15768811d1aded00c04fd8d5cd');
{$EXTERNALSYM GUID_USERS_CONTAINER_W}
GUID_COMPUTRS_CONTAINER_W = WideString('aa312825768811d1aded00c04fd8d5cd');
{$EXTERNALSYM GUID_COMPUTRS_CONTAINER_W}
GUID_SYSTEMS_CONTAINER_W = WideString('ab1d30f3768811d1aded00c04fd8d5cd');
{$EXTERNALSYM GUID_SYSTEMS_CONTAINER_W}
GUID_DOMAIN_CONTROLLERS_CONTAINER_W = WideString('a361b2ffffd211d1aa4b00c04fd7d83a');
{$EXTERNALSYM GUID_DOMAIN_CONTROLLERS_CONTAINER_W}
GUID_INFRASTRUCTURE_CONTAINER_W = WideString('2fbac1870ade11d297c400c04fd8d5cd');
{$EXTERNALSYM GUID_INFRASTRUCTURE_CONTAINER_W}
GUID_DELETED_OBJECTS_CONTAINER_W = WideString('18e2ea80684f11d2b9aa00c04f79f805');
{$EXTERNALSYM GUID_DELETED_OBJECTS_CONTAINER_W}
GUID_LOSTANDFOUND_CONTAINER_W = WideString('ab8153b7768811d1aded00c04fd8d5cd');
{$EXTERNALSYM GUID_LOSTANDFOUND_CONTAINER_W}
GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_W = WideString('22b70c67d56e4efb91e9300fca3dc1aa');
{$EXTERNALSYM GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_W}
GUID_PROGRAM_DATA_CONTAINER_W = WideString('09460c08ae1e4a4ea0f64aee7daa1e5a');
{$EXTERNALSYM GUID_PROGRAM_DATA_CONTAINER_W}
GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_W = WideString('f4be92a4c777485e878e9421d53087db');
{$EXTERNALSYM GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_W}
GUID_USERS_CONTAINER_BYTE = '\xa9\xd1\xca\x15\x76\x88\x11\xd1\xad\xed\x00\xc0\x4f\xd8\xd5\xcd';
{$EXTERNALSYM GUID_USERS_CONTAINER_BYTE}
GUID_COMPUTRS_CONTAINER_BYTE = '\xaa\x31\x28\x25\x76\x88\x11\xd1\xad\xed\x00\xc0\x4f\xd8\xd5\xcd';
{$EXTERNALSYM GUID_COMPUTRS_CONTAINER_BYTE}
GUID_SYSTEMS_CONTAINER_BYTE = '\xab\x1d\x30\xf3\x76\x88\x11\xd1\xad\xed\x00\xc0\x4f\xd8\xd5\xcd';
{$EXTERNALSYM GUID_SYSTEMS_CONTAINER_BYTE}
GUID_DOMAIN_CONTROLLERS_CONTAINER_BYTE = '\xa3\x61\xb2\xff\xff\xd2\x11\xd1\xaa\x4b\x00\xc0\x4f\xd7\xd8\x3a';
{$EXTERNALSYM GUID_DOMAIN_CONTROLLERS_CONTAINER_BYTE}
GUID_INFRASTRUCTURE_CONTAINER_BYTE = '\x2f\xba\xc1\x87\x0a\xde\x11\xd2\x97\xc4\x00\xc0\x4f\xd8\xd5\xcd';
{$EXTERNALSYM GUID_INFRASTRUCTURE_CONTAINER_BYTE}
GUID_DELETED_OBJECTS_CONTAINER_BYTE = '\x18\xe2\xea\x80\x68\x4f\x11\xd2\xb9\xaa\x00\xc0\x4f\x79\xf8\x05';
{$EXTERNALSYM GUID_DELETED_OBJECTS_CONTAINER_BYTE}
GUID_LOSTANDFOUND_CONTAINER_BYTE = '\xab\x81\x53\xb7\x76\x88\x11\xd1\xad\xed\x00\xc0\x4f\xd8\xd5\xcd';
{$EXTERNALSYM GUID_LOSTANDFOUND_CONTAINER_BYTE}
GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_BYTE = '\x22\xb7\x0c\x67\xd5\x6e\x4e\xfb\x91\xe9\x30\x0f\xca\x3d\xc1\xaa';
{$EXTERNALSYM GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER_BYTE}
GUID_PROGRAM_DATA_CONTAINER_BYTE = '\x09\x46\x0c\x08\xae\x1e\x4a\x4e\xa0\xf6\x4a\xee\x7d\xaa\x1e\x5a';
{$EXTERNALSYM GUID_PROGRAM_DATA_CONTAINER_BYTE}
GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_BYTE = '\xf4\xbe\x92\xa4\xc7\x77\x48\x5e\x87\x8e\x94\x21\xd5\x30\x87\xdb';
{$EXTERNALSYM GUID_MICROSOFT_PROGRAM_DATA_CONTAINER_BYTE}
type
_DS_MANGLE_FOR = (
DS_MANGLE_UNKNOWN,
DS_MANGLE_OBJECT_RDN_FOR_DELETION,
DS_MANGLE_OBJECT_RDN_FOR_NAME_CONFLICT);
{$EXTERNALSYM _DS_MANGLE_FOR}
DS_MANGLE_FOR = _DS_MANGLE_FOR;
{$EXTERNALSYM DS_MANGLE_FOR}
TDsMangleFor = DS_MANGLE_FOR;
PDsMangleFor = ^DS_MANGLE_FOR;
//////////////////////////////////////////////////////////////////////////
// //
// Prototypes //
// //
//////////////////////////////////////////////////////////////////////////
// DSBind takes two optional input parameters which identify whether the
// caller found a domain controller themselves via DsGetDcName or whether
// a domain controller should be found using default parameters.
// Behavior of the possible combinations are outlined below.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -