234 lines
5.9 KiB
C++
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
|