/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1993 **/ /**********************************************************************/ /* perfdll.cxx This trivial DLL grabs statistics from the w3 server FILE HISTORY: t-bilala 04-01-97 Leveraged from perfw3.cxx in \perfmon */ #include #include #include #include #include #include "iisinfo.h" #include "perfdll.h" // // Public prototypes. // PerfFunction GetPerformanceData; DWORD GetStatisticsValue( IN LPSTR pszValue, IN W3_STATISTICS_1 * pW3Stats ); /******************************************************************* NAME: GetPerformanceData SYNOPSIS: Get performance counter value from web server. ENTRY: pszValue - The name of the value to retrieve pszServerName - Server name RETURNS: DWORD - value of performance counter ********************************************************************/ DWORD GetPerformanceData( IN LPSTR pszValue, IN LPSTR pszServer ) { W3_STATISTICS_1 * pW3Stats = NULL; NET_API_STATUS neterr; DWORD dwValue; WCHAR achBuffer[ MAX_PATH ]; if ( pszValue == NULL ) { return 0; } if ( pszServer != NULL ) { if ( !MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, pszServer, -1, achBuffer, MAX_PATH ) ) { return FALSE; } } neterr = W3QueryStatistics2( pszServer ? achBuffer : NULL, 0, 1, // instance id 0, (LPBYTE *)&pW3Stats ); if( neterr != NERR_Success ) { CHAR achBuffer[ 256 ]; wsprintf( achBuffer, "Error was %d\n", neterr ); OutputDebugString( achBuffer ); dwValue = 0; } else { dwValue = GetStatisticsValue( pszValue, pW3Stats ); } if ( pW3Stats != NULL ) { MIDL_user_free( pW3Stats ); } return dwValue; } DWORD GetStatisticsValue( IN LPSTR pszValue, IN W3_STATISTICS_1 * pW3Stats ) { if ( !_stricmp( pszValue, "TotalUsers" ) ) { return pW3Stats->TotalAnonymousUsers + pW3Stats->TotalNonAnonymousUsers; } else if ( !_stricmp( pszValue, "TotalFilesSent" ) ) { return pW3Stats->TotalFilesSent; } else if ( !_stricmp( pszValue, "TotalFilesReceived" ) ) { return pW3Stats->TotalFilesReceived; } else if ( !_stricmp( pszValue, "CurrentAnonymousUsers" ) ) { return pW3Stats->CurrentAnonymousUsers; } else if ( !_stricmp( pszValue, "CurrentNonAnonymousUsers" ) ) { return pW3Stats->CurrentNonAnonymousUsers; } else if ( !_stricmp( pszValue, "TotalAnonymousUsers" ) ) { return pW3Stats->TotalAnonymousUsers; } else if ( !_stricmp( pszValue, "MaxAnonymousUsers" ) ) { return pW3Stats->MaxAnonymousUsers; } else if ( !_stricmp( pszValue, "MaxNonAnonymousUsers" ) ) { return pW3Stats->MaxNonAnonymousUsers; } else if ( !_stricmp( pszValue, "CurrentConnections" ) ) { return pW3Stats->CurrentConnections; } else if ( !_stricmp( pszValue, "MaxConnections" ) ) { return pW3Stats->MaxConnections; } else if ( !_stricmp( pszValue, "ConnectionAttempts" ) ) { return pW3Stats->ConnectionAttempts; } else if ( !_stricmp( pszValue, "LogonAttempts" ) ) { return pW3Stats->LogonAttempts; } else if ( !_stricmp( pszValue, "TotalGets" ) ) { return pW3Stats->TotalGets; } else if ( !_stricmp( pszValue, "TotalPosts" ) ) { return pW3Stats->TotalPosts; } else if ( !_stricmp( pszValue, "TotalHeads" ) ) { return pW3Stats->TotalHeads; } else if ( !_stricmp( pszValue, "TotalPuts" ) ) { return pW3Stats->TotalPuts; } else if ( !_stricmp( pszValue, "TotalDeletes" ) ) { return pW3Stats->TotalDeletes; } else if ( !_stricmp( pszValue, "TotalTraces" ) ) { return pW3Stats->TotalTraces; } else if ( !_stricmp( pszValue, "TotalOthers" ) ) { return pW3Stats->TotalOthers; } else if ( !_stricmp( pszValue, "TotalCGIRequests" ) ) { return pW3Stats->TotalCGIRequests; } else if ( !_stricmp( pszValue, "TotalBGIRequests" ) ) { return pW3Stats->TotalBGIRequests; } else if ( !_stricmp( pszValue, "TotalNotFoundErrors" ) ) { return pW3Stats->TotalNotFoundErrors; } else if ( !_stricmp( pszValue, "CurrentCGIRequests" ) ) { return pW3Stats->CurrentCGIRequests; } else if ( !_stricmp( pszValue, "CurrentBGIRequests" ) ) { return pW3Stats->CurrentBGIRequests; } else if ( !_stricmp( pszValue, "MaxCGIRequests" ) ) { return pW3Stats->MaxCGIRequests; } else if ( !_stricmp( pszValue, "MaxBGIRequests" ) ) { return pW3Stats->MaxBGIRequests; } else if ( !_stricmp( pszValue, "CurrentBlockedRequests" ) ) { return pW3Stats->CurrentBlockedRequests; } else if ( !_stricmp( pszValue, "TotalBlockedRequests" ) ) { return pW3Stats->TotalBlockedRequests; } else if ( !_stricmp( pszValue, "TotalAllowedRequests" ) ) { return pW3Stats->TotalAllowedRequests; } else if ( !_stricmp( pszValue, "TotalRejectedRequests" ) ) { return pW3Stats->TotalRejectedRequests; } else if ( !_stricmp( pszValue, "MeasuredBw" ) ) { return pW3Stats->MeasuredBw; } return 0; }