Leaked source code of windows server 2003
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.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name : logging.h
Abstract: Logging classes
Author: Anil Ruia (AnilR) 1-Jul-2000
Environment: Win32 - User Mode --*/
#ifndef _LOGGING_H_
#define _LOGGING_H_
#ifndef LOGGING_DLLEXP
# ifdef DLL_IMPLEMENTATION
# define LOGGING_DLLEXP __declspec(dllexport)
# ifdef IMPLEMENTATION_EXPORT
# define LOGGING_EXPIMP
# else
# undef LOGGING_EXPIMP
# endif
# elif defined LIB_IMPLEMENTATION
# define LOGGING_DLLEXP
# define LOGGING_EXPIMP extern
# else
# define LOGGING_DLLEXP __declspec(dllimport)
# define LOGGING_EXPIMP extern
# endif // !DLL_IMPLEMENTATION
#endif // !LOGGING_DLLEXP
enum LAST_IO_PENDING { LOG_READ_IO, LOG_WRITE_IO,
LOG_NO_IO };
class LOG_CONTEXT { public: LOG_CONTEXT() : m_msStartTickCount (0), m_msProcessingTime (0), m_dwBytesRecvd (0), m_dwBytesSent (0), m_ioPending (LOG_NO_IO), m_strLogParam (m_achLogParam, sizeof m_achLogParam) { ZeroMemory(&m_UlLogData, sizeof m_UlLogData); }
HTTP_LOG_FIELDS_DATA *QueryUlLogData() { return &m_UlLogData; }
//
// The querystring to be logged, may differ from the original querystring
// because of ISAPI doing HSE_APPEND_LOG_PARAMETER
//
STRA m_strLogParam; CHAR m_achLogParam[64];
//
// The data UL is interested in
//
HTTP_LOG_FIELDS_DATA m_UlLogData;
//
// Couple other things for custom logging
//
STRA m_strVersion;
MULTISZA m_mszHTTPHeaders;
//
// Keep track whether the last I/O was a read or a write so that we
// know on completion whether to increment bytes read or bytes written
//
LAST_IO_PENDING m_ioPending;
DWORD m_msStartTickCount; DWORD m_msProcessingTime;
DWORD m_dwBytesRecvd; DWORD m_dwBytesSent; };
class LOGGING_DLLEXP LOGGING { public:
LOGGING();
HRESULT ActivateLogging(IN LPCSTR pszInstanceName, IN LPCWSTR pszMetabasePath, IN IMSAdminBase *pMDObject, IN BOOL fDoCentralBinaryLogging);
void LogInformation(IN LOG_CONTEXT *pLogData);
BOOL IsRequiredExtraLoggingFields() const { return !m_mszExtraLoggingFields.IsEmpty(); }
const MULTISZA *QueryExtraLoggingFields() const { return &m_mszExtraLoggingFields; }
void LogCustomInformation(IN DWORD cCount, IN CUSTOM_LOG_DATA *pCustomLogData, IN LPSTR szHeaderSuffix);
static HRESULT Initialize(); static VOID Terminate();
BOOL QueryDoUlLogging() const { return m_fUlLogType; }
BOOL QueryDoCustomLogging() const { return (m_pComponent != NULL); }
VOID AddRef();
VOID Release();
private:
~LOGGING();
DWORD m_Signature; LONG m_cRefs;
BOOL m_fUlLogType; ILogPlugin *m_pComponent;
MULTISZA m_mszExtraLoggingFields; };
#endif // _LOGGING_H_
|