积极答复者
请教真机上CreateToolhelp32Snapshot问题

问题
-
下面代码在真机上马上出错,不知道怎么回事? 是不是需要签名?而且在模拟器上OpenProcess只能打开2次,包括NK.exe还有自己的程序,请问是怎么回事的? 谢谢。
HANDLE procSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(procSnap == INVALID_HANDLE_VALUE)
{
//真机上出错。
return FALSE;
}
PROCESSENTRY32 pe32 = { 0 };
pe32.dwSize = sizeof( PROCESSENTRY32 );
char szFileName[ MAX_PATH ] ;
HANDLE hProcess ;
DWORD dwRes = 0;
DWORD idx;
HMODULE hMod;
DWORD addr;
strResult = "";
CString str;
HMODULE hModule;
DWORD dwSize;
DWORD offset = 0;
BOOL bRet = Process32First(procSnap,&pe32);
while(bRet)
{
//wprintf(L"PID: %d (%s) ", procEntry.th32ProcessID, procEntry.szExeFile);
//
szFileName[0] = 0 ;
hProcess = OpenProcess(
PROCESS_CREATE_THREAD |
PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_READ |
PROCESS_VM_WRITE,
FALSE, pe32.th32ProcessID) ;
}
if(hProcess)
{
CloseHandle( hProcess ) ;
hProcess =NULL;
}
}
bRet = Process32Next(procSnap, &pe32);
//
}
CloseHandle(procSnap);
答案
-
默认情况下CreateToolhelp32Snapshot生成的快照包含所有的heap,我们可以增加TH32CS_SNAPNOHEAPS标识来解决。用下面的参数来调用这个方法:
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS, 0);
Please remember to mark the replies as answers if they help and unmark them if they provide no help- 已标记为答案 anyjoy 2009年10月27日 7:54
全部回复
-
默认情况下CreateToolhelp32Snapshot生成的快照包含所有的heap,我们可以增加TH32CS_SNAPNOHEAPS标识来解决。用下面的参数来调用这个方法:
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS, 0);
Please remember to mark the replies as answers if they help and unmark them if they provide no help- 已标记为答案 anyjoy 2009年10月27日 7:54
-
默认情况下CreateToolhelp32Snapshot生成的快照包含所有的heap,我们可以用下面的参数来调用这个方法:
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS, 0);
Please remember to mark the replies as answers if they help and unmark them if they provide no help
你好,我的机器上用了这种方法也是不行,后来我干脆用了多个CreateToolhelp32Snapshot,就解决了,谢谢.