mirror of https://github.com/lianthony/NT4.0
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.
640 lines
16 KiB
640 lines
16 KiB
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1993 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
lmorpl.hxx
|
|
RPL objects
|
|
|
|
FILE HISTORY:
|
|
JonN 19-Jul-1993 templated from User object
|
|
|
|
*/
|
|
|
|
#ifndef _LMORPL_HXX_
|
|
#define _LMORPL_HXX_
|
|
|
|
#include "lmobj.hxx"
|
|
|
|
#include "uintrpl.hxx" // RPL_SERVER_REF
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_OBJECT (rplobj)
|
|
|
|
SYNOPSIS: Superclass for manipulation of RPL objects
|
|
|
|
INTERFACE: RPL_OBJECT(), constructor
|
|
|
|
~RPL_OBJECT(), destructor
|
|
|
|
QueryErrorParameter(), returns the error parameter from
|
|
the most recent call to a SetInfo or Add
|
|
API. Be sure to retrieve the error
|
|
immediately after the call, otherwise the
|
|
value may be overwritten.
|
|
|
|
PARENT: NEW_LM_OBJ
|
|
|
|
HISTORY:
|
|
JonN 19-Aug-1993 Created
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_OBJECT : public NEW_LM_OBJ
|
|
{
|
|
private:
|
|
|
|
RPL_SERVER_REF _rplsrvref;
|
|
|
|
protected:
|
|
|
|
DWORD _dwErrorParameter;
|
|
|
|
RPL_SERVER_REF & QueryServerRef()
|
|
{ return _rplsrvref; }
|
|
|
|
APIERR W_CloneFrom( const RPL_OBJECT & rplobj );
|
|
|
|
public:
|
|
|
|
RPL_OBJECT( RPL_SERVER_REF & rplsrvref );
|
|
~RPL_OBJECT();
|
|
|
|
DWORD QueryErrorParameter( void ) const
|
|
{ return _dwErrorParameter; }
|
|
|
|
};
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_PROFILE (rplprof)
|
|
|
|
SYNOPSIS: Superclass for manipulation of RPL profiles
|
|
|
|
INTERFACE: RPL_PROFILE(), constructor
|
|
|
|
~RPL_PROFILE(), destructor
|
|
|
|
QueryName(), returns pointer to the profile name
|
|
that was passed in to constructor or
|
|
set by SetName if the name was correct.
|
|
Otherwise returns previous name.
|
|
|
|
SetName(), sets profile name, returns error code
|
|
which is NERR_Success on success.
|
|
|
|
I_Delete(), deletes a profile.
|
|
|
|
PARENT: RPL_OBJECT
|
|
|
|
HISTORY:
|
|
JonN 23-Jul-1993 templated from Group object
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_PROFILE : public RPL_OBJECT
|
|
{
|
|
private:
|
|
|
|
NLS_STR _nlsProfile;
|
|
|
|
protected:
|
|
|
|
APIERR W_CloneFrom( const RPL_PROFILE & rplprof );
|
|
|
|
virtual APIERR I_Delete( UINT uiForce );
|
|
|
|
public:
|
|
|
|
RPL_PROFILE( RPL_SERVER_REF & rplsrvref,
|
|
const TCHAR * pszProfile = NULL );
|
|
~RPL_PROFILE();
|
|
|
|
const TCHAR *QueryName() const;
|
|
|
|
APIERR SetName( const TCHAR * pszProfile );
|
|
|
|
static APIERR ValidateProfileName( const TCHAR * pszProfile );
|
|
|
|
};
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_PROFILE_0 (rplprof0)
|
|
|
|
SYNOPSIS: NetRplProfileGetInfo/SetInfo/Add[0] (dummy class)
|
|
|
|
INTERFACE: RPL_PROFILE_0() constructor
|
|
|
|
~RPL_PROFILE_0() destructor
|
|
|
|
PARENT: RPL_PROFILE
|
|
|
|
NOTES: There is actually a RPL_PROFILE_INFO_0, but I will not use
|
|
it and do not implement it. The comment field is
|
|
deferred until RPL_PROFILE_2.
|
|
|
|
HISTORY:
|
|
JonN 23-Jul-1993 templated from Group object
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_PROFILE_0 : public RPL_PROFILE
|
|
{
|
|
|
|
public:
|
|
|
|
RPL_PROFILE_0( RPL_SERVER_REF & rplsrvref,
|
|
const TCHAR *pszProfile = NULL )
|
|
: RPL_PROFILE( rplsrvref, pszProfile )
|
|
{}
|
|
~RPL_PROFILE_0() {}
|
|
|
|
};
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_PROFILE_2 (rplprof2)
|
|
|
|
SYNOPSIS: NetRplProfileGet/SetInfo/Add[2]
|
|
|
|
INTERFACE: RPL_PROFILE_2() constructor
|
|
|
|
~RPL_PROFILE_2() destructor
|
|
|
|
I_GetInfo
|
|
Reads in the current state of the object
|
|
|
|
I_WriteInfo
|
|
Writes the current state of the object to the
|
|
API. This write is atomic, either all
|
|
parameters are set or none are set.
|
|
|
|
I_CreateNew
|
|
Sets up the RPL_PROFILE_2 object with default values in
|
|
preparation for a call to WriteNew
|
|
|
|
I_WriteNew
|
|
Adds a new profile
|
|
|
|
CloneFrom
|
|
Makes this RPL_PROFILE_2 instance an exact copy of the
|
|
parameter RPL_PROFILE_2 instance. All fields including
|
|
name and state will be copied. If this operation
|
|
fails, the object will be invalid. The parameter
|
|
must be a RPL_PROFILE_2 and not a subclass of
|
|
RPL_PROFILE_2.
|
|
|
|
// accessors for property fields
|
|
|
|
PARENT: RPL_PROFILE_0
|
|
|
|
HISTORY:
|
|
JonN 23-Jul-1993 templated from Group object
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_PROFILE_2 : public RPL_PROFILE_0
|
|
{
|
|
|
|
private:
|
|
NLS_STR _nlsComment;
|
|
NLS_STR _nlsConfigName;
|
|
// DWORD _dwRequestNumber;
|
|
// DWORD _dwSecondsNumber;
|
|
// DWORD _dwAcknowledgementPolicy;
|
|
NLS_STR _nlsBootBlockFile;
|
|
NLS_STR _nlsSharedFitFile;
|
|
NLS_STR _nlsPersonalFitFile;
|
|
|
|
APIERR W_Write(); // helper for I_WriteInfo and I_WriteNew
|
|
|
|
protected:
|
|
virtual APIERR I_GetInfo();
|
|
virtual APIERR I_WriteInfo();
|
|
virtual APIERR I_CreateNew();
|
|
virtual APIERR I_WriteNew();
|
|
virtual APIERR I_ChangeToNew();
|
|
|
|
virtual APIERR W_CreateNew();
|
|
virtual APIERR W_CloneFrom( const RPL_PROFILE_2 & rplprof2 );
|
|
|
|
public:
|
|
|
|
RPL_PROFILE_2( RPL_SERVER_REF & rplsrvref, const TCHAR *pszProfile );
|
|
~RPL_PROFILE_2();
|
|
|
|
APIERR CloneFrom( const RPL_PROFILE_2 & rplprof2 );
|
|
|
|
//
|
|
// Accessors
|
|
//
|
|
|
|
inline const TCHAR * QueryComment() const
|
|
{ CHECK_OK(NULL); return _nlsComment.QueryPch(); }
|
|
|
|
APIERR SetComment( const TCHAR * pszComment );
|
|
|
|
inline const TCHAR * QueryConfigName() const
|
|
{ CHECK_OK(NULL); return _nlsConfigName.QueryPch(); }
|
|
|
|
APIERR SetConfigName( const TCHAR * pszConfigName );
|
|
|
|
#if 0
|
|
inline DWORD QueryRequestNumber() const
|
|
{ CHECK_OK(0); return _dwRequestNumber; }
|
|
|
|
APIERR SetRequestNumber( DWORD dwRequestNumber );
|
|
|
|
inline DWORD QuerySecondsNumber() const
|
|
{ CHECK_OK(0); return _dwSecondsNumber; }
|
|
|
|
APIERR SetSecondsNumber( DWORD dwSecondsNumber );
|
|
|
|
inline DWORD QueryAcknowledgementPolicy() const
|
|
{ CHECK_OK(0); return _dwAcknowledgementPolicy; }
|
|
|
|
APIERR SetAcknowledgementPolicy( DWORD dwAcknowlewdgementPolicy );
|
|
#endif
|
|
|
|
inline const TCHAR * QueryBootBlockFile() const
|
|
{ CHECK_OK(NULL); return _nlsBootBlockFile.QueryPch(); }
|
|
|
|
APIERR SetBootBlockFile( const TCHAR * pszBootBlockFile );
|
|
|
|
inline const TCHAR * QuerySharedFitFile() const
|
|
{ CHECK_OK(NULL); return _nlsSharedFitFile.QueryPch(); }
|
|
|
|
APIERR SetSharedFitFile( const TCHAR * pszSharedFitFile );
|
|
|
|
inline const TCHAR * QueryPersonalFitFile() const
|
|
{ CHECK_OK(NULL); return _nlsPersonalFitFile.QueryPch(); }
|
|
|
|
APIERR SetPersonalFitFile( const TCHAR * pszPersonalFitFile );
|
|
|
|
};
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_WKSTA (rplwksta)
|
|
|
|
SYNOPSIS: Superclass for manipulation of RPL workstations
|
|
|
|
INTERFACE: RPL_WKSTA(), constructor
|
|
|
|
~RPL_WKSTA(), destructor
|
|
|
|
I_Delete(), deletes a workstation.
|
|
|
|
PARENT: RPL_OBJECT
|
|
|
|
NOTES: The NetWksta API allows the caller to change the name of a
|
|
workstation record by calling SetInfo with one name in the
|
|
parameter list and another in the RPL_WKSTA_INFO block.
|
|
The RPL_WKSTA object hierarchy supports this by storing the
|
|
last known name (if any) in _nlsStoredWkstaName.
|
|
|
|
HISTORY:
|
|
JonN 06-Aug-1993 templated from RPL_PROFILE hierarchy
|
|
JonN 02-Dec-1993 Name is now WkstaName not AdapterID
|
|
JonN 07-Dec-1993 _nlsStoredWkstaName
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_WKSTA : public RPL_OBJECT
|
|
{
|
|
private:
|
|
|
|
NLS_STR _nlsWkstaName;
|
|
NLS_STR _nlsStoredWkstaName;
|
|
|
|
protected:
|
|
|
|
APIERR W_CloneFrom( const RPL_WKSTA & rplwksta );
|
|
|
|
virtual APIERR I_Delete( UINT uiForce );
|
|
|
|
const TCHAR * QueryStoredWkstaName() const;
|
|
|
|
APIERR SetStoredWkstaName( const TCHAR * pszStoredWkstaName );
|
|
|
|
public:
|
|
|
|
RPL_WKSTA( RPL_SERVER_REF & rplsrvref,
|
|
const TCHAR * pszWkstaName = NULL );
|
|
~RPL_WKSTA();
|
|
|
|
const TCHAR * QueryWkstaName() const;
|
|
|
|
APIERR SetWkstaName( const TCHAR * pszWkstaName );
|
|
|
|
};
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_WKSTA_0 (rplwksta0)
|
|
|
|
SYNOPSIS: NetRplWkstaGetInfo/SetInfo/Add[0] (dummy class)
|
|
|
|
INTERFACE: RPL_WKSTA_0() constructor
|
|
|
|
~RPL_WKSTA_0() destructor
|
|
|
|
PARENT: RPL_WKSTA
|
|
|
|
NOTES: This level is not supported for Get/SetInfo
|
|
|
|
HISTORY:
|
|
JonN 06-Aug-1993 templated from RPL_PROFILE hierarchy
|
|
JonN 02-Dec-1993 Name is now WkstaName not AdapterID
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_WKSTA_0 : public RPL_WKSTA
|
|
{
|
|
|
|
public:
|
|
|
|
RPL_WKSTA_0( RPL_SERVER_REF & rplsrvref,
|
|
const TCHAR *pszWkstaName = NULL )
|
|
: RPL_WKSTA( rplsrvref, pszWkstaName )
|
|
{}
|
|
~RPL_WKSTA_0() {}
|
|
|
|
};
|
|
|
|
typedef enum _RPL_LOGON_INPUT_ENUM {
|
|
RPL_LOGON_INPUT_REQUIRED,
|
|
RPL_LOGON_INPUT_OPTIONAL,
|
|
RPL_LOGON_INPUT_DONTASK
|
|
} RPL_LOGON_INPUT_ENUM, *PRPL_LOGON_INPUT_ENUM;
|
|
|
|
// constants must maintain these values for correspondence with
|
|
// control IDs
|
|
typedef enum _RPL_TCPIP_ENUM {
|
|
RPL_TCPIP_DHCP = 0,
|
|
RPL_TCPIP_SPECIFIC
|
|
} RPL_TCPIP_ENUM, * PRPL_TCPIP_ENUM;
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_WKSTA_2 (rplwksta2)
|
|
|
|
SYNOPSIS: NetRplWkstaGet/SetInfo/Add[2]
|
|
|
|
INTERFACE: RPL_WKSTA_2() constructor
|
|
|
|
~RPL_WKSTA_2() destructor
|
|
|
|
I_GetInfo
|
|
Reads in the current state of the object
|
|
|
|
I_WriteInfo
|
|
Writes the current state of the object to the
|
|
API. This write is atomic, either all
|
|
parameters are set or none are set.
|
|
|
|
I_CreateNew
|
|
Sets up the RPL_WKSTA_2 object with default values in
|
|
preparation for a call to WriteNew
|
|
|
|
I_WriteNew
|
|
Adds a new workstation
|
|
|
|
CloneFrom
|
|
Makes this RPL_WKSTA_2 instance an exact copy of the
|
|
parameter RPL_WKSTA_2 instance. All fields including
|
|
name and state will be copied. If this operation
|
|
fails, the object will be invalid. The parameter
|
|
must be a RPL_WKSTA_2 and not a subclass of RPL_WKSTA_2.
|
|
|
|
CreateAsCloneOf
|
|
Use this when you want to create a new workstation
|
|
as a clone of another workstation. The workstation
|
|
is not actually cloned until you call Write or WriteNew.
|
|
|
|
// accessors for property fields
|
|
|
|
PARENT: RPL_WKSTA_0
|
|
|
|
HISTORY:
|
|
JonN 06-Aug-1993 templated from RPL_PROFILE hierarchy
|
|
JonN 02-Dec-1993 Name is now WkstaName not AdapterID
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_WKSTA_2 : public RPL_WKSTA_0
|
|
{
|
|
|
|
private:
|
|
DWORD _dwFlags;
|
|
NLS_STR _nlsComment;
|
|
NLS_STR _nlsWkstaInProfile;
|
|
NLS_STR _nlsBootName;
|
|
NLS_STR _nlsFitFile;
|
|
NLS_STR _nlsAdapterName;
|
|
DWORD _dwTcpIpAddress;
|
|
DWORD _dwTcpIpSubnet;
|
|
DWORD _dwTcpIpGateway;
|
|
|
|
NLS_STR _nlsCreateAsCloneOf;
|
|
|
|
APIERR W_Write(); // helper for I_WriteInfo and I_WriteNew
|
|
|
|
protected:
|
|
virtual APIERR I_GetInfo();
|
|
virtual APIERR I_WriteInfo();
|
|
virtual APIERR I_CreateNew();
|
|
virtual APIERR I_WriteNew();
|
|
virtual APIERR I_ChangeToNew();
|
|
|
|
virtual APIERR W_CreateNew();
|
|
virtual APIERR W_CloneFrom( const RPL_WKSTA_2 & rplwksta2 );
|
|
|
|
public:
|
|
|
|
RPL_WKSTA_2( RPL_SERVER_REF & rplsrvref, const TCHAR *pszWkstaName );
|
|
~RPL_WKSTA_2();
|
|
|
|
APIERR CloneFrom( const RPL_WKSTA_2 & rplwksta2 );
|
|
|
|
APIERR CreateAsCloneOf( const TCHAR * pszCreateAsCloneOf );
|
|
|
|
//
|
|
// Accessors
|
|
//
|
|
|
|
inline const TCHAR * QueryComment() const
|
|
{ CHECK_OK(NULL); return _nlsComment.QueryPch(); }
|
|
|
|
APIERR SetComment( const TCHAR * pszComment );
|
|
|
|
inline DWORD QueryFlags() const
|
|
{ CHECK_OK(0); return _dwFlags; }
|
|
|
|
APIERR SetFlags( DWORD dwFlags );
|
|
|
|
inline const TCHAR * QueryWkstaInProfile() const
|
|
{ CHECK_OK(NULL); return _nlsWkstaInProfile.QueryPch(); }
|
|
|
|
APIERR SetWkstaInProfile( const TCHAR * pszWkstaInProfile );
|
|
|
|
inline const TCHAR * QueryBootName() const
|
|
{ CHECK_OK(NULL); return _nlsBootName.QueryPch(); }
|
|
|
|
APIERR SetBootName( const TCHAR * pszBootName );
|
|
|
|
inline const TCHAR * QueryFitFile() const
|
|
{ CHECK_OK(NULL); return _nlsFitFile.QueryPch(); }
|
|
|
|
APIERR SetFitFile( const TCHAR * pszFitFile );
|
|
|
|
const TCHAR * QueryAdapterName() const
|
|
{ CHECK_OK(NULL); return _nlsAdapterName.QueryPch(); }
|
|
|
|
APIERR SetAdapterName( const TCHAR *pszAdapterName );
|
|
|
|
inline DWORD QueryTcpIpAddress() const
|
|
{ CHECK_OK(0); return _dwTcpIpAddress; }
|
|
|
|
APIERR SetTcpIpAddress( DWORD dwTcpIpAddress );
|
|
|
|
inline DWORD QueryTcpIpSubnet() const
|
|
{ CHECK_OK(0); return _dwTcpIpSubnet; }
|
|
|
|
APIERR SetTcpIpSubnet( DWORD dwTcpIpSubnet );
|
|
|
|
inline DWORD QueryTcpIpGateway() const
|
|
{ CHECK_OK(0); return _dwTcpIpGateway; }
|
|
|
|
APIERR SetTcpIpGateway( DWORD dwTcpIpGateway );
|
|
|
|
RPL_LOGON_INPUT_ENUM QueryLogonInput() const
|
|
{
|
|
CHECK_OK(RPL_LOGON_INPUT_DONTASK);
|
|
switch (QueryFlags() & WKSTA_FLAGS_MASK_LOGON_INPUT)
|
|
{
|
|
case WKSTA_FLAGS_LOGON_INPUT_REQUIRED:
|
|
return RPL_LOGON_INPUT_REQUIRED;
|
|
case WKSTA_FLAGS_LOGON_INPUT_OPTIONAL:
|
|
return RPL_LOGON_INPUT_OPTIONAL;
|
|
default:
|
|
ASSERT( FALSE );
|
|
// fall through
|
|
case WKSTA_FLAGS_LOGON_INPUT_IMPOSSIBLE:
|
|
break;
|
|
}
|
|
return RPL_LOGON_INPUT_DONTASK;
|
|
}
|
|
|
|
APIERR SetLogonInput( RPL_LOGON_INPUT_ENUM LogonInput );
|
|
|
|
RPL_TCPIP_ENUM QueryTcpIpEnabled() const
|
|
{
|
|
CHECK_OK(RPL_TCPIP_DHCP);
|
|
switch (QueryFlags() & WKSTA_FLAGS_MASK_DHCP)
|
|
{
|
|
case WKSTA_FLAGS_DHCP_FALSE:
|
|
return RPL_TCPIP_SPECIFIC;
|
|
default:
|
|
ASSERT( FALSE );
|
|
// fall through
|
|
case WKSTA_FLAGS_DHCP_TRUE:
|
|
break;
|
|
}
|
|
return RPL_TCPIP_DHCP;
|
|
}
|
|
|
|
APIERR SetTcpIpEnabled( RPL_TCPIP_ENUM TcpIpEnabled );
|
|
|
|
BOOL QueryDeleteAccount() const
|
|
{
|
|
CHECK_OK(FALSE);
|
|
ASSERT( (!!(QueryFlags() & WKSTA_FLAGS_DELETE_TRUE))
|
|
!= (!!(QueryFlags() & WKSTA_FLAGS_DELETE_FALSE)) );
|
|
return !!(QueryFlags() & WKSTA_FLAGS_DELETE_TRUE);
|
|
}
|
|
|
|
APIERR SetDeleteAccount( BOOL fDeleteAccount );
|
|
|
|
BOOL QuerySharing() const
|
|
{
|
|
CHECK_OK(FALSE);
|
|
ASSERT( (!!(QueryFlags() & WKSTA_FLAGS_SHARING_TRUE))
|
|
!= (!!(QueryFlags() & WKSTA_FLAGS_SHARING_FALSE)) );
|
|
return !!(QueryFlags() & WKSTA_FLAGS_SHARING_TRUE);
|
|
}
|
|
|
|
APIERR SetSharing( BOOL fSharing );
|
|
|
|
};
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: RPL_ADAPTER (rpladapt)
|
|
|
|
SYNOPSIS: Class for deleting RPL adapters
|
|
|
|
INTERFACE: RPL_ADAPTER(), constructor
|
|
|
|
~RPL_ADAPTER(), destructor
|
|
|
|
QueryAdapterName(), returns pointer to the adapter name
|
|
that was passed in to constructor or
|
|
set by SetAdapterName if the name was correct.
|
|
Otherwise returns previous name.
|
|
|
|
SetAdapterName(), sets adapter name, returns error code
|
|
which is NERR_Success on success.
|
|
|
|
I_Delete(), deletes an adapter
|
|
|
|
PARENT: RPL_OBJECT
|
|
|
|
HISTORY:
|
|
JonN 09-Sep-1993 Created
|
|
|
|
**************************************************************************/
|
|
|
|
class RPL_ADAPTER : public RPL_OBJECT
|
|
{
|
|
private:
|
|
|
|
NLS_STR _nlsAdapterName;
|
|
|
|
protected:
|
|
|
|
virtual APIERR I_Delete( UINT uiForce );
|
|
|
|
public:
|
|
|
|
RPL_ADAPTER( RPL_SERVER_REF & rplsrvref,
|
|
const TCHAR * pszAdapterName = NULL );
|
|
~RPL_ADAPTER();
|
|
|
|
const TCHAR *QueryAdapterName() const;
|
|
|
|
APIERR SetAdapterName( const TCHAR *pszAdapterName );
|
|
|
|
static APIERR ValidateAdapterName( const TCHAR * pszAdapterName );
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _LMORPL_HXX_
|