· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Траблы с инициализацией DLL

Посл.отвђт Сообщенiе


Дата: Дек 31, 2003 03:03:23 · Поправил: Безпощадный даос

Привет!!!
С праздничком всех (прошедшим уже, наверное)
Извиняйте, что не в том языке, но больше нигде не помогли!!!
(да и не в языке дело, а в принципе)
Кто знает, почему при выполнении следующего кода не создается новый поток:
DWORD WINAPI ThreadFunc( LPVOID lpParam ) 
{ 
	int nRet = 0;
	DWORD lpcb=0, lpcConnections=0;
	LPRASCONN lpRasConn = (LPRASCONN)GlobalAlloc(GPTR, sizeof(RASCONN));
	lpRasConn->dwSize = sizeof(RASCONN);
	while(!nRet)
	{
		Sleep(1000);
		nRet = RasEnumConnections(lpRasConn, &lpcb, &lpcConnections);
		if(nRet)MessageBox(NULL, "YES","Inet",MB_OK);
	}
	GlobalFree(lpRasConn);
	return 3;
}

BOOL APIENTRY DllEntryPoint( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hMpr=GetCurrentProcess();
HANDLE hThread=CreateRemoteThread(GetCurrentProcess(), NULL, NULL, ThreadFunc, &dwThrdParam, NULL, &dwThreadId);
}
}
return TRUE;
}
DLL' ка грузится при старте Вындовс98, как параметр mprexe.exe (mprexe.exe mydll.dll, DllEntryPoint) через один ключ реестра.
CreateRemoteThread возвращает ноль.
Если кто-нить знает - помогите pleazzze!!! Вы последняя надежда :)


Дата: Дек 31, 2003 04:44:06

Что говорит GetLastError?

Цитата из описания DllMain: The entry-point function should perform only simple initialization or termination tasks.


Дата: Дек 31, 2003 11:32:11

1) CreateRemoteThread НЕ РЕАЛИЗОВАНА в Win9x - RTFMSDN.
2) Использовать CreateRemoteThread для создания потока в _собственном_ процессе (передавая ей GetCurrentProcess()) - это редкостное извращение, существует ф-ция CreateThread (которая, правда, в WinNT реализована как CreateRemoteThread(GetCurrentProcess(), ...) ;-))
3) Наконец, создавать потоки в DllEntry достаточно опасно. Почитайте Рихтера, у него это достаточно подробно описано.
В принципе, это и есть краткий список причин, по которым Ваш код не работает.


Дата: Янв 2, 2004 02:43:09

Всем спасибо за ответы!!!
Разобрался - все работает...
(хреново, когда руки кривые)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.165