c++检查某个进程是否已加载某个dll

#include <TlHelp32.h>
#include <process.h>
/**
* 检查是否已加载目标dll  
* @param pid
* @param dll
* @return TCHAR* 带全路径的dll -- 不为NULL时,用完要释放返回结果
*/
TCHAR* ProcessHasLoadDll(DWORD pid, const TCHAR* dll) {
	/*
	* 参数为TH32CS_SNAPMODULE 或 TH32CS_SNAPMODULE32时,如果函数失败并返回ERROR_BAD_LENGTH,则重试该函数直至成功
	* 进程创建未初始化完成时,CreateToolhelp32Snapshot会返回error 299,但其它情况下不会
	*/
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pid);
	while (INVALID_HANDLE_VALUE == hSnapshot) {
		DWORD dwError = GetLastError();
		if (dwError == ERROR_BAD_LENGTH) {
			hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pid);
			continue;
		} else {
			if (dwError == ERROR_PARTIAL_COPY) {
				MYLOG4CXX_DEBUG(logger, TEXT("CreateToolhelp32Snapshot failed ") << dwError <<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值