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.
 
 
 
 
 
 

707 lines
18 KiB

/*****************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1991 **/
/*****************************************************************/
/*
* History:
* gregj 20-May-1991 Cloned from SERVER_ENUM
* gregj 23-May-1991 Added LOCATION support
* rustanl 18-Jul-1991 Added ( const LOCATION & ) constructors
* KeithMo 07-Oct-1991 Win32 Conversion.
* JonN 29-Jan-1992 Added resumable iterator
* JonN 13-Mar-1992 Moved NT enumerator to lmoent.hxx
* Yi-HsinS18-Sep-1992 Make USER_ENUM resumable.
*
*/
#ifndef _LMOEUSR_HXX_
#define _LMOEUSR_HXX_
#include "lmoersm.hxx"
/**********************************************************\
NAME: USER_ENUM
SYNOPSIS: User enumeration class
INTERFACE: See derived USERx_ENUM classes
PARENT: LOC_LM_ENUM
USES:
HISTORY:
gregj 20-May-1991 Cloned from SERVER_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS USER_ENUM : public LOC_LM_RESUME_ENUM
{
private:
NLS_STR _nlsGroupName;
ULONG _ResumeHandle;
virtual APIERR CallAPI( BOOL fRestartEnum,
BYTE ** ppbBuffer,
UINT * pcEntriesRead );
protected:
USER_ENUM ( const TCHAR * pszLocation,
UINT level,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
USER_ENUM ( LOCATION_TYPE locType,
UINT level,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
USER_ENUM ( const LOCATION & loc,
UINT level,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
}; // class USER_ENUM
/**********************************************************\
NAME: USER0_ENUM
SYNOPSIS: User enumeration, level 0
INTERFACE:
USER0_ENUM() - construct with location
string or type, optional group name
PARENT: USER_ENUM
USES:
CAVEATS: This assumes that the data structures used by
NetUserEnum level 0 (user_info_0) and by
NetGroupGetUsers (group_users_info_0) are
identical. This assumption is asserted in
the class definition.
HISTORY:
gregj 20-May-1991 Cloned from SERVER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS USER0_ENUM : public USER_ENUM
{
public:
USER0_ENUM( const TCHAR * pszLocation,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
USER0_ENUM( LOCATION_TYPE locType,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
USER0_ENUM( const LOCATION & loc,
const TCHAR * pszGroupName = NULL,
BOOL fKeepBuffers = FALSE );
}; // class USER0_ENUM
/*************************************************************************
NAME: USER0_ENUM_OBJ
SYNOPSIS: This is basically the return type from the USER0_ENUM_ITER
iterator.
INTERFACE: USER0_ENUM_OBJ - Class constructor.
~USER0_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the user name.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS USER0_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
DECLARE_ENUM_BUFFER_METHODS( struct user_info_0 );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, usri0_name );
}; // class USER0_ENUM_OBJ
DECLARE_LM_RESUME_ENUM_ITER_OF( USER0, struct user_info_0 );
/**********************************************************\
NAME: USER1_ENUM
SYNOPSIS: User enumeration, level 1
INTERFACE:
USER1_ENUM() - construct with location string
or type code
PARENT: USER_ENUM
USES:
HISTORY:
gregj 20-May-1991 Cloned from SERVER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS USER1_ENUM : public USER_ENUM
{
public:
USER1_ENUM( const TCHAR * pszLocation,
BOOL fKeepBuffers = FALSE );
USER1_ENUM( LOCATION_TYPE locType,
BOOL fKeepBuffers = FALSE );
USER1_ENUM( const LOCATION & loc,
BOOL fKeepBuffers = FALSE );
}; // class USER1_ENUM
/*************************************************************************
NAME: USER1_ENUM_OBJ
SYNOPSIS: This is basically the return type from the USER1_ENUM_ITER
iterator.
INTERFACE: USER1_ENUM_OBJ - Class constructor.
~USER1_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the user name.
QueryPasswordAge - Returns the password age.
QueryPriv - Returns privilege information.
QueryHomeDir - Returns the user's home directory.
QueryComment - Returns the comment.
QueryFlags - Returns the user flags.
QueryScriptPath - Returns the user's script path.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS USER1_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
DECLARE_ENUM_BUFFER_METHODS( struct user_info_1 );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, usri1_name);
DECLARE_ENUM_ACCESSOR( QueryPasswordAge, ULONG, usri1_password_age);
DECLARE_ENUM_ACCESSOR( QueryPriv, UINT, usri1_priv);
DECLARE_ENUM_ACCESSOR( QueryHomeDir, const TCHAR *, usri1_home_dir);
DECLARE_ENUM_ACCESSOR( QueryComment, const TCHAR *, usri1_comment);
DECLARE_ENUM_ACCESSOR( QueryFlags, UINT, usri1_flags);
DECLARE_ENUM_ACCESSOR( QueryScriptPath, const TCHAR *, usri1_script_path);
}; // class USER1_ENUM_OBJ
DECLARE_LM_RESUME_ENUM_ITER_OF( USER1, struct user_info_1 );
/**********************************************************\
NAME: USER2_ENUM
SYNOPSIS: User enumeration, level 2
INTERFACE:
USER2_ENUM() - construct with location string
or type code
PARENT: USER_ENUM
USES:
HISTORY:
gregj 20-May-1991 Cloned from SERVER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS USER2_ENUM : public USER_ENUM
{
public:
USER2_ENUM( const TCHAR * pszLocation,
BOOL fKeepBuffers = FALSE );
USER2_ENUM( LOCATION_TYPE locType,
BOOL fKeepBuffers = FALSE );
USER2_ENUM( const LOCATION & loc,
BOOL fKeepBuffers = FALSE );
}; // class USER2_ENUM
/*************************************************************************
NAME: USER2_ENUM_OBJ
SYNOPSIS: This is basically the return type from the USER2_ENUM_ITER
iterator.
INTERFACE: USER2_ENUM_OBJ - Class constructor.
~USER2_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the user name.
QueryPasswordAge - Returns the password age.
QueryPriv - Returns privilege information.
QueryHomeDir - Returns the user's home directory.
QueryComment - Returns the comment.
QueryFlags - Returns the user flags.
QueryScriptPath - Returns the user's script path.
QueryAuthFlags - Returns the authorization flags.
QueryFullName - Returns the user's full name.
QueryUserComment - Returns the user comment.
QueryParms - Returns the application parameters.
QueryWorkstations - Returns the names of the workstations
that the user can log into.
QueryLastLogon - Returns the time of last logon.
QueryLastLogoff - Returns the time of last logoff.
QueryAccountExpires - Returns the account expiration date.
QueryMaxStorage - Returns the user's disk space quota.
QueryUnitsPerWeek - ?
QueryLogonHours - Returns the allowed logon hours.
QueryBadPWCount - Returns the number of attempts to
log into this account with a bad
password.
QueryNumLogons - Returns the number of successful
logon attempts for this account.
QueryLogonServer - Returns the logon server.
QueryCountryCode - Returns the country code for this
user.
QueryCodePage - Returns the code page for this user.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS USER2_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
DECLARE_ENUM_BUFFER_METHODS( struct user_info_2 );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, usri2_name );
DECLARE_ENUM_ACCESSOR( QueryPasswordAge, ULONG, usri2_password_age );
DECLARE_ENUM_ACCESSOR( QueryPriv, UINT, usri2_priv );
DECLARE_ENUM_ACCESSOR( QueryHomeDir, const TCHAR *, usri2_home_dir );
DECLARE_ENUM_ACCESSOR( QueryComment, const TCHAR *, usri2_comment );
DECLARE_ENUM_ACCESSOR( QueryFlags, UINT, usri2_flags );
DECLARE_ENUM_ACCESSOR( QueryScriptPath, const TCHAR *, usri2_script_path );
DECLARE_ENUM_ACCESSOR( QueryAuthFlags, ULONG, usri2_auth_flags );
DECLARE_ENUM_ACCESSOR( QueryFullName, const TCHAR *, usri2_full_name );
DECLARE_ENUM_ACCESSOR( QueryUserComment, const TCHAR *, usri2_usr_comment );
DECLARE_ENUM_ACCESSOR( QueryParms, const TCHAR *, usri2_parms );
DECLARE_ENUM_ACCESSOR( QueryWorkstations,const TCHAR *, usri2_workstations );
DECLARE_ENUM_ACCESSOR( QueryLastLogon, LONG, usri2_last_logon );
DECLARE_ENUM_ACCESSOR( QueryLastLogoff, LONG, usri2_last_logoff );
DECLARE_ENUM_ACCESSOR( QueryAccountExpires,LONG, usri2_acct_expires );
DECLARE_ENUM_ACCESSOR( QueryMaxStorage, ULONG, usri2_max_storage );
DECLARE_ENUM_ACCESSOR( QueryUnitsPerWeek,UINT, usri2_units_per_week );
DECLARE_ENUM_ACCESSOR( QueryBadPWCount, UINT, usri2_bad_pw_count );
DECLARE_ENUM_ACCESSOR( QueryNumLogons, UINT, usri2_num_logons );
DECLARE_ENUM_ACCESSOR( QueryLogonServer, const TCHAR *, usri2_logon_server );
DECLARE_ENUM_ACCESSOR( QueryCountryCode, UINT, usri2_country_code );
DECLARE_ENUM_ACCESSOR( QueryCodePage, UINT, usri2_code_page );
}; // class USER2_ENUM_OBJ
DECLARE_LM_RESUME_ENUM_ITER_OF( USER2, struct user_info_2 );
/**********************************************************\
NAME: USER10_ENUM
SYNOPSIS: User enumeration, level 10
INTERFACE:
USER10_ENUM() - construct with location string
or type code
PARENT: USER_ENUM
USES:
HISTORY:
gregj 20-May-1991 Cloned from SERVER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS USER10_ENUM : public USER_ENUM
{
public:
USER10_ENUM( const TCHAR * pszLocation,
BOOL fKeepBuffers = FALSE );
USER10_ENUM( LOCATION_TYPE locType,
BOOL fKeepBuffers = FALSE );
USER10_ENUM( const LOCATION & loc,
BOOL fKeepBuffers = FALSE );
}; // class USER10_ENUM
/*************************************************************************
NAME: USER10_ENUM_OBJ
SYNOPSIS: This is basically the return type from the USER10_ENUM_ITER
iterator.
INTERFACE: USER10_ENUM_OBJ - Class constructor.
~USER10_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the user name.
QueryComment - Returns the comment.
QueryUserComment - Returns the user comment.
QueryFullName - Returns the user's full name.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS USER10_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
DECLARE_ENUM_BUFFER_METHODS( struct user_info_10 );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, usri10_name);
DECLARE_ENUM_ACCESSOR( QueryComment, const TCHAR *, usri10_comment);
DECLARE_ENUM_ACCESSOR( QueryUserComment, const TCHAR *, usri10_usr_comment);
DECLARE_ENUM_ACCESSOR( QueryFullName, const TCHAR *, usri10_full_name);
}; // class USER10_ENUM_OBJ
DECLARE_LM_RESUME_ENUM_ITER_OF( USER10, struct user_info_10 );
/************************ GROUPS ************************/
/**********************************************************\
NAME: GROUP_ENUM
SYNOPSIS: Group enumeration class
INTERFACE: See derived GROUPx_ENUM classes
PARENT: LOC_LM_ENUM
HISTORY:
gregj 21-May-1991 Cloned from USER_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS GROUP_ENUM : public LOC_LM_ENUM
{
private:
const TCHAR * _pszUserName;
virtual APIERR CallAPI( BYTE ** ppbBuffer,
UINT * pcEntriesRead );
protected:
GROUP_ENUM ( const TCHAR * pszLocation,
UINT level,
const TCHAR * pszUserName = NULL );
GROUP_ENUM ( LOCATION_TYPE locType,
UINT level,
const TCHAR * pszUserName = NULL );
GROUP_ENUM ( const LOCATION & loc,
UINT level,
const TCHAR * pszUserName = NULL );
}; // class GROUP_ENUM
/**********************************************************\
NAME: GROUP0_ENUM
SYNOPSIS: Group enumeration, level 0
INTERFACE:
GROUP0_ENUM() - construct with location string
or type code, optional user name
PARENT: GROUP_ENUM
HISTORY:
gregj 21-May-1991 Cloned from USER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS GROUP0_ENUM : public GROUP_ENUM
{
public:
GROUP0_ENUM( const TCHAR * pszLocation,
const TCHAR * pszUserName = NULL );
GROUP0_ENUM( LOCATION_TYPE locType,
const TCHAR * pszUserName = NULL );
GROUP0_ENUM( const LOCATION & loc,
const TCHAR * pszUserName = NULL );
}; // class GROUP0_ENUM
/*************************************************************************
NAME: GROUP0_ENUM_OBJ
SYNOPSIS: This is basically the return type from the GROUP0_ENUM_ITER
iterator.
INTERFACE: GROUP0_ENUM_OBJ - Class constructor.
~GROUP0_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the group name.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS GROUP0_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
const struct group_info_0 * QueryBufferPtr( VOID ) const
{ return (const struct group_info_0 *)ENUM_OBJ_BASE::QueryBufferPtr(); }
VOID SetBufferPtr( const struct group_info_0 * pBuffer );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, grpi0_name );
}; // class GROUP0_ENUM_OBJ
DECLARE_LM_ENUM_ITER_OF( GROUP0, struct group_info_0 );
/**********************************************************\
NAME: GROUP1_ENUM
SYNOPSIS: Group enumeration, level 1
INTERFACE:
GROUP1_ENUM() - construct with location string
or type code
PARENT: GROUP_ENUM
HISTORY:
gregj 21-May-1991 Cloned from USER1_ENUM
gregj 23-May-1991 Added LOCATION support
rustanl 18-Jul-1991 Added ( const LOCATION & ) constructor
KeithMo 07-Oct-1991 Changed all USHORTs to UINTs.
\**********************************************************/
DLL_CLASS GROUP1_ENUM : public GROUP_ENUM
{
public:
GROUP1_ENUM( const TCHAR * pszLocation );
GROUP1_ENUM( LOCATION_TYPE locType );
GROUP1_ENUM( const LOCATION & loc );
}; // class GROUP1_ENUM
/*************************************************************************
NAME: GROUP1_ENUM_OBJ
SYNOPSIS: This is basically the return type from the GROUP1_ENUM_ITER
iterator.
INTERFACE: GROUP1_ENUM_OBJ - Class constructor.
~GROUP1_ENUM_OBJ - Class destructor.
QueryBufferPtr - Replaces ENUM_OBJ_BASE method.
QueryName - Returns the group name.
QueryComment - Returns the group comment.
PARENT: ENUM_OBJ_BASE
HISTORY:
KeithMo 07-Oct-1991 Created.
**************************************************************************/
DLL_CLASS GROUP1_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:
//
// Provide properly-casted buffer Query/Set methods.
//
const struct group_info_1 * QueryBufferPtr( VOID ) const
{ return (const struct group_info_1 *)ENUM_OBJ_BASE::QueryBufferPtr(); }
VOID SetBufferPtr( const struct group_info_1 * pBuffer );
//
// Accessors.
//
DECLARE_ENUM_ACCESSOR( QueryName, const TCHAR *, grpi1_name );
DECLARE_ENUM_ACCESSOR( QueryComment, const TCHAR *, grpi1_comment );
}; // class GROUP1_ENUM_OBJ
DECLARE_LM_ENUM_ITER_OF( GROUP1, struct group_info_1 );
#endif // _LMOEUSR_HXX_