Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
ds.c
Abstract:
Interface from netlogon to the DS.
Author:
Cliff Van Dyke (CliffV) 24-Apr-1996
Revision History:
--*/
//
// Common include files.
//
#include "logonsrv.h" // Include files common to entire service
#pragma hdrstop
//
// Include files specific to this .c file
//
NET_API_STATUS NlGetRoleInformation( PDOMAIN_INFO DomainInfo, PBOOLEAN IsPdc, PBOOLEAN Nt4MixedDomain ) /*++
Routine Description:
This routine gets the information from the DS we need to determine our role.
Arguments:
DomainInfo - Domain the role is being determined for
IsPdc - TRUE if this machine is the PDC
Nt4MixedDomain - TRUE if there are NT 4 DCs in this domain.
Return Value:
Status of the operation.
--*/ { NET_API_STATUS NetStatus; NTSTATUS Status;
PSAMPR_DOMAIN_INFO_BUFFER DomainServerRole = NULL;
//
// Ask Sam if this is a mixed domain.
//
*Nt4MixedDomain = SamIMixedDomain( DomainInfo->DomSamServerHandle );
//
// The SAM account domain has the authoritative copy of the machine's role
//
Status = SamrQueryInformationDomain( DomainInfo->DomSamAccountDomainHandle, DomainServerRoleInformation, &DomainServerRole );
if ( !NT_SUCCESS(Status) ) { NlPrintDom(( NL_CRITICAL, DomainInfo, "NlGetRoleInformation: Cannot SamQueryInformationDomain (Role): %lx\n", Status )); NetStatus = NetpNtStatusToApiStatus( Status ); DomainServerRole = NULL; goto Cleanup; }
if ( DomainServerRole->Role.DomainServerRole == DomainServerRolePrimary ) { *IsPdc = TRUE; } else { *IsPdc = FALSE; }
NetStatus = NERR_Success;
Cleanup:
//
// Free locally used resources.
//
if ( DomainServerRole != NULL ) { SamIFree_SAMPR_DOMAIN_INFO_BUFFER( DomainServerRole, DomainServerRoleInformation); }
return NetStatus; }
|