Partager via


C-C++ Source: DBStream.h

 

[This sample code uses features that were implemented in MSXML 5.0 for Microsoft Office Applications. XML digital signatures are not supported in MXSML 6.0 and later.]

The following is the header file for the DBStream class used in the setDebugOutput project.

#include <windows.h>
#import <msxml5.dll>
using namespace MSXML2;


/////////////////////////////////////////////////
//  An IStream object to receive debug info:
//
class DBStream : public IStream
{
protected:
    int      _nCount;
    DWORD    _nState;

private:    
    long   _refcount;
   IXMLDOMDocument3Ptr _xmldbg;
   BSTR   *bstrBuf;

public:

   ///////////////////////
   // Constructor and destructor:
   //
    DBStream(void); 
    ~DBStream();

   ////////////////////////
   // IUnknown interface:
   //
    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, 
                                  void ** ppvObject);
    ULONG STDMETHODCALLTYPE AddRef( void);
    ULONG STDMETHODCALLTYPE DBStream::Release( void);

    ///////////////////////////////////////////////////////////
    // IStream Interface:
    //
    HRESULT STDMETHODCALLTYPE Commit(DWORD grfCommitFlags);
    HRESULT STDMETHODCALLTYPE Write(void const* pv, 
                           ULONG cb, 
                           ULONG * pcbWritten);

    HRESULT STDMETHODCALLTYPE Read(void * pv, 
                           ULONG cb, 
                           ULONG * pcbRead);

    HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER dlibMove, 
                           DWORD dwOrigin, 
                           ULARGE_INTEGER * plibNewPosition);

    HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER libNewSize);

    HRESULT STDMETHODCALLTYPE CopyTo(IStream * pstm, 
                            ULARGE_INTEGER cb, 
                            ULARGE_INTEGER * pcbRead, 
                            ULARGE_INTEGER * pcbWritten);
     
    HRESULT STDMETHODCALLTYPE Revert(void);

    HRESULT STDMETHODCALLTYPE LockRegion( ULARGE_INTEGER libOffset, 
                                ULARGE_INTEGER cb, 
                                DWORD dwLockType);

    HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER libOffset, 
                                 ULARGE_INTEGER cb, 
                                 DWORD dwLockType);

    HRESULT STDMETHODCALLTYPE Stat(STATSTG * pstatstg, 
                           DWORD grfStatFlag);

    HRESULT STDMETHODCALLTYPE Clone(IStream ** ppstm);

private:
   void STDMETHODCALLTYPE dprintf( char * format, ...);

};