Annotation of mstools/samples/sdktools/pviewer/cntrdata.c, revision 1.1

1.1     ! root        1: 
        !             2: /******************************************************************************\
        !             3: *       This is a part of the Microsoft Source Code Samples. 
        !             4: *       Copyright (C) 1993 Microsoft Corporation.
        !             5: *       All rights reserved. 
        !             6: *       This source code is only intended as a supplement to 
        !             7: *       Microsoft Development Tools and/or WinHelp documentation.
        !             8: *       See these sources for detailed information regarding the 
        !             9: *       Microsoft samples programs.
        !            10: \******************************************************************************/
        !            11: 
        !            12: 
        !            13: /******************************************************************************
        !            14: 
        !            15:                             C O U N T E R   D A T A
        !            16: 
        !            17:     Name:       cntrdata.c
        !            18: 
        !            19:     Description:
        !            20:         This module contains functions that access counters of an instance
        !            21:         of object in performance data.
        !            22: 
        !            23:     Functions:
        !            24:         FirstCounter
        !            25:         NextCounter
        !            26:         FindCounter
        !            27:         CounterData
        !            28: 
        !            29: ******************************************************************************/
        !            30: 
        !            31: #include <windows.h>
        !            32: #include <winperf.h>
        !            33: #include "perfdata.h"
        !            34: 
        !            35: 
        !            36: 
        !            37: 
        !            38: //*********************************************************************
        !            39: //
        !            40: //  FirstCounter
        !            41: //
        !            42: //      Find the first counter in pObject.
        !            43: //
        !            44: //      Returns a pointer to the first counter.  If pObject is NULL
        !            45: //      then NULL is returned.
        !            46: //
        !            47: PPERF_COUNTER FirstCounter (PPERF_OBJECT pObject)
        !            48: {
        !            49:     if (pObject)
        !            50:         return (PPERF_COUNTER)((PCHAR) pObject + pObject->HeaderLength);
        !            51:     else
        !            52:         return NULL;
        !            53: }
        !            54: 
        !            55: 
        !            56: 
        !            57: 
        !            58: //*********************************************************************
        !            59: //
        !            60: //  NextCounter
        !            61: //
        !            62: //      Find the next counter of pCounter.
        !            63: //
        !            64: //      If pCounter is the last counter of an object type, bogus data
        !            65: //      maybe returned.  The caller should do the checking.
        !            66: //
        !            67: //      Returns a pointer to a counter.  If pCounter is NULL then
        !            68: //      NULL is returned.
        !            69: //
        !            70: PPERF_COUNTER NextCounter (PPERF_COUNTER pCounter)
        !            71: {
        !            72:     if (pCounter)
        !            73:         return (PPERF_COUNTER)((PCHAR) pCounter + pCounter->ByteLength);
        !            74:     else
        !            75:         return NULL;
        !            76: }
        !            77: 
        !            78: 
        !            79: 
        !            80: 
        !            81: //*********************************************************************
        !            82: //
        !            83: //  FindCounter
        !            84: //
        !            85: //      Find a counter specified by TitleIndex.
        !            86: //
        !            87: //      Returns a pointer to the counter.  If counter is not found
        !            88: //      then NULL is returned.
        !            89: //
        !            90: PPERF_COUNTER FindCounter (PPERF_OBJECT pObject, DWORD TitleIndex)
        !            91: {
        !            92: PPERF_COUNTER pCounter;
        !            93: DWORD         i = 0;
        !            94: 
        !            95:     if (pCounter = FirstCounter (pObject))
        !            96:         while (i < pObject->NumCounters)
        !            97:             {
        !            98:             if (pCounter->CounterNameTitleIndex == TitleIndex)
        !            99:                 return pCounter;
        !           100: 
        !           101:             pCounter = NextCounter (pCounter);
        !           102:             i++;
        !           103:             }
        !           104: 
        !           105:     return NULL;
        !           106: 
        !           107: }
        !           108: 
        !           109: 
        !           110: 
        !           111: 
        !           112: //*********************************************************************
        !           113: //
        !           114: //  CounterData
        !           115: //
        !           116: //      Returns counter data for an object instance.  If pInst or pCount
        !           117: //      is NULL then NULL is returne.
        !           118: //
        !           119: PVOID CounterData (PPERF_INSTANCE pInst, PPERF_COUNTER pCount)
        !           120: {
        !           121: PPERF_COUNTER_BLOCK pCounterBlock;
        !           122: 
        !           123:     if (pCount && pInst)
        !           124:         {
        !           125:         pCounterBlock = (PPERF_COUNTER_BLOCK)((PCHAR)pInst + pInst->ByteLength);
        !           126:         return (PVOID)((PCHAR)pCounterBlock + pCount->CounterOffset);
        !           127:         }
        !           128:     else
        !           129:         return NULL;
        !           130: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.