Source code of Windows XP (NT5)
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 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
|