|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1992 **/ /**********************************************************************/ /*
UINTLSAX.HXX
This header file defines extension classes for the LSA wrappers.
LSA_SECRET: a subclass of LSA_OBJECT which covers the functions associated with Secret Objects. Unlike LSA_POLICY objects, these follow a [construct - {open|create} - {close|delete} - destruct] paradigm.
Use of this class should be avoided; see the LSA_POLICY member functions JoinDomain() and TrustDomain().
LSA_TRUSTED_DOMAIN: a subclass of LSA_OBJECT which covers the functions of Trusted Domains. Like LSA_SECRETs, these objects should be used indirectly through LSA_POLICY methods.
LSA_TRUSTED_DC_LIST: a wrapper for the memory returned by the tne API I_NetGetDCList(). This memory is freed through ::NetApiFreeBuffer(), and thus cannot be a subclass of NT_MEMORY.
LSA_DOMAIN_INFO: a wrapper domain information. Will change substantially when new Win32 APIs become available.
FILE HISTORY: DavidHov 3/10/92 Created
*/
#ifndef _UINTLSAX_HXX_
#define _UINTLSAX_HXX_
#include "uintlsa.hxx"
DLL_CLASS LSA_SECRET ; DLL_CLASS LSA_TRUSTED_DOMAIN ;
/*************************************************************************
NAME: LSA_SECRET (lsascrt)
SYNOPSIS: Wrapper class for an LSA "Secret Object'
INTERFACE:
PARENT: LSA_OBJECT
USES:
CAVEATS:
NOTES:
HISTORY: DavidHov 4/9/92 Created
**************************************************************************/ DLL_CLASS LSA_SECRET : public LSA_OBJECT { public: LSA_SECRET ( const NLS_STR & nlsSecretName ) ;
~LSA_SECRET () ;
APIERR Create ( const LSA_POLICY & lsapol, ACCESS_MASK accessDesired = SECRET_ALL_ACCESS ) ;
APIERR Open ( const LSA_POLICY & lsapol, ACCESS_MASK accessDesired = SECRET_READ ) ;
APIERR QueryInfo ( NLS_STR * pnlsCurrentValue, NLS_STR * pnlsOldValue, LARGE_INTEGER * plintCurrentValueSetTime, LARGE_INTEGER * plintOldValueSetTime ) const ;
APIERR SetInfo ( const NLS_STR * pnlsCurrentValue, const NLS_STR * pnlsOldValue = NULL ) ;
private: NLS_STR _nlsSecretName ; };
/*************************************************************************
NAME: LSA_TRUSTED_DOMAIN (lsatdom)
SYNOPSIS: Wrapper class for an LSA "Trusted Domain"
INTERFACE:
PARENT: LSA_OBJECT
USES:
CAVEATS:
NOTES:
HISTORY: DavidHov 4/9/92 Created
**************************************************************************/ DLL_CLASS LSA_TRUSTED_DOMAIN : public LSA_OBJECT { public: // Open an existing trusted domain.
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol, const PSID psid, ACCESS_MASK desiredAccess = TRUSTED_READ ) ;
// Open an existing trusted domain using
// an enumeration return structure
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol, const LSA_TRUST_INFORMATION & lstInfo, ACCESS_MASK desiredAccess = TRUSTED_READ ) ;
// Create a new trusted domain.
LSA_TRUSTED_DOMAIN ( const LSA_POLICY & lsapol, const NLS_STR & nlsDomainName, const PSID psid, ACCESS_MASK desiredAccess = TRUSTED_ALL_ACCESS ) ;
~ LSA_TRUSTED_DOMAIN () ;
// Query functions
APIERR QueryPosixOffset ( ULONG * plPosixOffset ) const ; APIERR QueryControllerList ( LSA_REF_DOMAIN_MEM * plsatdm ) const ;
// Set functions
APIERR SetPosixOffset ( ULONG lPosixOffset ) ; APIERR SetControllerList ( LSA_REF_DOMAIN_MEM * plsatdm ) ; APIERR SetControllerList ( const TRUSTED_CONTROLLERS_INFO & tciInfo ) ;
// Destroy the trust relationship
APIERR Delete () ;
private: };
/*************************************************************************
NAME: LSA_TRUSTED_DC_LIST
SYNOPSIS: Wrapper for trusted domain contorller information returned by I_NetGetDCList() API.
INTERFACE:
PARENT: BASE
USES: none
CAVEATS: This class assumes it knows the structure of a TRUSTED_CONTROLLERS_INFO structure.
NOTES:
HISTORY: DavidHov 4/11/92 Created
**************************************************************************/
DLL_CLASS LSA_TRUSTED_DC_LIST : public BASE { public: LSA_TRUSTED_DC_LIST ( const NLS_STR & nlsDomain, const TCHAR * pszTrustedDcHint = NULL ) ; ~ LSA_TRUSTED_DC_LIST () ;
const TRUSTED_CONTROLLERS_INFO & QueryControllerList () const ; const UNICODE_STRING & operator [] ( INT iIndex ) const ; INT QueryCount () ; private: ULONG _lcDc ; UNICODE_STRING * _punsNames ; TRUSTED_CONTROLLERS_INFO _tciInfo ;
APIERR QueryInfo ( const NLS_STR & nlsDomain, const TCHAR * pszTrustedDcHint ) ; VOID FreeBuffer () ; };
/*************************************************************************
NAME: LSA_DOMAIN_INFO
SYNOPSIS: Wrapper for synthetic LSA/NETAPI information.
This class is required, since one of the things that can be queried returns a PSID, and the underlying memory associated with that object must be properly deleted.
INTERFACE:
PARENT: BASE
USES: NLS_STR
CAVEATS: This class is incomplete, since it only knows how to deal with the primary domain at this time.
NOTES:
HISTORY: DavidHov 4/11/92 Created
**************************************************************************/ DLL_CLASS LSA_DOMAIN_INFO : public BASE { public: LSA_DOMAIN_INFO ( const NLS_STR & nlsDomainName, const NLS_STR * pnlsServer = NULL, const NLS_STR * pnlsDcName = NULL ) ; ~ LSA_DOMAIN_INFO () ;
// BUGBUG: this should not require an LSA_POLICY,
// but it does, since this only works for the
// local primary domain at this time...
const PSID QueryPSID () const ;
APIERR QueryDcName ( NLS_STR * pnlsDcName ) ;
private: NLS_STR _nlsDomainName ; NLS_STR _nlsDcName ;
LSA_PRIMARY_DOM_INFO_MEM _lsapdim ; };
#endif // _UINTLSAX_HXX_
|