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.
|
|
/**********************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1990, 1991 **/ /**********************************************************************/
/*
lmoetd.hxx
This file contains the class declarations for the TRUSTED_DOMAIN_ENUM class and its associated iterator classes.
FILE HISTORY: KeithMo 09-Apr-1992 Created for the Server Manager.
*/
#ifndef _LMOETD_HXX_
#define _LMOETD_HXX_
#ifndef WIN32
#error NT enumerator requires WIN32!
#endif // WIN32
#include "lmoersm.hxx"
#include "uintlsa.hxx"
/*************************************************************************
NAME: TRUSTED_DOMAIN_ENUM
SYNOPSIS: The TRUSTED_DOMAIN_ENUM enumerator is used to enumerate the domains "trusted" by a specific target domain.
INTERFACE: TRUSTED_DOMAIN_ENUM - Class constructor.
~TRUSTED_DOMAIN_ENUM - Class destructor.
CallAPI - Invokes the enumeration API.
PARENT: LM_RESUME_ENUM
HISTORY: KeithMo 09-Apr-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS TRUSTED_DOMAIN_ENUM : public LM_RESUME_ENUM { private:
//
// The LsaEnumerateTrustedDomain() resume key.
//
LSA_ENUMERATION_HANDLE _ResumeKey;
//
// This LSA_POLICY object represents the target server on which
// the enumeration will be performed.
//
const LSA_POLICY * _plsapolicy;
//
// This is a wrapper around the LSA_TRUST_INFORMATION structure
// (as returned by LSA_POLICY::EnumerateTrustedDomains).
//
LSA_TRUST_INFO_MEM _lsatim;
//
// This virtual callback invokes the LsaEnumerateTrustedDomains() API
// through LSA_POLICY::EnumerateTrustedDomains().
//
virtual APIERR CallAPI( BOOL fRestartEnum, BYTE ** ppbBuffer, UINT * pcEntriesRead );
protected:
//
// Destroy the buffer with ::LsaFreeMemory().
//
virtual VOID FreeBuffer( BYTE ** ppbBuffer );
public:
//
// Usual constructor/destructor goodies.
//
TRUSTED_DOMAIN_ENUM( const LSA_POLICY * plsapolicy, BOOL fKeepBuffers = FALSE );
~TRUSTED_DOMAIN_ENUM( VOID );
}; // class TRUSTED_DOMAIN_ENUM
class TRUSTED_DOMAIN_ITER; // Forward reference.
/*************************************************************************
NAME: TRUSTED_DOMAIN_ENUM_OBJ
SYNOPSIS: This is basically the return type from the TRUSTED_DOMAIN_ENUM_ITER iterator.
INTERFACE: QueryUnicodeDomainName - Returns a UNICODE_STRING * for the domain name.
QueryDomainName - Also returns the domain name, but stores it in an NLS_STR.
QueryDomainSID - Returns the domain's SID (actually a PSID).
PARENT: ENUM_OBJ_BASE
HISTORY: KeithMo 09-Apr-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS TRUSTED_DOMAIN_ENUM_OBJ : public ENUM_OBJ_BASE { public:
//
// Provide properly-casted buffer Query/Set methods.
//
const LSA_TRUST_INFORMATION * QueryBufferPtr( VOID ) const { return (const LSA_TRUST_INFORMATION *)ENUM_OBJ_BASE::QueryBufferPtr(); }
VOID SetBufferPtr( const LSA_TRUST_INFORMATION * pBuffer ) { ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }
//
// Accessors.
//
const UNICODE_STRING * QueryUnicodeDomainName( VOID ) const { return &(QueryBufferPtr()->Name); }
APIERR QueryDomainName( NLS_STR * pnls ) const { ASSERT( pnls != NULL ); ASSERT( pnls->QueryError() == NERR_Success ); return pnls->MapCopyFrom( QueryUnicodeDomainName()->Buffer, QueryUnicodeDomainName()->Length ); }
DECLARE_ENUM_ACCESSOR( QueryDomainSID, PSID, Sid );
}; // class TRUSTED_DOMAIN_ENUM_OBJ
DECLARE_LM_RESUME_ENUM_ITER_OF( TRUSTED_DOMAIN, LSA_TRUST_INFORMATION );
#endif // _LMOETD_HXX_
|