Leaked source code of windows server 2003
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.
|
|
class CCred; // forward reference
//+---------------------------------------------------------------------------
// _____ ___ _ _ _____ ___ _ _ _ _
// / __\ \ / (_)_ _ | \| |_ _/ __|_ _ ___ __| |___ _ _| |_(_)__ _| |___
// | (__ \ \/\/ /| | ' \| .` | | || (__| '_/ -_) _` / -_) ' \ _| / _` | (_-<
// \___| \_/\_/ |_|_||_|_|\_| |_| \___|_| \___\__,_\___|_||_\__|_\__,_|_/__/
//
// Class CWinNTCredentials - encapsulates permissions on a server's
// ADMIN$ resource.
//
// The most common use of this object will be passing it around between
// objects. To do this, add lines like these to the new object's
// create() method:
//
// CNewObj::CreateNewObj(CWinNTCredentials& Credentials, ...)
// { // ...
// pNewObj->_Credentials = Credentials;
// hr = pNewObj->_Credentials->ref(pszServerName);
// BAIL_ON_FAILURE(hr);
// // ...
// }
//
// The CWinNTCredentials object's destructor takes care of dereferencing
// the internal object automatically.
//
//
// Constructors:
// CWinNTCredentials() - create an empty CWinNTCredentials
// CWinNTCredentials( - copies a CWinNTCredentials object
// const CWinNTCredentials&)
// CWinNTCredentials( - create a CWinNTCredentials with a
// PWSTR pszUserName, username and password. This does
// PWSTR pszPassword) not bind to a server.
//
// Public methods:
// GetUserName - get the username of the credentials
// GetPassword - get the password of the credentials
// Bound - TRUE iff this object has a reference
// to a server.
// ref - add a reference to this object
// and connect to the server if
// necessary
//
//----------------------------------------------------------------------------
class CWinNTCredentials { public: CWinNTCredentials();
CWinNTCredentials( PWSTR pszUserName, PWSTR pszPassword, DWORD dwFlags = 0 ); CWinNTCredentials(const CWinNTCredentials& Credentials); ~CWinNTCredentials();
const CWinNTCredentials& operator=(const CWinNTCredentials& other);
HRESULT RefServer(PWSTR pszServer, BOOL fAllowRebinding = FALSE); HRESULT RefDomain(PWSTR pszDomain); HRESULT Ref(PWSTR pszServer, PWSTR pszDomain, DWORD dwType);
HRESULT GetUserName(PWSTR *ppszUserName); HRESULT GetPassword(PWSTR * ppszPassword); BOOL Bound();
// AjayR we need these two methods for use from objects
// that get a reference to a Credentials object but that
// never make a copy of the object - particularly for getobj.cxx
// and cobjcach.cxx
HRESULT DeRefServer(); HRESULT DeRefDomain();
DWORD GetFlags() const; void SetFlags(DWORD dwFlags);
void SetUmiFlag(void); void ResetUmiFlag(void);
private: // AjayR addition :
// This is called by the destructor and other routines
// where we need to clear the m_pCred object - reduce its
// usage count, deref and delete if necessary.
//
void Clear_pCredObject();
DWORD m_cRefAdded; CCred *m_pCred; DWORD m_dwFlags; };
|