Fortuna PRNG C++ Source Code

Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

CitadelSoftwareInc::ProcessInfoIoCounter Class Reference

#include <ProcessInfo.h>

Inheritance diagram for CitadelSoftwareInc::ProcessInfoIoCounter:

CitadelSoftwareInc::ProcessInfoBase List of all members.

Public Member Functions

 ProcessInfoIoCounter ()
virtual bool GetData (vecuc &vData, DWORD dwPid, ProcessData *pProcessData)

Constructor & Destructor Documentation

CitadelSoftwareInc::ProcessInfoIoCounter::ProcessInfoIoCounter  )  [inline]
 

Definition at line 25 of file ProcessInfo.h.

00026                         :
00027                 ProcessInfoBase()
00028                 {}

Member Function Documentation

bool CitadelSoftwareInc::ProcessInfoIoCounter::GetData vecuc vData,
DWORD  dwPid,
ProcessData pProcessData
[virtual]
 

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 }

The documentation for this class was generated from the following files:
bulletProcessInfo.h
bulletProcessInfo.cpp

Generated on Sat Feb 28 17:24:44 2004 for Fortuna by doxygen 1.3.5