|
|
#define COMPUTER_USER 1
#define DOMAIN_USER 2
class CWinNTUser;
class CWinNTUser : INHERIT_TRACKING, public CCoreADsObject, public ISupportErrorInfo, public IADsUser, public IADsPropertyList, public INonDelegatingUnknown, public IADsExtension {
public:
/* IUnknown methods */ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// INonDelegatingUnknown methods
STDMETHOD(NonDelegatingQueryInterface)(THIS_ const IID&, void ** );
DECLARE_NON_DELEGATING_REFCOUNTING
DECLARE_IDispatch_METHODS
DECLARE_ISupportErrorInfo_METHODS
DECLARE_IADs_METHODS
DECLARE_IADsPropertyList_METHODS
DECLARE_IADsUser_METHODS
DECLARE_IADsExtension_METHODS
CWinNTUser::CWinNTUser();
CWinNTUser::~CWinNTUser();
static HRESULT CWinNTUser::CreateUser( BSTR Parent, ULONG ParentType, BSTR DomainName, BSTR ServerName, BSTR UserName, DWORD dwObjectState, REFIID riid, CWinNTCredentials& Credentials, void **ppvObj );
static HRESULT CWinNTUser::CreateUser( BSTR Parent, ULONG ParentType, BSTR DomainName, BSTR ServerName, BSTR UserName, DWORD dwObjectState, DWORD *pdwUserFlags, // OPTIONAL
LPWSTR szFullName, // OPTIONAL
LPWSTR szDescription, // OPTIONAL
PSID pSid, // OPTIONAL
REFIID riid, CWinNTCredentials& Credentials, void **ppvObj );
static HRESULT CWinNTUser::AllocateUserObject( CWinNTUser ** ppUser );
//
// For current implementation in cuser:
// If this function is called as a public function (ie. by another
// modual/class), fExplicit must be FALSE since the cache is NOT
// flushed in this function.
//
// External functions should ONLY call GetInfo(no param) for explicit
// GetInfo. This will flush the cache properly.
//
STDMETHOD(GetInfo)( THIS_ DWORD dwApiLevel, BOOL fExplicit ) ;
HRESULT CWinNTUser::SetInfo( DWORD dwApiLevel );
STDMETHOD(ImplicitGetInfo)(void);
protected:
HRESULT CWinNTUser::GetStandardInfo( THIS_ DWORD dwApiLevel, BOOL fExplicit );
HRESULT CWinNTUser::UnMarshall( LPBYTE lpBuffer, DWORD dwApiLevel, BOOL fExplicit );
HRESULT CWinNTUser::UnMarshall_Level3( BOOL fExplicit, LPUSER_INFO_3 pUserInfo3 );
HRESULT CWinNTUser::Prepopulate( BOOL fExplicit, DWORD *pdwUserFlags, // OPTIONAL
LPWSTR szFullName, // OPTIONAL
LPWSTR szDescription, // OPTIONAL
PSID pSid // OPTIONAL
);
HRESULT CWinNTUser::GetSidInfo( BOOL fExplicit ); HRESULT CWinNTUser::GetRasInfo( BOOL fExplicit );
HRESULT GetModalInfo( DWORD dwApiLevel, BOOL fExplicit ) ;
HRESULT CWinNTUser::UnMarshallModalInfo( LPBYTE lpBuffer, DWORD dwApiLevel, BOOL fExplicit );
HRESULT CWinNTUser::UnMarshall_ModalLevel0( BOOL fExplicit, LPUSER_MODALS_INFO_0 pUserInfo0 );
HRESULT CWinNTUser::UnMarshall_ModalLevel2( BOOL fExplicit, LPUSER_MODALS_INFO_2 pUserInfo2 );
HRESULT CWinNTUser::UnMarshall_ModalLevel3( BOOL fExplicit, LPUSER_MODALS_INFO_3 pUserInfo3 );
HRESULT CWinNTUser::MarshallAndSet( LPWSTR szHostServerName, LPBYTE lpBuffer, DWORD dwApiLevel );
HRESULT CWinNTUser::Marshall_Set_Level3( LPWSTR szHostServerName, LPUSER_INFO_3 pUserInfo3 );
HRESULT CWinNTUser::Marshall_Create_Level1( LPWSTR szHostServerName, LPUSER_INFO_1 pUserInfo1 );
protected:
HRESULT CWinNTUser::GetUserFlags( DWORD *pdwUserFlags );
ULONG _ParentType; BSTR _DomainName; BSTR _ServerName;
CAggregatorDispMgr FAR * _pDispMgr; CADsExtMgr FAR * _pExtMgr;
CPropertyCache FAR * _pPropertyCache; CWinNTCredentials _Credentials; HRESULT setPrivatePassword(PWSTR pszNewPassword); HRESULT getPrivatePassword(PWSTR * ppszPassword);
private: // These are needed to set password on a new user
// before setInfo AjayR 7-2-98
BOOL _fPasswordSet; //
// Keep track of changes to the permissions.
//
DWORD _dwRasPermissions; // CCredentials is in oleds\noole
CCredentials * _pCCredentialsPwdHolder;
// flag to keep track of whether the account locked information for the
// user is correct in the cache. If the user object was obtained through
// enumeration, then the user flags may not contain the correct value
// for computed bits (since NetQueryDisplayInformation does not return
// this info. correctly while NetUserGetInfo does).
BOOL _fUseCacheForAcctLocked;
BOOL _fComputerAcct;
};
|