|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
stats.c This module implements the "stats" command of the W3 Server debugger extension DLL.
FILE HISTORY: KeithMo 13-Jun-1993 Created.
*/
#include "w3dbg.h"
#include <time.h>
/*******************************************************************
NAME: stats
SYNOPSIS: Displays the server statistics.
ENTRY: hCurrentProcess - Handle to the current process.
hCurrentThread - Handle to the current thread.
dwCurrentPc - The current program counter (EIP for x86, FIR for MIPS).
lpExtensionApis - Points to a structure containing pointers to the debugger functions that the command may invoke.
lpArgumentString - Points to any arguments passed to the command.
HISTORY: KeithMo 13-Jun-1993 Created.
********************************************************************/ VOID stats( HANDLE hCurrentProcess, HANDLE hCurrentThread, DWORD dwCurrentPc, LPVOID lpExtensionApis, LPSTR lpArgumentString ) { W3_STATISTICS_0 W3Stats; CHAR szLargeInt[64]; LPVOID pstats;
//
// Grab the debugger entrypoints.
//
GrabDebugApis( lpExtensionApis );
//
// Capture the statistics.
//
pstats = (LPVOID)DebugEval( "W3Stats" );
if( pstats == NULL ) { DebugPrint( "cannot locate W3Stats\n" ); return; }
ReadProcessMemory( hCurrentProcess, pstats, (LPVOID)&W3Stats, sizeof(W3Stats), (LPDWORD)NULL );
//
// Dump the statistics.
//
RtlLargeIntegerToChar( &W3Stats.TotalBytesSent, 10, sizeof(szLargeInt), szLargeInt );
DebugPrint( "TotalBytesSent = %s\n", szLargeInt );
RtlLargeIntegerToChar( &W3Stats.TotalBytesReceived, 10, sizeof(szLargeInt), szLargeInt );
DebugPrint( "TotalBytesReceived = %s\n", szLargeInt );
DebugPrint( "TotalFilesSent = %lu\n", W3Stats.TotalFilesSent );
DebugPrint( "TotalFilesReceived = %lu\n", W3Stats.TotalFilesReceived );
DebugPrint( "CurrentAnonymousUsers = %lu\n", W3Stats.CurrentAnonymousUsers );
DebugPrint( "CurrentNonAnonymousUsers = %lu\n", W3Stats.CurrentNonAnonymousUsers );
DebugPrint( "TotalAnonymousUsers = %lu\n", W3Stats.TotalAnonymousUsers );
DebugPrint( "TotalNonAnonymousUsers = %lu\n", W3Stats.TotalNonAnonymousUsers );
DebugPrint( "MaxAnonymousUsers = %lu\n", W3Stats.MaxAnonymousUsers );
DebugPrint( "MaxNonAnonymousUsers = %lu\n", W3Stats.MaxNonAnonymousUsers );
DebugPrint( "CurrentConnections = %lu\n", W3Stats.CurrentConnections );
DebugPrint( "MaxConnections = %lu\n", W3Stats.MaxConnections );
DebugPrint( "ConnectionAttempts = %lu\n", W3Stats.ConnectionAttempts );
DebugPrint( "LogonAttempts = %lu\n", W3Stats.LogonAttempts );
DebugPrint( "TimeOfLastClear = %s\n", asctime( localtime( (time_t *)&W3Stats.TimeOfLastClear ) ) );
} // stats
|