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.
 
 
 
 
 
 

114 lines
2.9 KiB

///////////////////////////////////////////////////////////////////////////////
//
// FILE
//
// ntdomain.h
//
// SYNOPSIS
//
// Declares the class NTDomain.
//
// MODIFICATION HISTORY
//
// 05/07/1998 Original version.
// 08/25/1998 Removed RootDSE attributes from the domain.
// 02/24/1999 Add force flag to findServer.
// 03/12/1999 Added isObsolete method.
// 04/14/1999 Specify domain and server when opening a connection.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _NTDOMAIN_H_
#define _NTDOMAIN_H_
#if _MSC_VER >= 1000
#pragma once
#endif
#include <guard.h>
#include <nocopy.h>
class LDAPConnection;
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// NTDomain
//
// DESCRIPTION
//
// This class maintains state information about an NT domain.
//
///////////////////////////////////////////////////////////////////////////////
class NTDomain
: Guardable, NonCopyable
{
public:
enum Mode
{
MODE_UNKNOWN,
MODE_NT4,
MODE_MIXED,
MODE_NATIVE
};
void AddRef() throw ()
{ InterlockedIncrement(&refCount); }
void Release() throw ();
PCWSTR getDomainName() const throw ()
{ return name; }
DWORDLONG getExpiry() const throw ()
{ return expiry; }
// Returns a connection to the domain. The client is responsible for
// releasing the connection when done.
DWORD getConnection(LDAPConnection** cxn) throw ();
Mode getMode() throw ();
BOOL isObsolete(DWORDLONG now) const throw ()
{ return (status && now >= expiry); }
static NTDomain* createInstance(PCWSTR name) throw ();
static DWORDLONG pollInterval;
static DWORDLONG retryInterval;
protected:
NTDomain(PWSTR domainName) throw ();
~NTDomain() throw ();
// Returns TRUE if the current state has expired.
BOOL isExpired() throw ();
// Open a new connection to the given DC.
void openConnection(
PCWSTR domain,
PCWSTR server
) throw ();
// Returns TRUE if we have a connection to a DC for the domain.
BOOL isConnected() throw ();
// Close the current connection (if any).
void closeConnection() throw ();
// Finds a server for the domain.
void findServer() throw ();
// Reads the domain mode (i.e., mixed vs native).
void readDomainMode() throw ();
private:
LONG refCount; // Reference count.
PWSTR name; // Name of the domain.
Mode mode; // Mode of the domain.
LDAPConnection* connection; // Cached DC for the domain (if any).
DWORD status; // Current status of the domain.
DWORDLONG expiry; // Time when current state expires.
};
#endif // _NTDOMAIN_H_