Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

139 lines
3.4 KiB

/*++
Copyright (c) 2000-2001 Microsoft Corporation
Module Name:
filtqtrace.h
Abstract:
This module contains public declarations and definitions for tracing
and debugging filter queues.
Author:
Michael Courage (mcourage) 11-Nov-2000
Revision History:
--*/
#ifndef _FILTQTRACE_H_
#define _FILTQTRACE_H_
#if defined(__cplusplus)
extern "C" {
#endif // __cplusplus
//
// This defines the entry written to the trace log.
//
typedef struct _FILTQ_TRACE_LOG_ENTRY
{
USHORT Action;
USHORT Processor;
PEPROCESS pProcess;
PETHREAD pThread;
PUX_FILTER_CONNECTION pConnection;
PIRP pIrp;
ULONG ReadIrps;
ULONG Writers;
PVOID pFileName;
USHORT LineNumber;
} FILTQ_TRACE_LOG_ENTRY, *PFILTQ_TRACE_LOG_ENTRY;
//
// Action codes.
//
// N.B. These codes must be contiguous, starting at zero. If you update
// this list, you must also update the corresponding array in
// ul\ulkd\filt.c.
//
#define FILTQ_ACTION_QUEUE_IRP 0
#define FILTQ_ACTION_DEQUEUE_IRP 1
#define FILTQ_ACTION_START_WRITE 2
#define FILTQ_ACTION_FINISH_WRITE 3
#define FILTQ_ACTION_BLOCK_WRITE 4
#define FILTQ_ACTION_WAKE_WRITE 5
#define FILTQ_ACTION_BLOCK_PARTIAL_WRITE 6
#define FILTQ_ACTION_WAKE_PARTIAL_WRITE 7
#define FILTQ_ACTION_COUNT 8
#define FILTQ_TRACE_LOG_SIGNATURE ((LONG)'gLqF')
//
// Manipulators.
//
PTRACE_LOG
CreateFiltqTraceLog(
IN LONG LogSize,
IN LONG ExtraBytesInHeader
);
VOID
DestroyFiltqTraceLog(
IN PTRACE_LOG pLog
);
VOID
WriteFiltqTraceLog(
IN PTRACE_LOG pLog,
IN USHORT Action,
IN PUX_FILTER_CONNECTION pConnection,
IN PIRP pIrp,
IN PVOID pFileName,
IN USHORT LineNumber
);
#if ENABLE_FILTQ_TRACE
#define CREATE_FILTQ_TRACE_LOG( ptr, size, extra ) \
(ptr) = CreateFiltqTraceLog( (size), (extra) )
#define DESTROY_FILTQ_TRACE_LOG( ptr ) \
do \
{ \
DestroyFiltqTraceLog( ptr ); \
(ptr) = NULL; \
} while (FALSE)
#define WRITE_FILTQ_TRACE_LOG( act, pcon, pirp ) \
WriteFiltqTraceLog( \
g_pFilterQueueTraceLog, \
(act), \
(pcon), \
(pirp), \
__FILE__, \
__LINE__ \
)
#else // !ENABLE_FILTQ_TRACE
#define CREATE_FILTQ_TRACE_LOG( ptr, size, extra )
#define DESTROY_FILTQ_TRACE_LOG( ptr )
#define WRITE_FILTQ_TRACE_LOG( act, pcon, pirp )
#endif // ENABLE_FILTQ_TRACE
#if defined(__cplusplus)
} // extern "C"
#endif // __cplusplus
#endif // _FILTQTRACE_H_