#include <ProcessInfo.h>
Inheritance diagram for CitadelSoftwareInc::ProcessInfoIoCounter:

Public Member Functions | |
| ProcessInfoIoCounter () | |
| virtual bool | GetData (vecuc &vData, DWORD dwPid, ProcessData *pProcessData) |
![]()
|
|
Definition at line 25 of file ProcessInfo.h.
00026 : 00027 ProcessInfoBase() 00028 {} |
![]()
|
||||||||||||||||
|
Implements CitadelSoftwareInc::ProcessInfoBase. Definition at line 26 of file ProcessInfo.cpp. References CitadelSoftwareInc::ProcessData::GetIoCounters(), CitadelSoftwareInc::ProcessData::ResetIoCounters(), and CitadelSoftwareInc::vecuc. Referenced by CitadelSoftwareInc::AddProcessData().
00029 {
00030 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwPid);
00031
00032 if (hProcess == NULL)
00033 return false;
00034
00035 IO_COUNTERS iocounters;
00036
00037 BOOL bStatus = GetProcessIoCounters(hProcess, &iocounters);
00038
00039 if (bStatus != FALSE)
00040 {
00041 unsigned char uc=0;
00042 int size = sizeof(IO_COUNTERS);
00043 const unsigned char* pData = (unsigned char*)(&iocounters);
00044
00045 IO_COUNTERS* pOld = pProcessData ? pProcessData->GetIoCounters() : NULL;
00046 const unsigned char* pOldData = (const unsigned char*)(pOld);
00047
00048 // add one bit of entropy for each byte of the io_counters that is different
00049 for (int i=0; i<size; ++i)
00050 {
00051 uc = pData[i];
00052 if (uc)
00053 {
00054 vData.push_back(uc);
00055 }
00056 }
00057
00058 if (pProcessData)
00059 pProcessData->ResetIoCounters(iocounters);
00060 }
00061
00062 CloseHandle(hProcess);
00063
00064 return true;
00065 }
|
![]()
ProcessInfo.h| ProcessInfo.cpp | |
![]()
![]()
1.3.5