📄 jwadsgetdc.pas
字号:
function DsEnumerateDomainTrusts(ServerName: LPSTR; Flags: ULONG;
var Domains: PDS_DOMAIN_TRUSTSA; var DomainCount: ULONG): DWORD; stdcall;
{$EXTERNALSYM DsEnumerateDomainTrusts}
{$ENDIF}
//
// Only define this API if the caller has #included the pre-requisite ntlsa.h
function DsGetForestTrustInformationW(ServerName, TrustedDomainName: LPCWSTR;
Flags: DWORD; var ForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION): DWORD; stdcall;
{$EXTERNALSYM DsGetForestTrustInformationW}
const
DS_GFTI_UPDATE_TDO = $1; // Update TDO with information returned
{$EXTERNALSYM DS_GFTI_UPDATE_TDO}
DS_GFTI_VALID_FLAGS = $1; // All valid flags to DsGetForestTrustInformation
{$EXTERNALSYM DS_GFTI_VALID_FLAGS}
function DsMergeForestTrustInformationW(DomainName: LPCWSTR; NewForestTrustInfo,
OldForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION;
var MergedForestTrustInfo: PLSA_FOREST_TRUST_INFORMATION): DWORD; stdcall;
{$EXTERNALSYM DsMergeForestTrustInformationW}
function DsGetDcSiteCoverageA(ServerName: LPCSTR; var EntryCount: ULONG;
var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverageA}
function DsGetDcSiteCoverageW(ServerName: LPCWSTR; var EntryCount: ULONG;
var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverageW}
{$IFDEF UNICODE}
function DsGetDcSiteCoverage(ServerName: LPCWSTR; var EntryCount: ULONG;
var SiteNames: PPWideChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverage}
{$ELSE}
function DsGetDcSiteCoverage(ServerName: LPCSTR; var EntryCount: ULONG;
var SiteNames: PPChar): DWORD; stdcall;
{$EXTERNALSYM DsGetDcSiteCoverage}
{$ENDIF}
function DsDeregisterDnsHostRecordsA(ServerName, DnsDomainName: LPSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecordsA}
function DsDeregisterDnsHostRecordsW(ServerName, DnsDomainName: LPWSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecordsW}
{$IFDEF UNICODE}
function DsDeregisterDnsHostRecords(ServerName, DnsDomainName: LPWSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecords}
{$ELSE}
function DsDeregisterDnsHostRecords(ServerName, DnsDomainName: LPSTR;
DomainGuid, DsaGuid: LPGUID; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsDeregisterDnsHostRecords}
{$ENDIF}
//
// Option flags passed to DsGetDcOpen
//
const
DS_ONLY_DO_SITE_NAME = $01; // Non-site specific names should be avoided.
{$EXTERNALSYM DS_ONLY_DO_SITE_NAME}
DS_NOTIFY_AFTER_SITE_RECORDS = $02; // Return ERROR_FILEMARK_DETECTED after all
{$EXTERNALSYM DS_NOTIFY_AFTER_SITE_RECORDS}
// site specific records have been processed.
DS_OPEN_VALID_OPTION_FLAGS = (DS_ONLY_DO_SITE_NAME or DS_NOTIFY_AFTER_SITE_RECORDS);
{$EXTERNALSYM DS_OPEN_VALID_OPTION_FLAGS}
//
// Valid DcFlags for DsGetDcOpen
//
DS_OPEN_VALID_FLAGS =
DS_FORCE_REDISCOVERY or
DS_ONLY_LDAP_NEEDED or
DS_KDC_REQUIRED or
DS_PDC_REQUIRED or
DS_GC_SERVER_REQUIRED or
DS_WRITABLE_REQUIRED;
{$EXTERNALSYM DS_OPEN_VALID_FLAGS}
function DsGetDcOpenW(DnsName: LPCWSTR; OptionFlags: ULONG; SiteName: LPCWSTR;
DomainGuid: PGUID; DnsForestName: LPCWSTR; DcFlags: ULONG;
var RetGetDcContext: HANDLE): DWORD; stdcall;
{$EXTERNALSYM DsGetDcOpenW}
function DsGetDcOpenA(DnsName: LPCSTR; OptionFlags: ULONG; SiteName: LPCSTR;
DomainGuid: PGUID; DnsForestName: LPCSTR; DcFlags: ULONG;
var RetGetDcContext: HANDLE): DWORD; stdcall;
{$EXTERNALSYM DsGetDcOpenA}
{$IFDEF UNICODE}
function DsGetDcOpen(DnsName: LPCWSTR; OptionFlags: ULONG; SiteName: LPCWSTR;
DomainGuid: PGUID; DnsForestName: LPCWSTR; DcFlags: ULONG;
var RetGetDcContext: HANDLE): DWORD; stdcall;
{$EXTERNALSYM DsGetDcOpen}
{$ELSE}
function DsGetDcOpen(DnsName: LPCSTR; OptionFlags: ULONG; SiteName: LPCSTR;
DomainGuid: PGUID; DnsForestName: LPCSTR; DcFlags: ULONG;
var RetGetDcContext: HANDLE): DWORD; stdcall;
{$EXTERNALSYM DsGetDcOpen}
{$ENDIF}
function DsGetDcNextW(GetDcContextHandle: HANDLE; SockAddressCount: PULONG;
SockAddresses: LPSOCKET_ADDRESS; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsGetDcNextW}
function DsGetDcNextA(GetDcContextHandle: HANDLE; SockAddressCount: PULONG;
SockAddresses: LPSOCKET_ADDRESS; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsGetDcNextA}
{$IFDEF UNICODE}
function DsGetDcNext(GetDcContextHandle: HANDLE; SockAddressCount: PULONG;
SockAddresses: LPSOCKET_ADDRESS; DnsHostName: LPWSTR): DWORD; stdcall;
{$EXTERNALSYM DsGetDcNext}
{$ELSE}
function DsGetDcNext(GetDcContextHandle: HANDLE; SockAddressCount: PULONG;
SockAddresses: LPSOCKET_ADDRESS; DnsHostName: LPSTR): DWORD; stdcall;
{$EXTERNALSYM DsGetDcNext}
{$ENDIF}
procedure DsGetDcCloseW(GetDcContextHandle: HANDLE); stdcall;
{$EXTERNALSYM DsGetDcCloseW}
procedure DsGetDcClose(GetDcContextHandle: HANDLE); stdcall;
{$EXTERNALSYM DsGetDcClose}
implementation
const
netapi32 = 'netapi32.dll';
{$IFDEF DYNAMIC_LINK}
var
_DsGetDcNameA: Pointer;
function DsGetDcNameA;
begin
GetProcedureAddress(_DsGetDcNameA, netapi32, 'DsGetDcNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsGetDcNameA]
end;
end;
{$ELSE}
function DsGetDcNameA; external netapi32 name 'DsGetDcNameA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DsGetDcNameW: Pointer;
function DsGetDcNameW;
begin
GetProcedureAddress(_DsGetDcNameW, netapi32, 'DsGetDcNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsGetDcNameW]
end;
end;
{$ELSE}
function DsGetDcNameW; external netapi32 name 'DsGetDcNameW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_DsGetDcName: Pointer;
function DsGetDcName;
begin
GetProcedureAddress(_DsGetDcName, netapi32, 'DsGetDcNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsGetDcName]
end;
end;
{$ELSE}
function DsGetDcName; external netapi32 name 'DsGetDcNameW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_DsGetDcName: Pointer;
function DsGetDcName;
begin
GetProcedureAddress(_DsGetDcName, netapi32, 'DsGetDcNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsGetDcName]
end;
end;
{$ELSE}
function DsGetDcName; external netapi32 name 'DsGetDcNameA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_DsGetSiteNameA: Pointer;
function DsGetSiteNameA;
begin
GetProcedureAddress(_DsGetSiteNameA, netapi32, 'DsGetSiteNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsGetSiteNameA]
end;
end;
{$ELSE}
function DsGetSiteNameA; external netapi32 name 'DsGetSiteNameA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DsGetSiteNameW: Pointer;
function DsGetSiteNameW;
begin
GetProcedureAddress(_DsGetSiteNameW, netapi32, 'DsGetSiteNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsGetSiteNameW]
end;
end;
{$ELSE}
function DsGetSiteNameW; external netapi32 name 'DsGetSiteNameW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_DsGetSiteName: Pointer;
function DsGetSiteName;
begin
GetProcedureAddress(_DsGetSiteName, netapi32, 'DsGetSiteNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsGetSiteName]
end;
end;
{$ELSE}
function DsGetSiteName; external netapi32 name 'DsGetSiteNameW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_DsGetSiteName: Pointer;
function DsGetSiteName;
begin
GetProcedureAddress(_DsGetSiteName, netapi32, 'DsGetSiteNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsGetSiteName]
end;
end;
{$ELSE}
function DsGetSiteName; external netapi32 name 'DsGetSiteNameA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_DsValidateSubnetNameA: Pointer;
function DsValidateSubnetNameA;
begin
GetProcedureAddress(_DsValidateSubnetNameA, netapi32, 'DsValidateSubnetNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsValidateSubnetNameA]
end;
end;
{$ELSE}
function DsValidateSubnetNameA; external netapi32 name 'DsValidateSubnetNameA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DsValidateSubnetNameW: Pointer;
function DsValidateSubnetNameW;
begin
GetProcedureAddress(_DsValidateSubnetNameW, netapi32, 'DsValidateSubnetNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsValidateSubnetNameW]
end;
end;
{$ELSE}
function DsValidateSubnetNameW; external netapi32 name 'DsValidateSubnetNameW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_DsValidateSubnetName: Pointer;
function DsValidateSubnetName;
begin
GetProcedureAddress(_DsValidateSubnetName, netapi32, 'DsValidateSubnetNameW');
asm
mov esp, ebp
pop ebp
jmp [_DsValidateSubnetName]
end;
end;
{$ELSE}
function DsValidateSubnetName; external netapi32 name 'DsValidateSubnetNameW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_DsValidateSubnetName: Pointer;
function DsValidateSubnetName;
begin
GetProcedureAddress(_DsValidateSubnetName, netapi32, 'DsValidateSubnetNameA');
asm
mov esp, ebp
pop ebp
jmp [_DsValidateSubnetName]
end;
end;
{$ELSE}
function DsValidateSubnetName; external netapi32 name 'DsValidateSubnetNameA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNamesA: Pointer;
function DsAddressToSiteNamesA;
begin
GetProcedureAddress(_DsAddressToSiteNamesA, netapi32, 'DsAddressToSiteNamesA');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNamesA]
end;
end;
{$ELSE}
function DsAddressToSiteNamesA; external netapi32 name 'DsAddressToSiteNamesA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNamesW: Pointer;
function DsAddressToSiteNamesW;
begin
GetProcedureAddress(_DsAddressToSiteNamesW, netapi32, 'DsAddressToSiteNamesW');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNamesW]
end;
end;
{$ELSE}
function DsAddressToSiteNamesW; external netapi32 name 'DsAddressToSiteNamesW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNames: Pointer;
function DsAddressToSiteNames;
begin
GetProcedureAddress(_DsAddressToSiteNames, netapi32, 'DsAddressToSiteNamesW');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNames]
end;
end;
{$ELSE}
function DsAddressToSiteNames; external netapi32 name 'DsAddressToSiteNamesW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNames: Pointer;
function DsAddressToSiteNames;
begin
GetProcedureAddress(_DsAddressToSiteNames, netapi32, 'DsAddressToSiteNamesA');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNames]
end;
end;
{$ELSE}
function DsAddressToSiteNames; external netapi32 name 'DsAddressToSiteNamesA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNamesExA: Pointer;
function DsAddressToSiteNamesExA;
begin
GetProcedureAddress(_DsAddressToSiteNamesExA, netapi32, 'DsAddressToSiteNamesExA');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNamesExA]
end;
end;
{$ELSE}
function DsAddressToSiteNamesExA; external netapi32 name 'DsAddressToSiteNamesExA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNamesExW: Pointer;
function DsAddressToSiteNamesExW;
begin
GetProcedureAddress(_DsAddressToSiteNamesExW, netapi32, 'DsAddressToSiteNamesExW');
asm
mov esp, ebp
pop ebp
jmp [_DsAddressToSiteNamesExW]
end;
end;
{$ELSE}
function DsAddressToSiteNamesExW; external netapi32 name 'DsAddressToSiteNamesExW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_DsAddressToSiteNamesEx: Pointer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -