кто нибудь запускал CreateToolhelp32Snapshot в дополнительном потоке приложения.
почему то вылетает....
а в основном работает.......
Здравствуйте, Sablezub, Вы писали:
[]
Это, например, работает. Так шта показывай свой код, иначе непонятно.
DWORD WINAPI thread_proc(VOID* parameter)
{
DWORD process_id = *reinterpret_cast<DWORD*>(parameter);
HANDLE snap_shot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, process_id);
_ASSERTE(snap_shot != INVALID_HANDLE_VALUE);
MODULEENTRY32 module_entry = { sizeof(module_entry) };
BOOL res = Module32First(snap_shot, &module_entry);
_ASSERTE(res);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR path[MAX_PATH] = { 0 };
UINT ret = GetSystemDirectory(path, MAX_PATH);
_ASSERTE(ret);
lstrcat(path, _T("\\notepad.exe"));
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi = { 0 };
BOOL res = CreateProcess(path, _T(""), NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
_ASSERTE(res);
CloseHandle(pi.hProcess);
DWORD thread_id = 0;
HANDLE thread = CreateThread(NULL, 0, thread_proc, &pi.dwProcessId, 0, &thread_id);
_ASSERTE(thread);
WaitForSingleObject(thread, INFINITE);
return 0;
}
да это тоже работает а вот если флаг TH32CS_SNAPPROCESS то уже вылетает...
Здравствуйте, Sablezub, Вы писали:
[]
Не знаю что там у тебя вылетает, "это" тоже работает
DWORD process_id = *reinterpret_cast<DWORD*>(parameter);
HANDLE snap_shot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, process_id);
_ASSERTE(snap_shot != INVALID_HANDLE_VALUE);
PROCESSENTRY32 process_entry = { sizeof(process_entry) };
BOOL res = Process32First(snap_shot, &process_entry);
_ASSERTE(res);
Может таки код приведешь, чем гадать на кофейной гуще?
Спасибо, я разобрался. У меня просто ошибка была 8))
Все работает отлично.