objdata.cpp
上传用户:jinandeyu
上传日期:2007-01-05
资源大小:620k
文件大小:3k
源码类别:

远程控制编程

开发平台:

WINDOWS

  1. /*  Back Orifice 2000 - Remote Administration Suite
  2.     Copyright (C) 1999, Cult Of The Dead Cow
  3.     This program is free software; you can redistribute it and/or modify
  4.     it under the terms of the GNU General Public License as published by
  5.     the Free Software Foundation; either version 2 of the License, or
  6.     (at your option) any later version.
  7.     This program is distributed in the hope that it will be useful,
  8.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.     GNU General Public License for more details.
  11.     You should have received a copy of the GNU General Public License
  12.     along with this program; if not, write to the Free Software
  13.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14. The author of this program may be contacted at dildog@l0pht.com. */
  15. #include <windows.h> 
  16. #include <winperf.h> 
  17. #include <perfdata.h>
  18.  
  19. // FirstObject() - Returns pointer to the first object in pData. 
  20. //                 If pData is NULL then NULL is returned. 
  21. PPERF_OBJECT FirstObject (PPERF_DATA pData) 
  22.     if (pData) 
  23.         return ((PPERF_OBJECT) ((PBYTE) pData + pData->HeaderLength)); 
  24.     else 
  25.         return NULL; 
  26.  
  27.  
  28.  
  29. // NextObject() - Returns pointer to the next object following pObject. 
  30. //               If pObject is the last object, bogus data maybe returned. 
  31. //                The caller should do the checking. 
  32. //                If pObject is NULL, then NULL is returned. 
  33. PPERF_OBJECT NextObject (PPERF_OBJECT pObject) 
  34.     if (pObject) 
  35.         return ((PPERF_OBJECT) ((PBYTE) pObject + pObject->TotalByteLength)); 
  36.     else 
  37.         return NULL; 
  38.  
  39.  
  40.  
  41.  
  42. // FindObject() - Returns pointer to object with TitleIndex.
  43. //                If not found, NULL is returned. 
  44. PPERF_OBJECT FindObject (PPERF_DATA pData, DWORD TitleIndex) 
  45. {
  46. PPERF_OBJECT pObject; 
  47. DWORD i = 0; 
  48.     if (pObject = FirstObject (pData)) {
  49.         while (i < pData->NumObjectTypes) { 
  50.             if (pObject->ObjectNameTitleIndex == TitleIndex) 
  51.                 return pObject; 
  52.             pObject = NextObject (pObject); 
  53.             i++; 
  54. }
  55. return NULL; 
  56.  
  57. // FindObjectN() - Find the Nth object in pData.  
  58. //                 If not found, NULL is returned. 0 <= N < NumObjectTypes. 
  59. PPERF_OBJECT FindObjectN (PPERF_DATA pData, DWORD N) 
  60. PPERF_OBJECT pObject; 
  61. DWORD        i = 0; 
  62.     if (!pData) 
  63.         return NULL; 
  64.     else if (N >= pData->NumObjectTypes) 
  65.         return NULL; 
  66.     else 
  67.         pObject = FirstObject (pData); 
  68.         while (i != N) 
  69.             pObject = NextObject (pObject); 
  70.             i++; 
  71.         return pObject; 
  72. }