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) 1991 Microsoft Corporation
Module Name:
vdmtrace.c
Abstract:
This module contains the support maintaining the VDM trace log.
Author:
Neil Sandlin (neilsa) 15-Sep-1996
Revision History:
--*/
#include "vdmp.h"
VOID VdmTraceEvent( USHORT Type, USHORT wData, USHORT lData, PKTRAP_FRAME TrapFrame );
#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, VdmTraceEvent)
#endif
VOID VdmTraceEvent( USHORT Type, USHORT wData, USHORT lData, PKTRAP_FRAME TrapFrame )
/*++
Routine Description:
Arguments:
Return Value:
None
--*/ { #if 0
// This code represents a security problem. Since it is only used
// on special occasions, it won't be built into the standard build.
// Individuals wishing to use it can build themselves a kernel with
// it in.
PVDM_TIB VdmTib; NTSTATUS Status = STATUS_SUCCESS; KIRQL OldIrql; PVDM_TRACEENTRY pEntry; PVDM_TRACEINFO pInfo; LARGE_INTEGER CurTime, DiffTime;
PAGED_CODE(); #if 0
//
// Raise Irql to APC level...
//
KeRaiseIrql(APC_LEVEL, &OldIrql);
//
// VdmTib is in user mode memory
//
try { #endif
if ((*FIXED_NTVDMSTATE_LINEAR) & VDM_TRACE_HISTORY)) {
//
// Get a pointer to the VdmTib
//
VdmTib = NtCurrentTeb()->Vdm;
if (VdmTib->TraceInfo.pTraceTable) { pEntry = &VdmTib->TraceInfo.pTraceTable[VdmTib->TraceInfo.CurrentEntry]; pEntry->Type = Type; pEntry->wData = wData; pEntry->lData = lData;
switch (VdmTib->TraceInfo.Flags & VDMTI_TIMER_MODE) { case VDMTI_TIMER_TICK: CurTime.LowPart = NtGetTickCount(); pEntry->Time = CurTime.LowPart - VdmTib->TraceInfo.TimeStamp.LowPart; VdmTib->TraceInfo.TimeStamp.LowPart = CurTime.LowPart; break;
case VDMTI_TIMER_PERFCTR: pEntry->Time = 0; break;
case VDMTI_TIMER_STAT: pEntry->Time = 0; break;
} pEntry->eax = TrapFrame->Eax; pEntry->ebx = TrapFrame->Ebx; pEntry->ecx = TrapFrame->Ecx; pEntry->edx = TrapFrame->Edx; pEntry->esi = TrapFrame->Esi; pEntry->edi = TrapFrame->Edi; pEntry->ebp = TrapFrame->Ebp; pEntry->esp = TrapFrame->HardwareEsp; pEntry->eip = TrapFrame->Eip; pEntry->eflags = TrapFrame->EFlags; pEntry->cs = (USHORT) TrapFrame->SegCs; pEntry->ds = (USHORT) TrapFrame->SegDs; pEntry->es = (USHORT) TrapFrame->SegEs; pEntry->fs = (USHORT) TrapFrame->SegFs; pEntry->gs = (USHORT) TrapFrame->SegGs; pEntry->ss = (USHORT) TrapFrame->HardwareSegSs; if (++VdmTib->TraceInfo.CurrentEntry >= (VdmTib->TraceInfo.NumPages*4096/sizeof(VDM_TRACEENTRY))) { VdmTib->TraceInfo.CurrentEntry = 0; } } }
#if 0
} except(EXCEPTION_EXECUTE_HANDLER) { Status = GetExceptionCode(); }
KeLowerIrql(OldIrql); #endif
#else
UNREFERENCED_PARAMETER (Type); UNREFERENCED_PARAMETER (wData); UNREFERENCED_PARAMETER (lData); UNREFERENCED_PARAMETER (TrapFrame); #endif
}
|