mirror of https://github.com/tongzx/nt5src
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.
168 lines
4.7 KiB
168 lines
4.7 KiB
/*******************************************************************************
|
|
*
|
|
* (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
|
|
|