text: /*++
  
  Copyright (c) 2000-2001  Microsoft Corporation
  
  Module Name:
  
      vststntlog.hxx
  
  Abstract:
  
      Wrapper class for the test team's ntlog suite of APIs and VolSnap test harness.
  
  Author:
  
      Stefan R. Steiner   [ssteiner]        06-05-2000
  
  Revision History:
  
  --*/
  
  #ifndef __HXX_VSTSTNTLOG_
  #define __HXX_VSTSTNTLOG_
  
  #include "bsstring.hxx"
  
  #define VS_TST_DEFAULT_NTLOG_FILENAME L"vstestharness.log"
  
  enum EVsTstNtLogSeverityLevel 
  {
      eSevLev_Info    = 1,
      eSevLev_Pass    = 2,
      eSevLev_Warning = 3,
      eSevLev_Severe  = 4
  };
  
  class CVsTstNtLog
  {
  public:
      CVsTstNtLog(
          IN LPCWSTR pwszLogFileName = VS_TST_DEFAULT_NTLOG_FILENAME
          );
  
      virtual ~CVsTstNtLog();
  
      //  Call this when another thread needs access to logging object
      VOID AddParticipant();   
  
      //  Call this when a thread is finished accessing the logging object
      VOID RemoveParticipant();   
  
      //  Call this when a thread wants to start a new variation
      VOID StartVariation(
          IN LPCWSTR pwszVariationName
          );   
  
      //  Call this when a thread is done with a variation
      DWORD EndVariation();
  
      //  Call this to log a message to the nttest log.
      VOID Log(     
          IN EVsTstNtLogSeverityLevel eSevLev,
          IN LPCWSTR pwszFormat,
          IN ... );
      
  private:
      HANDLE m_hNtLog;    //  Handle to the TE ntlog mechanism
      CBsString m_cwsNtLogFileName;   //  Name of the log file
      BOOL m_bInVariation;    //  TRUE if in a variation.  Doesn't expect multiple threads
                              //  in same variation.
      CBsString m_cwsVariationName;   //  If in a variation, the name of the variation
      DWORD m_dwHighestLogLev;  //  Highest log level during run.
  };
  
  #endif // __HXX_VSTSTNTLOG_
  
  