windows-nt/Source/XPSP1/NT/printscan/ui/uicommon/dumpprop.h

169 lines
4.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORPORATION, 2000
*
* TITLE: DUMPPROP.H
*
* VERSION: 1.0
*
* AUTHOR: ShaunIv
*
* DATE: 9/25/2000
*
* DESCRIPTION: Display the properties associated with a IWiaItem, either to the
* debugger, or to a log file.
*
*******************************************************************************/
#ifndef __DUMPPROP_H_INCLUDED
#define __DUMPPROP_H_INCLUDED
#include <simstr.h>
#include <wia.h>
#include <wiadebug.h>
class CWiaDebugDump
{
private:
//
// No implementation
//
CWiaDebugDump( const CWiaDebugDump & );
CWiaDebugDump &operator=( const CWiaDebugDump & );
public:
//
// Static helper functions
//
static CSimpleString GetPropVariantTypeString( VARTYPE vt );
static CSimpleString GetPrintableValue( PROPVARIANT &PropVariant );
static CSimpleString GetPrintableValue( VARIANT &Variant );
static CSimpleString GetPrintableName( const STATPROPSTG &StatPropStg );
static CSimpleString GetPrintableAccessFlags( ULONG nAccessFlags );
static CSimpleString GetPrintableLegalValues( ULONG nAccessFlags, const PROPVARIANT &PropVariantAttributes );
static CSimpleString GetWiaItemTypeFlags( IUnknown *pUnknown );
static CSimpleString GetStringFromGuid( const GUID &guid );
static CSimpleString GetTymedString( LONG tymed );
virtual void Print( LPCTSTR pszString );
protected:
void PrintAndDestroyWiaDevCap( WIA_DEV_CAP &WiaDevCap, LPCTSTR pszType );
public:
//
// Constructor and destructor
//
CWiaDebugDump(void);
virtual ~CWiaDebugDump(void);
//
// Helpers
//
void DumpFormatInfo( IUnknown *pUnknown );
void DumpCaps( IUnknown *pUnknown );
void DumpEvents( IUnknown *pUnknown );
virtual bool OK(void) { return true; }
//
// These are the most generally useful functions
//
void DumpWiaPropertyStorage( IUnknown *pUnknown );
void DumpWiaItem( IUnknown *pUnknown );
void DumpRecursive( IUnknown *pUnknown );
};
class CWiaDebugDumpToFile : public CWiaDebugDump
{
private:
HANDLE m_hFile;
private:
CWiaDebugDumpToFile(void);
CWiaDebugDumpToFile( const CWiaDebugDumpToFile & );
CWiaDebugDumpToFile &operator=( const CWiaDebugDumpToFile & );
public:
//
// Constructor and destructor
//
CWiaDebugDumpToFile( LPCTSTR pszFilename, bool bOverwrite );
virtual ~CWiaDebugDumpToFile(void);
virtual bool OK(void) { return (m_hFile != INVALID_HANDLE_VALUE); }
virtual void Print( LPCTSTR pszString );
};
class CWiaDebugDumpToFileHandle : public CWiaDebugDump
{
private:
HANDLE m_hFile;
private:
CWiaDebugDumpToFileHandle(void);
CWiaDebugDumpToFileHandle( const CWiaDebugDumpToFileHandle & );
CWiaDebugDumpToFileHandle &operator=( const CWiaDebugDumpToFileHandle & );
public:
//
// Constructor and destructor
//
CWiaDebugDumpToFileHandle( HANDLE hFile );
virtual ~CWiaDebugDumpToFileHandle(void);
virtual bool OK(void) { return (m_hFile != INVALID_HANDLE_VALUE); }
virtual void Print( LPCTSTR pszString );
};
//
// This small helper function checks a registry entry, and saves the item or tree to the log file stored in that entry. If
// one is not stored in that registry entry, nothing will be saved
//
inline void SaveItemTreeLog( HKEY hKey, LPCTSTR pszRegKey, LPCTSTR pszRegValue, bool bOverwrite, IWiaItem *pWiaItem, bool bRecurse )
{
CSimpleString strFilename = CSimpleReg(hKey,pszRegKey,false,KEY_READ).Query(pszRegValue,TEXT(""));
if (strFilename.Length())
{
if (bRecurse)
{
CWiaDebugDumpToFile(strFilename,bOverwrite).DumpRecursive(pWiaItem);
}
else
{
CWiaDebugDumpToFile(strFilename,bOverwrite).DumpWiaItem(pWiaItem);
}
}
}
//
// Debug-only macros
//
#if defined(DBG) || defined(DEBUG) || defined(_DEBUG)
//
// Save the whole tree to a log file, from this item down
//
#define WIA_SAVEITEMTREELOG(hKey,pszRegKey,pszRegValue,bOverwrite,pWiaItem) SaveItemTreeLog( hKey, pszRegKey, pszRegValue, bOverwrite, pWiaItem, true )
//
// Save this item to a log file
//
#define WIA_SAVEITEMLOG(hKey,pszRegKey,pszRegValue,bOverwrite,pWiaItem) SaveItemTreeLog( hKey, pszRegKey, pszRegValue, bOverwrite, pWiaItem, false )
//
// Print this item in the debugger
//
#define WIA_DUMPWIAITEM(pWiaItem) CWiaDebugDump().DumpWiaItem(pWiaItem);
#else
#define WIA_SAVEITEMTREELOG(hKey,pszRegKey,pszRegValue,bOverwrite,pWiaItem)
#define WIA_SAVEITEMLOG(hKey,pszRegKey,pszRegValue,bOverwrite,pWiaItem)
#define WIA_DUMPWIAITEM(pWiaItem)
#endif
#endif // __DUMPPROP_H_INCLUDED