windows-nt/Source/XPSP1/NT/admin/netui/common/h/lsaenum.hxx
2020-09-26 16:20:57 +08:00

234 lines
5.9 KiB
C++

/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1992 **/
/**********************************************************************/
/*
lsaenum.hxx
This file contains the enumerators for enumerating all the accounts
and privileges in the LSA.
NOTE: This file will be merge with Tom's "ntlsa.hxx" as appropriate.
LM_RESUME_ENUM
|
|
LSA_ENUM
/ | \
/ | ...
/ |
LSA_ACCOUNT_ENUM LSA_PRIVILEGE_ENUM
FILE HISTORY:
Yi-HsinS 3-Mar-1992 Created
*/
#ifndef _LSAENUM_HXX_
#define _LSAENUM_HXX_
#include "uintlsa.hxx"
#include "lmoersm.hxx"
/*************************************************************************
NAME: LSA_ENUM
SYNOPSIS: LSA_ENUM is a generic LSA enumerator. It will be subclassed
for specific enumerators as desired.
INTERFACE: ~LSA_ENUM() - Destructor
PARENT: LM_RESUME_ENUM
USES: LSA_POLICY
NOTES:
HISTORY:
Yi-HsinS 3-Mar-1992 Created
**************************************************************************/
DLL_CLASS LSA_ENUM: public LM_RESUME_ENUM
{
private:
virtual APIERR CallAPI( BOOL fRestartEnum,
BYTE **ppbBuffer,
UINT *pcbEntries ) = 0;
protected:
// Store the handle of the LSA
const LSA_POLICY *_plsaPolicy;
// Store the enumeration handle to be use in the next API call
// (Note: All enumerations are resumable. )
LSA_ENUMERATION_HANDLE _lsaEnumHandle;
// Free the LSA memory
virtual VOID FreeBuffer( BYTE ** ppbBuffer );
// Protected because we should not instantiate an object of this class.
LSA_ENUM( const LSA_POLICY *plsaPolicy );
public:
~LSA_ENUM();
};
/*************************************************************************
NAME: LSA_ACCOUNTS_ENUM
SYNOPSIS: The enumerator for returning the accounts in the LSA.
INTERFACE: LSA_ACCOUNTS_ENUM() - Constructor
PARENT: LSA_ENUM
USES:
NOTES:
HISTORY:
Yi-HsinS 3-Mar-1992 Created
**************************************************************************/
DLL_CLASS LSA_ACCOUNTS_ENUM: public LSA_ENUM
{
private:
// The virtual callback invokes the LsaEnumerateAccounts() API.
virtual APIERR CallAPI( BOOL fRestartEnum,
BYTE **ppbBuffer,
UINT *pcbEntries );
public:
LSA_ACCOUNTS_ENUM( const LSA_POLICY *plsaPolicy );
};
/*************************************************************************
NAME: LSA_ACCOUNTS_ENUM_OBJ
SYNOPSIS: The object returned by LSA_ACCOUNTS_ENUM_ITER iterator.
INTERFACE: LSA_ACCOUNTS_ENUM_OBJ() - Constructor
~LSA_ACCOUNTS_ENUM_OBJ() - Destructor
QueryBufferPtr() - Replaces ENUM_OBJ_BASE method
SetBufferPtr() - Replaces ENUM_OBJ_BASE method
QuerySid() - Returns a pointer to the SID
PARENT: LSA_ENUM
USES:
NOTES:
HISTORY:
Yi-HsinS 3-Mar-1992 Created
**************************************************************************/
DLL_CLASS LSA_ACCOUNTS_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
// QueryBufferPtr and SetBufferPtr
DECLARE_ENUM_BUFFER_METHODS( PSID );
const PSID QuerySid( VOID ) const
{ return *( QueryBufferPtr() ); }
};
// LSA_ACCOUNTS_ENUM_ITER
DECLARE_LM_RESUME_ENUM_ITER_OF( LSA_ACCOUNTS, PSID );
/*************************************************************************
NAME: LSA_PRIVILEGES_ENUM
SYNOPSIS: The enumerator for returning the privileges contained
in the LSA.
INTERFACE: LSA_PRIVILEGES_ENUM() - Constructor
PARENT: LSA_ENUM
USES:
NOTES:
HISTORY:
Yi-HsinS 3-Mar-1992 Created
**************************************************************************/
DLL_CLASS LSA_PRIVILEGES_ENUM: public LSA_ENUM
{
protected:
// The virtual callback invokes the LsaEnumeratePrivileges() API.
virtual APIERR CallAPI( BOOL fRestartEnum,
BYTE **ppbBuffer,
UINT *pcbEntries );
public:
LSA_PRIVILEGES_ENUM( const LSA_POLICY *plsaPolicy );
};
/*************************************************************************
NAME: LSA_PRIVILEGES_ENUM_OBJ
SYNOPSIS: The object returned by LSA_ACCOUNTS_ENUM_ITER iterator.
INTERFACE: LSA_PRIVILEGES_ENUM_OBJ() - Constructor
~LSA_PRIVILEGES_ENUM_OBJ() - Destructor
QueryBufferPtr() - Replaces ENUM_OBJ_BASE method
SetBufferPtr() - Replaces ENUM_OBJ_BASE method
QueryLuid() - Returns the LUID of the privilege
QueryName() - Returns the name of the privilege
QueryDisplayName() - Returns the name of the privilege
that can be displayed
PARENT: LSA_ENUM
USES:
NOTES:
HISTORY:
Yi-HsinS 3-Mar-1992 Created
**************************************************************************/
DLL_CLASS LSA_PRIVILEGES_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
// QueryBufferPtr and SetBufferPtr
DECLARE_ENUM_BUFFER_METHODS( POLICY_PRIVILEGE_DEFINITION );
// Accessors
DECLARE_ENUM_ACCESSOR( QueryLuid, LUID, LocalValue );
APIERR QueryName( NLS_STR *pnls ) const
{ return pnls->MapCopyFrom( QueryBufferPtr()->Name.Buffer,
QueryBufferPtr()->Name.Length ); }
APIERR QueryDisplayName( NLS_STR *pnls,
const LSA_POLICY *plsaPolicy ) const;
};
// LSA_PRIVILEGES_ENUM_ITER
DECLARE_LM_RESUME_ENUM_ITER_OF( LSA_PRIVILEGES, POLICY_PRIVILEGE_DEFINITION );
#endif