38 lines
		
	
	
		
			971 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			971 B
		
	
	
	
		
			C++
		
	
	
	
| //////////////////////////////////////////////////////
 | |
| //
 | |
| //  Process Test Helpers (process_helpers.h of unittests.exe)
 | |
| //
 | |
| //  Microsoft Research Detours Package
 | |
| //
 | |
| //  Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //
 | |
| #pragma once
 | |
| #include <string>
 | |
| #include <utility>
 | |
| 
 | |
| struct TerminateOnScopeExit
 | |
| {
 | |
|     PROCESS_INFORMATION information;
 | |
| 
 | |
|     TerminateOnScopeExit(const TerminateOnScopeExit&) = delete;
 | |
|     TerminateOnScopeExit& operator=(const TerminateOnScopeExit&) = delete;
 | |
| 
 | |
|     ~TerminateOnScopeExit()
 | |
|     {
 | |
|         if (information.hThread)
 | |
|         {
 | |
|             TerminateThread(information.hThread, 0);
 | |
|             CloseHandle(information.hThread);
 | |
|         }
 | |
| 
 | |
|         if (information.hProcess)
 | |
|         {
 | |
|             TerminateProcess(information.hProcess, 0);
 | |
|             CloseHandle(information.hProcess);
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| HRESULT GetProcessFileName(HANDLE process, std::wstring& filename);
 | |
| HRESULT CreateSuspendedCopy(TerminateOnScopeExit& wrapper);
 |