windows-nt/Source/XPSP1/NT/inetsrv/iis/inc/reftrace.h
2020-09-26 16:20:57 +08:00

111 lines
1.8 KiB
C

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
reftrace.h
Abstract:
This module contains public declarations and definitions for tracing
and debugging reference count problems. This module uses the generic
TRACE_LOG facility in tracelog.h.
Ref count trace logs can be dumped via the !inetdbg.ref command
in either NTSD or CDB.
Author:
Keith Moore (keithmo) 01-May-1997
Revision History:
--*/
#ifndef _REFTRACE_H_
#define _REFTRACE_H_
#if defined(__cplusplus)
extern "C" {
#endif // __cplusplus
#include <tracelog.h>
//
// This is the number of stack backtrace values captured in each
// trace log entry. This value is chosen to make the log entry
// exactly twelve dwords long, making it a bit easier to interpret
// from within the debugger without the debugger extension.
//
#define REF_TRACE_LOG_STACK_DEPTH 9
// No-op value for the Context1,2,3 parameters of WriteRefTraceLogEx
#define REF_TRACE_EMPTY_CONTEXT ((PVOID) -1)
//
// This defines the entry written to the trace log.
//
typedef struct _REF_TRACE_LOG_ENTRY {
LONG NewRefCount;
PVOID Context;
PVOID Context1;
PVOID Context2;
PVOID Context3;
DWORD Thread;
PVOID Stack[REF_TRACE_LOG_STACK_DEPTH];
} REF_TRACE_LOG_ENTRY, *PREF_TRACE_LOG_ENTRY;
//
// Manipulators.
//
PTRACE_LOG
CreateRefTraceLog(
IN LONG LogSize,
IN LONG ExtraBytesInHeader
);
VOID
DestroyRefTraceLog(
IN PTRACE_LOG Log
);
LONG
__cdecl
WriteRefTraceLog(
IN PTRACE_LOG Log,
IN LONG NewRefCount,
IN PVOID Context
);
LONG
__cdecl
WriteRefTraceLogEx(
IN PTRACE_LOG Log,
IN LONG NewRefCount,
IN PVOID Context,
IN PVOID Context1,
IN PVOID Context2,
IN PVOID Context3
);
#if defined(__cplusplus)
} // extern "C"
#endif // __cplusplus
#endif // _REFTRACE_H_