process.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. //*********************************************************************
  2. //*                  Microsoft Windows                               **
  3. //*            Copyright(c) Microsoft Corp., 1998-                   **
  4. //*********************************************************************
  5. //
  6. // created 8-19-1998
  7. //
  8. //
  9. // class definition for the process information handler
  10. // the class is to wrap NT/Win95 specific debugging aid APIs
  11. // BUGBUG: write commentsfor below!
  12. #ifdef UNICODE
  13. #undef Process32First 
  14. #undef Process32Next 
  15. #undef PROCESSENTRY32 
  16. #undef PPROCESSENTRY32
  17. #undef LPPROCESSENTRY32
  18. #endif  // !UNICODE
  19. class CProcessInfo
  20. {
  21. public:
  22.     CProcessInfo(); 
  23.     ~CProcessInfo();     
  24.     HRESULT GetExeNameFromPID(DWORD dwPID, LPTSTR szFile, int cchFile);
  25.     BOOL _fNT;
  26. protected:
  27.     HRESULT MakeRoomForInfoArray(int n);
  28.     HRESULT EnsureProcessInfo();
  29.     // 
  30.     // win95 toolhelp stuff
  31.     //
  32.     HRESULT W95InitToolhelp32();
  33.     HRESULT W95CreateProcessList();
  34.     HRESULT W95FillProcessList();
  35.     typedef BOOL (WINAPI* PROCESSWALK)(HANDLE, LPPROCESSENTRY32);
  36.     typedef HANDLE (WINAPI* CREATESNAPSHOT)(DWORD, DWORD);
  37.     CREATESNAPSHOT _lpfnCreateToolhelp32Snapshot;
  38.     PROCESSWALK _lpfnProcess32First;
  39.     PROCESSWALK _lpfnProcess32Next;
  40.     //
  41.     // NT PSAPI stuff
  42.     //
  43.     HRESULT NTInitPsapi();
  44.     HRESULT NTCreateProcessList();
  45.     HRESULT NTFillProcessList(DWORD dwProcessID, int iIndex);
  46.     
  47.     
  48.     typedef BOOL  (CALLBACK* LPFNENUMPROCESSES)(DWORD *,DWORD,DWORD *);
  49.     typedef BOOL  (CALLBACK* LPFNENUMPROCESSMODULES)(HANDLE,HMODULE *,DWORD,LPDWORD);
  50.     typedef DWORD (CALLBACK* LPFNGETMODULEBASENAMEW)(HANDLE,HMODULE,LPWSTR,DWORD);
  51.     HINSTANCE                 _hPsapiDLL; 
  52.     LPFNENUMPROCESSES      _lpfnEnumProcesses; 
  53.     LPFNENUMPROCESSMODULES _lpfnEnumProcessModules; 
  54.     LPFNGETMODULEBASENAMEW  _lpfnGetModuleBaseName;
  55.     //
  56.     // place to hold processs information
  57.     //
  58.     struct PROCESSINFO {
  59.         DWORD dwPID;
  60.         TCHAR szExeName[MAX_PATH];
  61.     } *_pProcInfoArray;
  62.     int _iProcInfoCount;
  63.     int _nAlloced;
  64. };