/************************************************************************/
/*  Copyright (C), 2016-2020, [Home], 保留所有权利;
/*  模 块 名：;
/*  描    述：;
/*
/*  版    本：[V];	
/*  作    者：[Home];
/*  日    期：[1/6/2019];
/*
/*
/*  注    意：;
/*
/*  修改记录：[Home];
/*  修改日期：;
/*  修改版本：;
/*  修改内容：;
/************************************************************************/
#ifndef __INJECTION_OBJ__
#define __INJECTION_OBJ__

#pragma once

class CInjection
{
public:
	CInjection();
	explicit CInjection(DWORD dwPid, LPCTSTR lpDynamicLibraryPath);
	~CInjection(void);
	// dll路径和要注入的进程id;
	void setInjectionObj(DWORD dwPid, LPCTSTR lpDynamicLibraryPath);

public:
	BOOL InjectDynamicLibrary();
	BOOL EjectDynamicLibrary();
	inline HANDLE GetInjectProcess(){
		return m_hInjectProcess;
	}
private:
	// 当前注入的进程ID;
	DWORD			m_dwInjectPID;
	// 动态库路径;
	TCHAR			m_szDllPath[MAX_PATH];
	// 当前注入的进程句柄;
	HANDLE			m_hInjectProcess;
	// 路径分配的内存;
	LPVOID			m_lpInjectData;
	LPVOID			m_lpEjectData;
	// 路径长度;
	DWORD			m_dwPathLen;
	// 注入线程句柄;
	HANDLE			m_hInjectThread;
	// 卸载线程句柄;
	HANDLE			m_hEjectThread;
};

#endif