//+-------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1994 - 1998. // // File: util.hxx // // Contents: Prototypes for miscellaneous utility functions. // // History: 09-18-1997 DavidMun Created // //--------------------------------------------------------------------------- #ifndef __UTIL_HXX_ #define __UTIL_HXX_ HRESULT LoadStr( ULONG ids, PWSTR wszBuf, ULONG cchBuf, PCWSTR wszDefault = NULL); void NewDupStr( PWSTR *ppwzDup, PCWSTR wszSrc); HRESULT CoTaskDupStr( PWSTR *ppwzDup, PCWSTR wzSrc); HRESULT UnicodeToAnsi( LPSTR szTo, LPCWSTR pwszFrom, ULONG cbTo); void UnicodeStringToWsz( const UNICODE_STRING &refustr, PWSTR wszBuf, ULONG cchBuf); void StripLeadTrailSpace( PWSTR ptsz); void InvokeWinHelp( UINT message, WPARAM wParam, LPARAM lParam, PCWSTR wszHelpFileName, ULONG aulControlIdToHelpIdMap[]); HRESULT AllocateQueryInfo( PDSQUERYINFO *ppdsqi); void FreeQueryInfo( PDSQUERYINFO pqi); void MessageWait( ULONG cObjects, const HANDLE *aObjects, ULONG ulTimeout); void GetPolicySettings( ULONG *pcMaxHits, BOOL *pfExcludeDisabled); //+-------------------------------------------------------------------------- // // Function: IsCredError // // Synopsis: Return TRUE if [hr] is a credential-related error. // // History: 04-30-1998 DavidMun Created // //--------------------------------------------------------------------------- inline BOOL IsCredError( HRESULT hr) { BOOL fIsCredError; switch (hr) { case HRESULT_FROM_WIN32(ERROR_INVALID_PASSWORD): case HRESULT_FROM_WIN32(ERROR_PASSWORD_EXPIRED): case HRESULT_FROM_WIN32(ERROR_LOGON_FAILURE): case HRESULT_FROM_WIN32(ERROR_BAD_USERNAME): case HRESULT_FROM_WIN32(ERROR_ACCOUNT_DISABLED): case HRESULT_FROM_WIN32(ERROR_ACCOUNT_LOCKED_OUT): case HRESULT_FROM_WIN32(ERROR_SESSION_CREDENTIAL_CONFLICT): case E_ACCESSDENIED: fIsCredError = TRUE; break; default: fIsCredError = FALSE; break; } return fIsCredError; } inline LONG WindowRectWidth( const RECT &rc) { return rc.right - rc.left; } inline LONG WindowRectHeight( const RECT &rc) { return rc.bottom - rc.top; } PWSTR wcsistr( PCWSTR pwzSearchIn, PCWSTR pwzSearchFor); HRESULT ProviderFlagFromPath( const String &strADsPath, ULONG *pulProvider); BOOL IsDisabled( IADs *pADs); BOOL IsLocalComputername( PCWSTR pwzComputerName); BOOL IsCurrentUserLocalUser(); inline BOOL IsDownlevelFlagSet(ULONG flLeft, ULONG flRight) { return ((flLeft & flRight) & ~DOWNLEVEL_FILTER_BIT); } void DisableSystemMenuClose( HWND hwnd); HRESULT AddStringToCombo( HWND hwndCombo, ULONG ids); void LdapEscape( String *pstrEscaped); void UpdateLookForInText( HWND hwndDlg, const CObjectPicker &rop); typedef BOOL (*PFNOBJECTTEST)(const DS_SELECTION &, LPARAM); void AddFromDataObject( ULONG idScope, IDataObject *pdo, PFNOBJECTTEST pfnTestObject, LPARAM lParam, CDsObjectList *pdsol); String UliToStr( const ULARGE_INTEGER &uli); void SetDefaultColumns( HWND hwnd, const CObjectPicker &rop, AttrKeyVector *pvakListviewColumns); //>> String GetClassName(const CObjectPicker &rop); template BOOL AddIfNotPresent( container_class *pContainer, value_class Value) { if (pContainer->end() == find(pContainer->begin(), pContainer->end(), Value)) { pContainer->push_back(Value); return TRUE; } return FALSE; } inline void SetListViewSelection( HWND hwndLV, int iItem) { ListView_SetItemState(hwndLV, iItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); } HRESULT LocalAllocString(LPTSTR* ppResult, LPCTSTR pString); HRESULT IsSidGood( IN LPCWSTR pszTargetMachineName, IN LPCWSTR pszAccountName, IN PSID pInputSid, OUT PBOOL pbGood); class ProgressDialog{ public: ProgressDialog(HWND hwnd):m_hwndPopupOwner(hwnd), m_pProgressDlg(NULL){} void CreateProgressDialog(void); void CloseProgressDialog(void); HRESULT SetProgress(ULONG uCount); private: IProgressDialog *m_pProgressDlg; HWND m_hwndPopupOwner; }; #endif // __UTIL_HXX_