home *** CD-ROM | disk | FTP | other *** search
-
- /******************************************************************************\
- * This is a part of the Microsoft Source Code Samples.
- * Copyright (C) 1993-1997 Microsoft Corporation.
- * All rights reserved.
- * This source code is only intended as a supplement to
- * Microsoft Development Tools and/or WinHelp documentation.
- * See these sources for detailed information regarding the
- * Microsoft samples programs.
- \******************************************************************************/
-
-
- /******************************************************************************
-
- C O U N T E R D A T A
-
- Name: cntrdata.c
-
- Description:
- This module contains functions that access counters of an instance
- of object in performance data.
-
- Functions:
- FirstCounter
- NextCounter
- FindCounter
- CounterData
-
- ******************************************************************************/
-
- #include <windows.h>
- #include <winperf.h>
- #include "perfdata.h"
-
-
-
-
- //*********************************************************************
- //
- // FirstCounter
- //
- // Find the first counter in pObject.
- //
- // Returns a pointer to the first counter. If pObject is NULL
- // then NULL is returned.
- //
- PPERF_COUNTER FirstCounter (PPERF_OBJECT pObject)
- {
- if (pObject)
- return (PPERF_COUNTER)((PCHAR) pObject + pObject->HeaderLength);
- else
- return NULL;
- }
-
-
-
-
- //*********************************************************************
- //
- // NextCounter
- //
- // Find the next counter of pCounter.
- //
- // If pCounter is the last counter of an object type, bogus data
- // maybe returned. The caller should do the checking.
- //
- // Returns a pointer to a counter. If pCounter is NULL then
- // NULL is returned.
- //
- PPERF_COUNTER NextCounter (PPERF_COUNTER pCounter)
- {
- if (pCounter)
- return (PPERF_COUNTER)((PCHAR) pCounter + pCounter->ByteLength);
- else
- return NULL;
- }
-
-
-
-
- //*********************************************************************
- //
- // FindCounter
- //
- // Find a counter specified by TitleIndex.
- //
- // Returns a pointer to the counter. If counter is not found
- // then NULL is returned.
- //
- PPERF_COUNTER FindCounter (PPERF_OBJECT pObject, DWORD TitleIndex)
- {
- PPERF_COUNTER pCounter;
- DWORD i = 0;
-
- if (pCounter = FirstCounter (pObject))
- while (i < pObject->NumCounters)
- {
- if (pCounter->CounterNameTitleIndex == TitleIndex)
- return pCounter;
-
- pCounter = NextCounter (pCounter);
- i++;
- }
-
- return NULL;
-
- }
-
-
-
-
- //*********************************************************************
- //
- // CounterData
- //
- // Returns counter data for an object instance. If pInst or pCount
- // is NULL then NULL is returne.
- //
- PVOID CounterData (PPERF_INSTANCE pInst, PPERF_COUNTER pCount)
- {
- PPERF_COUNTER_BLOCK pCounterBlock;
-
- if (pCount && pInst)
- {
- pCounterBlock = (PPERF_COUNTER_BLOCK)((PCHAR)pInst + pInst->ByteLength);
- return (PVOID)((PCHAR)pCounterBlock + pCount->CounterOffset);
- }
- else
- return NULL;
- }
-