/**********************************************************************/ /** 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 /******************************************************************* 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