85 lines
1.9 KiB
C
85 lines
1.9 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
logger.h
|
|
|
|
Abstract:
|
|
|
|
|
|
Author:
|
|
|
|
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef __LOGGER_H__
|
|
#define __LOGGER_H__
|
|
|
|
#define MAX_NOMINAL_LOG_MAP (4096 * 4)
|
|
#define MAX_ABSORB_LOG_MAP (4096 * 15)
|
|
#define LOG_PRIO_BOOST 2
|
|
|
|
#define LOG_DATA_SIZE 80 // nominal # of bytes to log
|
|
|
|
#define DOLOGAPC 0
|
|
|
|
#define SignalLogThreshold(pLog) \
|
|
if(pLog->Event) \
|
|
{ \
|
|
KeSetEvent(pLog->Event, LOG_PRIO_BOOST, FALSE); \
|
|
}
|
|
|
|
typedef struct _PfLogInterface
|
|
{
|
|
LIST_ENTRY NextLog;
|
|
DWORD dwLoggedEntries;
|
|
DWORD dwEntriesThreshold;
|
|
DWORD dwFlags; // see below
|
|
PFLOGGER pfLogId;
|
|
DWORD dwMapWindowSize;
|
|
DWORD dwMapWindowSize2;
|
|
DWORD dwMapWindowSizeFloor;
|
|
PBYTE pUserAddress; // Current user VA
|
|
DWORD dwTotalSize;
|
|
DWORD dwPastMapped; // bytes used and no longer mapped
|
|
PBYTE pCurrentMapPointer; // kernel VA of mapping
|
|
DWORD dwMapCount;
|
|
DWORD dwMapOffset; // offset into the mapped segment
|
|
PMDL Mdl; // MDL for the mapping
|
|
PIRP Irp;
|
|
PRKEVENT Event;
|
|
DWORD dwLostEntries;
|
|
LONG UseCount;
|
|
DWORD dwSignalThreshold;
|
|
LONG lApcInProgress;
|
|
NTSTATUS MapStatus;
|
|
KSPIN_LOCK LogLock;
|
|
#if DOLOGAPC
|
|
DWORD ApcInited;
|
|
KAPC Apc;
|
|
#endif
|
|
ERESOURCE Resource;
|
|
} PFLOGINTERFACE, *PPFLOGINTERFACE;
|
|
|
|
//
|
|
// flags
|
|
//
|
|
|
|
#define LOG_BADMEM 0x1 // an error occurred mapping the memory
|
|
#define LOG_OUTMEM 0x2 // buffer exhausted
|
|
#define LOG_CANTMAP 0x4 // nothing more to map
|
|
|
|
|
|
typedef struct _PfPagedLog
|
|
{
|
|
LIST_ENTRY Next;
|
|
PPFLOGINTERFACE pLog;
|
|
} PFPAGEDLOG, *PPFPAGEDLOG;
|
|
|
|
#endif
|