void ParentProcess::init()
{
  HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if (hSnapshot != INVALID_HANDLE_VALUE) {
    PROCESSENTRY32 selfPe;
    selfPe.dwSize = sizeof(PROCESSENTRY32);
    DWORD selfId = GetCurrentProcessId();
    // Find the self process entry to get parent process id.
    if (getProcessEntry(&selfPe, selfId, hSnapshot)) {
      // Find the parent process entry
      DWORD parentId = selfPe.th32ParentProcessID;
      m_isInitialized = getProcessEntry(&m_parentPe, parentId, hSnapshot);
    }
    CloseHandle(hSnapshot);
  }
}
Example #2
0
BOOL WINAPI 
ArchMiscWindows::getParentProcessEntry(PROCESSENTRY32& entry)
{
	// get the current process, so we can get parent PID
	PROCESSENTRY32 selfEntry;
	if (!getSelfProcessEntry(selfEntry)) {
		return FALSE;
	}

	// get entry from parent PID
	return getProcessEntry(entry, selfEntry.th32ParentProcessID);
}
bool ParentProcess::isAlive()
{
  bool result = false;
  if (m_isInitialized) {
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot != INVALID_HANDLE_VALUE) {
      PROCESSENTRY32 currParentPe;
      DWORD parentId = m_parentPe.th32ProcessID;
      result = getProcessEntry(&currParentPe, parentId, hSnapshot);
      CloseHandle(hSnapshot);
    }
  }
  return result;
}
Example #4
0
BOOL WINAPI 
ArchMiscWindows::getSelfProcessEntry(PROCESSENTRY32& entry)
{
	// get entry from current PID
	return getProcessEntry(entry, GetCurrentProcessId());
}