home *** CD-ROM | disk | FTP | other *** search
- /*++ BUILD Version: 0001 // Increment this if a change has global effects
-
- Copyright (c) 1996-1999 Microsoft Corporation
-
- Module Name:
-
- dsgetdc.h
-
- Abstract:
-
- This file contains structures, function prototypes, and definitions
- for the DsGetDcName API.
-
- Environment:
-
- User Mode - Win32
-
- Notes:
-
- --*/
-
-
- #ifndef _DSGETDC_
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define _DSGETDC_
-
- #if _MSC_VER > 1000
- #pragma once
- #endif
-
- #if !defined(_DSGETDCAPI_)
- #define DSGETDCAPI DECLSPEC_IMPORT
- #else
- #define DSGETDCAPI
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- //
- // Structure definitions
- //
-
- //
- // Flags to passed to DsGetDcName
- //
-
- #define DS_FORCE_REDISCOVERY 0x00000001
-
- #define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010
- #define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020
- #define DS_GC_SERVER_REQUIRED 0x00000040
- #define DS_PDC_REQUIRED 0x00000080
- #define DS_IP_REQUIRED 0x00000200
- #define DS_KDC_REQUIRED 0x00000400
- #define DS_TIMESERV_REQUIRED 0x00000800
- #define DS_WRITABLE_REQUIRED 0x00001000
- #define DS_GOOD_TIMESERV_PREFERRED 0x00002000
- #define DS_AVOID_SELF 0x00004000
- #define DS_ONLY_LDAP_NEEDED 0x00008000
-
-
- #define DS_IS_FLAT_NAME 0x00010000
- #define DS_IS_DNS_NAME 0x00020000
-
- #define DS_RETURN_DNS_NAME 0x40000000
- #define DS_RETURN_FLAT_NAME 0x80000000
-
- #define DSGETDC_VALID_FLAGS ( \
- DS_FORCE_REDISCOVERY | \
- DS_DIRECTORY_SERVICE_REQUIRED | \
- DS_DIRECTORY_SERVICE_PREFERRED | \
- DS_GC_SERVER_REQUIRED | \
- DS_PDC_REQUIRED | \
- DS_IP_REQUIRED | \
- DS_KDC_REQUIRED | \
- DS_TIMESERV_REQUIRED | \
- DS_WRITABLE_REQUIRED | \
- DS_GOOD_TIMESERV_PREFERRED | \
- DS_AVOID_SELF | \
- DS_ONLY_LDAP_NEEDED | \
- DS_IS_FLAT_NAME | \
- DS_IS_DNS_NAME | \
- DS_RETURN_FLAT_NAME | \
- DS_RETURN_DNS_NAME )
-
-
- //
- // Structure returned from DsGetDcName
- //
-
- typedef struct _DOMAIN_CONTROLLER_INFOA {
- LPSTR DomainControllerName;
- LPSTR DomainControllerAddress;
- ULONG DomainControllerAddressType;
- GUID DomainGuid;
- LPSTR DomainName;
- LPSTR DnsForestName;
- ULONG Flags;
- LPSTR DcSiteName;
- LPSTR ClientSiteName;
- } DOMAIN_CONTROLLER_INFOA, *PDOMAIN_CONTROLLER_INFOA;
-
- typedef struct _DOMAIN_CONTROLLER_INFOW {
- #ifdef MIDL_PASS
- [string,unique] wchar_t *DomainControllerName;
- #else // MIDL_PASS
- LPWSTR DomainControllerName;
- #endif // MIDL_PASS
- #ifdef MIDL_PASS
- [string,unique] wchar_t *DomainControllerAddress;
- #else // MIDL_PASS
- LPWSTR DomainControllerAddress;
- #endif // MIDL_PASS
- ULONG DomainControllerAddressType;
- GUID DomainGuid;
- #ifdef MIDL_PASS
- [string,unique] wchar_t *DomainName;
- #else // MIDL_PASS
- LPWSTR DomainName;
- #endif // MIDL_PASS
- #ifdef MIDL_PASS
- [string,unique] wchar_t *DnsForestName;
- #else // MIDL_PASS
- LPWSTR DnsForestName;
- #endif // MIDL_PASS
- ULONG Flags;
- #ifdef MIDL_PASS
- [string,unique] wchar_t *DcSiteName;
- #else // MIDL_PASS
- LPWSTR DcSiteName;
- #endif // MIDL_PASS
- #ifdef MIDL_PASS
- [string,unique] wchar_t *ClientSiteName;
- #else // MIDL_PASS
- LPWSTR ClientSiteName;
- #endif // MIDL_PASS
- } DOMAIN_CONTROLLER_INFOW, *PDOMAIN_CONTROLLER_INFOW;
-
- #ifdef UNICODE
- #define DOMAIN_CONTROLLER_INFO DOMAIN_CONTROLLER_INFOW
- #define PDOMAIN_CONTROLLER_INFO PDOMAIN_CONTROLLER_INFOW
- #else
- #define DOMAIN_CONTROLLER_INFO DOMAIN_CONTROLLER_INFOA
- #define PDOMAIN_CONTROLLER_INFO PDOMAIN_CONTROLLER_INFOA
- #endif // !UNICODE
-
- //
- // Values for DomainControllerAddressType
- //
-
- #define DS_INET_ADDRESS 1
- #define DS_NETBIOS_ADDRESS 2
-
- //
- // Values for returned Flags
- //
-
- #define DS_PDC_FLAG 0x00000001 // DC is PDC of Domain
- #define DS_GC_FLAG 0x00000004 // DC is a GC of forest
- #define DS_LDAP_FLAG 0x00000008 // Server supports an LDAP server
- #define DS_DS_FLAG 0x00000010 // DC supports a DS and is a Domain Controller
- #define DS_KDC_FLAG 0x00000020 // DC is running KDC service
- #define DS_TIMESERV_FLAG 0x00000040 // DC is running time service
- #define DS_CLOSEST_FLAG 0x00000080 // DC is in closest site to client
- #define DS_WRITABLE_FLAG 0x00000100 // DC has a writable DS
- #define DS_GOOD_TIMESERV_FLAG 0x00000200 // DC is running time service (and has clock hardware)
- #define DS_PING_FLAGS 0x0000FFFF // Flags returned on ping
-
- #define DS_DNS_CONTROLLER_FLAG 0x20000000 // DomainControllerName is a DNS name
- #define DS_DNS_DOMAIN_FLAG 0x40000000 // DomainName is a DNS name
- #define DS_DNS_FOREST_FLAG 0x80000000 // DnsForestName is a DNS name
-
-
- //
- // Function Prototypes
- //
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetDcNameA(
- IN LPCSTR ComputerName OPTIONAL,
- IN LPCSTR DomainName OPTIONAL,
- IN GUID *DomainGuid OPTIONAL,
- IN LPCSTR SiteName OPTIONAL,
- IN ULONG Flags,
- OUT PDOMAIN_CONTROLLER_INFOA *DomainControllerInfo
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetDcNameW(
- IN LPCWSTR ComputerName OPTIONAL,
- IN LPCWSTR DomainName OPTIONAL,
- IN GUID *DomainGuid OPTIONAL,
- IN LPCWSTR SiteName OPTIONAL,
- IN ULONG Flags,
- OUT PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo
- );
-
- #ifdef UNICODE
- #define DsGetDcName DsGetDcNameW
- #else
- #define DsGetDcName DsGetDcNameA
- #endif // !UNICODE
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetSiteNameA(
- IN LPCSTR ComputerName OPTIONAL,
- OUT LPSTR *SiteName
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetSiteNameW(
- IN LPCWSTR ComputerName OPTIONAL,
- OUT LPWSTR *SiteName
- );
-
- #ifdef UNICODE
- #define DsGetSiteName DsGetSiteNameW
- #else
- #define DsGetSiteName DsGetSiteNameA
- #endif // !UNICODE
-
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsValidateSubnetNameW(
- IN LPCWSTR SubnetName
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsValidateSubnetNameA(
- IN LPCSTR SubnetName
- );
-
- #ifdef UNICODE
- #define DsValidateSubnetName DsValidateSubnetNameW
- #else
- #define DsValidateSubnetName DsValidateSubnetNameA
- #endif // !UNICODE
-
-
- //
- // Only include if winsock2.h has been included
- //
- #ifdef _WINSOCK2API_
- DSGETDCAPI
- DWORD
- WINAPI
- DsAddressToSiteNamesW(
- IN LPCWSTR ComputerName OPTIONAL,
- IN DWORD EntryCount,
- IN PSOCKET_ADDRESS SocketAddresses,
- OUT LPWSTR **SiteNames
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsAddressToSiteNamesA(
- IN LPCSTR ComputerName OPTIONAL,
- IN DWORD EntryCount,
- IN PSOCKET_ADDRESS SocketAddresses,
- OUT LPSTR **SiteNames
- );
-
- #ifdef UNICODE
- #define DsAddressToSiteNames DsAddressToSiteNamesW
- #else
- #define DsAddressToSiteNames DsAddressToSiteNamesA
- #endif // !UNICODE
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsAddressToSiteNamesExW(
- IN LPCWSTR ComputerName OPTIONAL,
- IN DWORD EntryCount,
- IN PSOCKET_ADDRESS SocketAddresses,
- OUT LPWSTR **SiteNames,
- OUT LPWSTR **SubnetNames
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsAddressToSiteNamesExA(
- IN LPCSTR ComputerName OPTIONAL,
- IN DWORD EntryCount,
- IN PSOCKET_ADDRESS SocketAddresses,
- OUT LPSTR **SiteNames,
- OUT LPSTR **SubnetNames
- );
-
- #ifdef UNICODE
- #define DsAddressToSiteNamesEx DsAddressToSiteNamesExW
- #else
- #define DsAddressToSiteNamesEx DsAddressToSiteNamesExA
- #endif // !UNICODE
- #endif // _WINSOCK2API_
-
- //
- // API to enumerate trusted domains
- //
-
- typedef struct _DS_DOMAIN_TRUSTSW {
-
- //
- // Name of the trusted domain.
- //
- #ifdef MIDL_PASS
- [string] wchar_t * NetbiosDomainName;
- [string] wchar_t * DnsDomainName;
- #else // MIDL_PASS
- LPWSTR NetbiosDomainName;
- LPWSTR DnsDomainName;
- #endif // MIDL_PASS
-
-
- //
- // Flags defining attributes of the trust.
- //
- ULONG Flags;
- #define DS_DOMAIN_IN_FOREST 0x0001 // Domain is a member of the forest
- #define DS_DOMAIN_DIRECT_OUTBOUND 0x0002 // Domain is directly trusted
- #define DS_DOMAIN_TREE_ROOT 0x0004 // Domain is root of a tree in the forest
- #define DS_DOMAIN_PRIMARY 0x0008 // Domain is the primary domain of queried server
- #define DS_DOMAIN_NATIVE_MODE 0x0010 // Primary domain is running in native mode
- #define DS_DOMAIN_DIRECT_INBOUND 0x0020 // Domain is directly trusting
- #define DS_DOMAIN_VALID_FLAGS ( \
- DS_DOMAIN_IN_FOREST | \
- DS_DOMAIN_DIRECT_OUTBOUND | \
- DS_DOMAIN_TREE_ROOT | \
- DS_DOMAIN_PRIMARY | \
- DS_DOMAIN_NATIVE_MODE | \
- DS_DOMAIN_DIRECT_INBOUND )
-
- //
- // Index to the domain that is the parent of this domain.
- // Only defined if NETLOGON_DOMAIN_IN_FOREST is set and
- // NETLOGON_DOMAIN_TREE_ROOT is not set.
- //
- ULONG ParentIndex;
-
- //
- // The trust type and attributes of this trust.
- //
- // If NETLOGON_DOMAIN_DIRECTLY_TRUSTED is not set,
- // these value are infered.
- //
- ULONG TrustType;
- ULONG TrustAttributes;
-
- //
- // The SID of the trusted domain.
- //
- // If NETLOGON_DOMAIN_DIRECTLY_TRUSTED is not set,
- // this value will be NULL.
- //
- #if defined(MIDL_PASS)
- PISID DomainSid;
- #else
- PSID DomainSid;
- #endif
-
- //
- // The GUID of the trusted domain.
- //
-
- GUID DomainGuid;
-
- } DS_DOMAIN_TRUSTSW, *PDS_DOMAIN_TRUSTSW;
-
- //
- // ANSI version of the above struct
- //
- typedef struct _DS_DOMAIN_TRUSTSA {
- LPSTR NetbiosDomainName;
- LPSTR DnsDomainName;
- ULONG Flags;
- ULONG ParentIndex;
- ULONG TrustType;
- ULONG TrustAttributes;
- PSID DomainSid;
- GUID DomainGuid;
- } DS_DOMAIN_TRUSTSA, *PDS_DOMAIN_TRUSTSA;
-
- #ifdef UNICODE
- #define DS_DOMAIN_TRUSTS DS_DOMAIN_TRUSTSW
- #define PDS_DOMAIN_TRUSTS PDS_DOMAIN_TRUSTSW
- #else
- #define DS_DOMAIN_TRUSTS DS_DOMAIN_TRUSTSA
- #define PDS_DOMAIN_TRUSTS PDS_DOMAIN_TRUSTSA
- #endif // !UNICODE
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsEnumerateDomainTrustsW (
- IN LPWSTR ServerName OPTIONAL,
- IN ULONG Flags,
- OUT PDS_DOMAIN_TRUSTSW *Domains,
- OUT PULONG DomainCount
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsEnumerateDomainTrustsA (
- IN LPSTR ServerName OPTIONAL,
- IN ULONG Flags,
- OUT PDS_DOMAIN_TRUSTSA *Domains,
- OUT PULONG DomainCount
- );
-
- #ifdef UNICODE
- #define DsEnumerateDomainTrusts DsEnumerateDomainTrustsW
- #else
- #define DsEnumerateDomainTrusts DsEnumerateDomainTrustsA
- #endif // !UNICODE
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetDcSiteCoverageW(
- IN LPCWSTR ServerName OPTIONAL,
- OUT PULONG EntryCount,
- OUT LPWSTR **SiteNames
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsGetDcSiteCoverageA(
- IN LPCSTR ServerName OPTIONAL,
- OUT PULONG EntryCount,
- OUT LPSTR **SiteNames
- );
-
- #ifdef UNICODE
- #define DsGetDcSiteCoverage DsGetDcSiteCoverageW
- #else
- #define DsGetDcSiteCoverage DsGetDcSiteCoverageA
- #endif // !UNICODE
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsDeregisterDnsHostRecordsW (
- IN LPWSTR ServerName OPTIONAL,
- IN LPWSTR DnsDomainName OPTIONAL,
- IN GUID *DomainGuid OPTIONAL,
- IN GUID *DsaGuid OPTIONAL,
- IN LPWSTR DnsHostName
- );
-
- DSGETDCAPI
- DWORD
- WINAPI
- DsDeregisterDnsHostRecordsA (
- IN LPSTR ServerName OPTIONAL,
- IN LPSTR DnsDomainName OPTIONAL,
- IN GUID *DomainGuid OPTIONAL,
- IN GUID *DsaGuid OPTIONAL,
- IN LPSTR DnsHostName
- );
-
- #ifdef UNICODE
- #define DsDeregisterDnsHostRecords DsDeregisterDnsHostRecordsW
- #else
- #define DsDeregisterDnsHostRecords DsDeregisterDnsHostRecordsA
- #endif // !UNICODE
-
- #ifdef __cplusplus
- }
- #endif
-
- #pragma option pop /*P_O_Pop*/
- #endif // _DSGETDC_
-