#ifndef _HXX_UTIL #define _HXX_UTIL //+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: util.hxx // // Contents: Utilities in cdutil that are not exported outside of // formidbl.dll. // // History: 7-13-94 adams Created // //---------------------------------------------------------------------------- //+------------------------------------------------------------------------ // // misc.cxx // //------------------------------------------------------------------------- HRESULT GetLastWin32Error(void); //+------------------------------------------------------------------------ // // Dispatch utilites in disputil.cxx // //------------------------------------------------------------------------- HRESULT ValidateInvoke( DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr); inline void InitEXCEPINFO(EXCEPINFO * pEI) { if (pEI) memset(pEI, 0, sizeof(*pEI)); } void FreeEXCEPINFO(EXCEPINFO * pEI); HRESULT LoadTypeInfo(CLSID clsidTL, CLSID clsidTI, LPTYPEINFO *ppTI); HRESULT GetDispProp( IDispatch * pDisp, DISPID dispid, REFIID riid, LCID lcid, VARIANT * pvarg, EXCEPINFO * pexcepinfo = NULL); HRESULT SetDispProp( IDispatch * pDisp, DISPID dispid, REFIID riid, LCID lcid, VARIANTARG * pvarg, EXCEPINFO * pexcepinfo = NULL); HRESULT GetDispPropOfType( IDispatch * pDisp, DISPID dispid, LCID lcid, VARTYPE vt, void * pv); HRESULT SetDispPropOfType( IDispatch * pDisp, DISPID dispid, LCID lcid, VARTYPE vt, void * pv); HRESULT CallDispMethod( IDispatch * pDisp, DISPID dispid, LCID lcid, VARTYPE vtReturn, void * pvReturn, VARTYPE * pvtParams, ...); STDAPI DispParamsToCParams( DISPPARAMS * pDP, UINT * puArgErr, VARTYPE * pvt, ...); void CParamsToDispParams( DISPPARAMS * pDispParams, VARTYPE * pvt, va_list va); BOOL IsVariantEqual(VARIANTARG FAR* pvar1, VARIANTARG FAR* pvar2); //+------------------------------------------------------------------------ // // Message display and Error handling (error.cxx) // //------------------------------------------------------------------------- // properties of a message box for displaying an error const UINT MB_ERRORFLAGS = MB_ICONEXCLAMATION | MB_OK; // // Extension of EXCEPINFO which initializes itself and // destroys allocated strings. // // Functions for creating and propogating error information HRESULT ADsPropogateErrorInfo(HRESULT hrError, REFIID iid, IUnknown * pUnk); HRESULT ADsSetErrorInfo(HRESULT hrError, EXCEPINFO * pEI = NULL); HRESULT ADsCreateErrorInfo(HRESULT hrError, IErrorInfo ** ppEI); HRESULT GetErrorInfoToExcepInfo(HRESULT hrError, EXCEPINFO * pEI); HRESULT ResultToExcepInfo(HRESULT hrError, EXCEPINFO * pEI); void ADsGetErrorInfo(IUnknown * pUnk, REFIID iid, IErrorInfo ** ppEI); // Functions for displaying messages HRESULT GetErrorText(HRESULT hrError, LPWSTR * ppwszDescription); HRESULT __cdecl DisplayErrorMsg(HWND hwndOwner, UINT idsContext, ...); HRESULT __cdecl DisplayError( HWND hwndOwner, HRESULT hrError, LPWSTR pwszSource, LPWSTR pwszDescription, UINT idsContext, va_list arglist); HRESULT __cdecl DisplayErrorResult( HWND hwndOwner, HRESULT hrError, UINT idsContext, ...); HRESULT __cdecl DisplayErrorEXCEPINFO( HWND hwndOwner, HRESULT hrError, EXCEPINFO * pEI, UINT idsContext, ...); HRESULT __cdecl DisplayErrorErrorInfo( HWND hwndOwner, HRESULT hrError, IErrorInfo * pEI, UINT idsContext, ...); HRESULT __cdecl DisplayMessage( int * pResult, HWND hwndOwner, UINT uiMessageFlags, UINT idsTitle, UINT idsMessage, ...); HRESULT DisplayMessageV( int * pResult, HWND hwndOwner, UINT uiMessageFlags, UINT idsTitle, UINT idsMessage, va_list argptr); HRESULT BuildVariantArrayofStrings( LPWSTR *lppPathNames, DWORD dwPathNames, VARIANT ** ppVar ); HRESULT BuildVariantArrayofIntegers( LPDWORD lpdwObjectTypes, DWORD dwObjectTypes, VARIANT ** ppVar ); typedef VARIANT *PVARIANT; HRESULT ConvertSafeArrayToVariantArray( VARIANT varSafeArray, PVARIANT * ppVarArray, PDWORD pdwNumVariants ); HRESULT ConvertByRefSafeArrayToVariantArray( VARIANT varSafeArray, PVARIANT * ppVarArray, PDWORD pdwNumVariants ); HRESULT ConvertVariantArrayToLDAPStringArray( PVARIANT pVarArray, PWSTR **pppszStringArray, DWORD dwNumStrings ); void RaiseException( HRESULT hr ); HRESULT BinaryToVariant( DWORD Length, BYTE* pByte, PVARIANT lpVarDestObject ); HRESULT VariantToBinary( PVARIANT pVarSrcObject, DWORD *pdwLength, BYTE **ppByte ); HRESULT CopyOctetString( DWORD dwNumBytes, BYTE *pData, DWORD *pdwNumBytes, BYTE **ppByte ); #endif // #ifndef _HXX_UTIL