Source code of Windows XP (NT5)
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.
|
|
//
// MODULE: FUNCTIONS.H
//
// PURPOSE: Decodes the the variant structures.
//
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
//
// COMPANY: Saltmine Creative, Inc. (206)-633-4743 [email protected]
//
// AUTHOR: Richard Meadows
///
// ORIGINAL DATE: 6/4/96
//
// NOTES:
// 1.
//
// Version Date By Comments
//--------------------------------------------------------------------
// V0.1 - RM Original
// V0.3 3/24/98 JM Local Version for NT5
//
#ifndef __FUNCTIONS_H_
#define __FUNCTIONS_H_ 1
inline CString GlobFormatMessage(DWORD dwLastError) { CString strMessage; void *lpvMessage; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwLastError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPTSTR) &lpvMessage, 0, NULL); strMessage = (LPCTSTR) lpvMessage; LocalFree(lpvMessage); return strMessage; }
inline CString DecodeVariantTypes(VARTYPE vt) { CString str = _T(""); if (VT_EMPTY == vt) str = _T("Empty "); else if(VT_ILLEGAL == vt) str = _T("ILLEGAL "); else if(VT_ILLEGALMASKED == vt) str = _T("ILLEGALMASKED "); else { if (VT_VECTOR == (VT_VECTOR & vt)) str += _T("VECTOR "); if (VT_ARRAY == (VT_ARRAY & vt)) str += _T("ARRAY "); if (VT_BYREF == (VT_BYREF & vt)) str += _T("BYREF "); if (VT_RESERVED == (VT_RESERVED & vt)) str += _T("RESERVED "); if (VT_TYPEMASK == (VT_TYPEMASK & vt)) str += _T("TYPEMASK "); vt &= 0xFFF; if (VT_NULL == vt) str += _T("Null "); if (VT_I2 == vt) str += _T("I2 "); if (VT_I4 == vt) str += _T("I4 "); if (VT_R4 == vt) str += _T("R4 "); if (VT_R8 == vt) str += _T("R8 "); if (VT_CY == vt) str += _T("CY "); if (VT_DATE == vt) str += _T("DATE "); if (VT_BSTR == vt) str += _T("BSTR "); if (VT_DISPATCH == vt) str += _T("DISPATCH "); if (VT_ERROR == vt) str += _T("ERROR "); if (VT_BOOL == vt) str += _T("BOOL "); if (VT_VARIANT == vt) str += _T("VARIANT "); if (VT_UNKNOWN == vt) str += _T("UNKNOWN "); if (VT_DECIMAL == vt) str += _T("DECIMAL "); if (VT_I1 == vt) str += _T("I1 "); if (VT_UI1 == vt) str += _T("UI1 "); if (VT_UI2 == vt) str += _T("UI2 "); if (VT_UI4 == vt) str += _T("UI4 "); if (VT_I8 == vt) str += _T("I8 "); if (VT_UI8 == vt) str += _T("UI8 "); if (VT_INT == vt) str += _T("INT "); if (VT_UINT == vt) str += _T("UINT "); if (VT_VOID == vt) str += _T("VOID "); if (VT_HRESULT == vt) str += _T("HRESULT "); if (VT_PTR == vt) str += _T("PTR "); if (VT_SAFEARRAY == vt) str += _T("SAFEARRAY "); if (VT_CARRAY == vt) str += _T("CARRAY "); if (VT_USERDEFINED == vt) str += _T("USERDEFINED "); if (VT_LPSTR == vt) str += _T("LPSTR "); if (VT_LPWSTR == vt) str += _T("LPWSTR "); if (VT_FILETIME == vt) str += _T("FILETIME "); if (VT_BLOB == vt) str += _T("BLOB "); if (VT_STREAM == vt) str += _T("STREAM "); if (VT_STORAGE == vt) str += _T("STORAGE "); if (VT_STREAMED_OBJECT == vt) str += _T("STREAMED_OBJECT "); if (VT_STORED_OBJECT == vt) str += _T("STORED_OBJECT "); if (VT_BLOB_OBJECT == vt) str += _T("BLOB_OBJECT "); if (VT_CF == vt) str += _T("CF "); if (VT_CLSID == vt) str += _T("CLSID "); } return str; }
inline CString DecodeSafeArray(unsigned short Features) { /*
#define FADF_AUTO 0x0001 // Array is allocated on the stack.
#define FADF_STATIC 0x0002 // Array is statically allocated.
#define FADF_EMBEDDED 0x0004 // Array is embedded in a structure.
#define FADF_FIXEDSIZE 0x0010 // Array may not be resized or
// reallocated.
#define FADF_BSTR 0x0100 // An array of BSTRs.
#define FADF_UNKNOWN 0x0200 // An array of IUnknown*.
#define FADF_DISPATCH 0x0400 // An array of IDispatch*.
#define FADF_VARIANT 0x0800 // An array of VARIANTs.
#define FADF_RESERVED 0xF0E8 // Bits reserved for future use.
*/ CString str = _T(""); if (FADF_AUTO == (FADF_AUTO & Features)) str += _T("Array is allocated on the stack.\n"); if (FADF_STATIC == (FADF_STATIC & Features)) str += _T("Array is statically allocated.\n"); if (FADF_EMBEDDED == (FADF_EMBEDDED & Features)) str += _T("Array is embedded in a structure.\n"); if (FADF_FIXEDSIZE == (FADF_FIXEDSIZE & Features)) str += _T("Array may not be resized of reallocated.\n"); if (FADF_BSTR == (FADF_BSTR & Features)) str += _T("An array of BSTRs.\n"); if (FADF_UNKNOWN == (FADF_UNKNOWN & Features)) str += _T("An array of IUnknown.\n"); if (FADF_DISPATCH == (FADF_DISPATCH & Features)) str += _T("An array of IDispatch.\n"); if (FADF_VARIANT == (FADF_VARIANT & Features)) str += _T("An array of VARIANTS.\n"); if (FADF_RESERVED == (FADF_RESERVED & Features)) str+= _T("Array is using all of the reserved bits.\n"); return str; }
inline void FormatLastError(CString *pstr, DWORD dwLastError) { void *lpvMessage; ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwLastError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPTSTR) &lpvMessage, 0, NULL); *pstr = (LPCTSTR) lpvMessage; ::LocalFree(lpvMessage); // slightly hideous, but Win32 FormatMessage uses LocalAlloc
// in response to FORMAT_MESSAGE_ALLOCATE_BUFFER, so we
// need to use LocalFree.
return; }
#endif
|