diff options
Diffstat (limited to 'emulator/opengl/shared/OpenglOsUtils/osProcessWin.cpp')
-rw-r--r-- | emulator/opengl/shared/OpenglOsUtils/osProcessWin.cpp | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/emulator/opengl/shared/OpenglOsUtils/osProcessWin.cpp b/emulator/opengl/shared/OpenglOsUtils/osProcessWin.cpp deleted file mode 100644 index 6ff0fdf..0000000 --- a/emulator/opengl/shared/OpenglOsUtils/osProcessWin.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "osProcess.h" -#include <windows.h> -#include <string> -#include <stdlib.h> -#include <psapi.h> - -namespace osUtils { - -childProcess * -childProcess::create(const char *p_cmdLine, const char *p_startdir) -{ - childProcess *child = new childProcess(); - if (!child) { - return NULL; - } - - STARTUPINFOA si; - ZeroMemory(&si, sizeof(si)); - - ZeroMemory(&child->m_proc, sizeof(child->m_proc)); - BOOL ret = CreateProcessA( - NULL , - (LPSTR)p_cmdLine, - NULL, - NULL, - FALSE, - CREATE_DEFAULT_ERROR_MODE, - NULL, - (p_startdir != NULL ? p_startdir : ".\\"), - &si, - &child->m_proc); - if (ret == 0) { - delete child; - return NULL; - } - - // close the thread handle we do not need it, - // keep the process handle for wait/trywait operations, will - // be closed on destruction - CloseHandle(child->m_proc.hThread); - - return child; -} - -childProcess::~childProcess() -{ - if (m_proc.hProcess) { - CloseHandle(m_proc.hProcess); - } -} - -bool -childProcess::wait(int *exitStatus) -{ -DWORD _exitStatus; - - if (WaitForSingleObject(m_proc.hProcess, INFINITE) == WAIT_FAILED) { - return false; - } - - if (!GetExitCodeProcess(m_proc.hProcess, &_exitStatus)) - { - return false; - } - - if (exitStatus) { - *exitStatus = _exitStatus; - } - - return true; -} - -int -childProcess::tryWait(bool& isAlive) -{ - DWORD status = WaitForSingleObject(m_proc.hProcess, 0); - - if(status == WAIT_OBJECT_0) - { - // process has exited - isAlive = false; - GetExitCodeProcess(m_proc.hProcess, &status); - } - else if (status == WAIT_TIMEOUT) - { - isAlive = true; - status = 0; - } - - return status; - -} - -int ProcessGetPID() -{ - return GetCurrentProcessId(); -} - -int ProcessGetTID() -{ - return GetCurrentThreadId(); -} - -bool ProcessGetName(char *p_outName, int p_outNameLen) -{ - return 0 != GetModuleFileNameEx( GetCurrentProcess(), NULL, p_outName, p_outNameLen); -} - -int KillProcess(int pid, bool wait) -{ - DWORD exitStatus = 1; - HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); - - if (NULL == hProc) { - return 0; - } - - // - // Terminate the process - // - TerminateProcess(hProc, 0x55); - - if (wait) { - // - // Wait for it to be terminated - // - if(WaitForSingleObject(hProc, INFINITE) == WAIT_FAILED) { - CloseHandle(hProc); - return 0; - } - - if (!GetExitCodeProcess(hProc, &exitStatus)) { - CloseHandle(hProc); - return 0; - } - } - - CloseHandle(hProc); - - return exitStatus; -} - -bool isProcessRunning(int pid) -{ - bool isRunning = false; - - HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid); - if (NULL != process) { - DWORD ret = WaitForSingleObject(process, 0); - CloseHandle(process); - isRunning = (ret == WAIT_TIMEOUT); - } - return isRunning; -} - -} // of namespace osUtils |