/*++

Copyright (C) 1998-1999 Microsoft Corporation

Module Name:

    smctrqry.h

Abstract:

    Class definitions for the counter log query.

--*/

#ifndef _CLASS_SMCTRQRY_
#define _CLASS_SMCTRQRY_

#include "smlogqry.h"

class CSmCounterLogQuery : public CSmLogQuery
{
    // constructor/destructor
    public:
                CSmCounterLogQuery( CSmLogService* );
        virtual ~CSmCounterLogQuery( void );

    // public methods
    public:

        virtual DWORD   Open ( const CString& rstrName, HKEY hKeyQuery, BOOL bReadOnly);
        virtual DWORD   Close ( void );

        virtual DWORD   SyncWithRegistry( void );

        virtual BOOL    GetLogTime(PSLQ_TIME_INFO pTimeInfo, DWORD dwFlags);
        virtual BOOL    SetLogTime(PSLQ_TIME_INFO pTimeInfo, const DWORD dwFlags);
        virtual BOOL    GetDefaultLogTime(SLQ_TIME_INFO& rTimeInfo, DWORD dwFlags);

        virtual DWORD   GetLogType( void );

                LPCWSTR GetFirstCounter( void );
                LPCWSTR GetNextCounter( void );
                VOID    ResetCounterList( void );
                BOOL    AddCounter(LPCWSTR szCounterPath);

        virtual HRESULT LoadFromPropertyBag ( IPropertyBag*, IErrorLog* );
        virtual HRESULT SaveToPropertyBag   ( IPropertyBag*, BOOL fSaveAllProps );
        virtual HRESULT LoadCountersFromPropertyBag ( IPropertyBag*, IErrorLog* );
        virtual HRESULT SaveCountersToPropertyBag   ( IPropertyBag* );
        virtual HRESULT TranslateMSZCounterList( LPTSTR  pszCounterList,
                                                 LPTSTR  pBuffer,
                                                 LPDWORD pdwBufferSize,
                                                 BOOL    bFlag);

        virtual CSmCounterLogQuery* CastToCounterLogQuery ( void ) { return this; };
        // protected methods
    protected:
        virtual DWORD   UpdateRegistry();


    // private member variables
    private:

        LPTSTR  m_szNextCounter;
        DWORD   m_dwCounterListLength;  // in chars including MSZ null

        // Registry Values
        LPTSTR  mr_szCounterList;
};


typedef CSmCounterLogQuery   SLCTRQUERY;
typedef CSmCounterLogQuery*  PSLCTRQUERY;


#endif //_CLASS_SMCTRQRY_