Annotation of mstools/samples/sdktools/pviewer/objdata.c, revision 1.1.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:                                 O B J E C T   D A T A
                     16: 
                     17:     Name:       objdata.c
                     18: 
                     19:     Description:
                     20:         This module contains functions that access objects in performance
                     21:         data.
                     22: 
                     23:     Functions:
                     24:         FirstObject
                     25:         NextObject
                     26:         FindObject
                     27:         FindObjectN
                     28: 
                     29: ******************************************************************************/
                     30: 
                     31: #include <windows.h>
                     32: #include <winperf.h>
                     33: #include "perfdata.h"
                     34: 
                     35: 
                     36: 
                     37: 
                     38: //*********************************************************************
                     39: //
                     40: //  FirstObject
                     41: //
                     42: //      Returns pointer to the first object in pData.
                     43: //      If pData is NULL then NULL is returned.
                     44: //
                     45: PPERF_OBJECT FirstObject (PPERF_DATA pData)
                     46: {
                     47:     if (pData)
                     48:         return ((PPERF_OBJECT) ((PBYTE) pData + pData->HeaderLength));
                     49:     else
                     50:         return NULL;
                     51: }
                     52: 
                     53: 
                     54: 
                     55: 
                     56: //*********************************************************************
                     57: //
                     58: //  NextObject
                     59: //
                     60: //      Returns pointer to the next object following pObject.
                     61: //
                     62: //      If pObject is the last object, bogus data maybe returned.
                     63: //      The caller should do the checking.
                     64: //
                     65: //      If pObject is NULL, then NULL is returned.
                     66: //
                     67: PPERF_OBJECT NextObject (PPERF_OBJECT pObject)
                     68: {
                     69:     if (pObject)
                     70:         return ((PPERF_OBJECT) ((PBYTE) pObject + pObject->TotalByteLength));
                     71:     else
                     72:         return NULL;
                     73: }
                     74: 
                     75: 
                     76: 
                     77: 
                     78: //*********************************************************************
                     79: //
                     80: //  FindObject
                     81: //
                     82: //      Returns pointer to object with TitleIndex.  If not found, NULL
                     83: //      is returned.
                     84: //
                     85: PPERF_OBJECT FindObject (PPERF_DATA pData, DWORD TitleIndex)
                     86: {
                     87: PPERF_OBJECT pObject;
                     88: DWORD        i = 0;
                     89: 
                     90:     if (pObject = FirstObject (pData))
                     91:         while (i < pData->NumObjectTypes)
                     92:             {
                     93:             if (pObject->ObjectNameTitleIndex == TitleIndex)
                     94:                 return pObject;
                     95: 
                     96:             pObject = NextObject (pObject);
                     97:             i++;
                     98:             }
                     99: 
                    100:     return NULL;
                    101: }
                    102: 
                    103: 
                    104: 
                    105: 
                    106: //*********************************************************************
                    107: //
                    108: //  FindObjectN
                    109: //
                    110: //      Find the Nth object in pData.  If not found, NULL is returned.
                    111: //      0 <= N < NumObjectTypes.
                    112: //
                    113: PPERF_OBJECT FindObjectN (PPERF_DATA pData, DWORD N)
                    114: {
                    115: PPERF_OBJECT pObject;
                    116: DWORD        i = 0;
                    117: 
                    118:     if (!pData)
                    119:         return NULL;
                    120:     else if (N >= pData->NumObjectTypes)
                    121:         return NULL;
                    122:     else
                    123:         {
                    124:         pObject = FirstObject (pData);
                    125: 
                    126:         while (i != N)
                    127:             {
                    128:             pObject = NextObject (pObject);
                    129:             i++;
                    130:             }
                    131: 
                    132:         return pObject;
                    133:         }
                    134: }

unix.superglobalmegacorp.com

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