2008-10-09 2 views
3

추가 dll을 사용하지 않고 독립 실행 형 exe에서 스레드 연결/분리에 대한 알림과 같은 DllMain을받을 수 있습니까?exe에서 DllMain?

편집 : 이것은 내가 수행하고있는 일부 테스트와 관련이있는 이론적 인 질문입니다. 실생활 상황이 아닙니다.

+0

프로세스에서 하나의 스레드가 해당 프로세스에서 다른 스레드가 생성되었는지 감지 할 수있는 방법을 찾고 있습니까? 부착/분리로 무엇을 의미하는지 모르겠습니다. – Ferruccio

답변

1

스레드에서 실행되고 실행 파일을로드하는 외부 코드가 없으므로 스레드 연결/분리 알림 [1]이 없습니다. 실행 파일의 코드는 일반적으로 스레딩 [2]을 제어합니다.

시나리오를 설명하면 사람들이 아이디어를 얻을 수 있습니다.


[1] 대부분의 경우. 다른 프로세스에서 실행 파일을로드 할 수는 있지만 사람들은 보통 그렇게하지 않습니다.
[2] 실행 코드 대신 OS에서 스레딩 모델과 스레드를 만드는 예외가 있습니다. 이들은 주로 COM/RPC와 관련이 있습니다.

0

귀하의 질문은 프로세스가로드되고 언로드되는 동안 알림을 얻는 것입니다. 이것은 DLL이 다른 프로세스에 의해로드 될 때 더 적용 가능합니다.

Exes의 경우 동일하게 처리 할 수있는 InitInstance 및 ExitInstance가 있습니다!

+0

InitInstance 및 ExitInstance는 win32 API의 일부가 아닌 MFC 구문입니다. – Ferruccio

+0

실행 파일을 DLL로 처리하는 것은 드물지만 보이지는 않습니다. 결국 실행 파일은 여전히 ​​심볼을 내보낼 수 있으며 실행 파일, DLL, 제어판 애플릿 등은 모두 확장자가 다른 PE 파일입니다. –

+1

내가 쓰레드에 대해 묻고 싶다. – shoosh

1

흥미로운 질문입니다. Win32에 내장 된 것에 대해서는 잘 모릅니다. 다양한 첨부/분리 메시지가있을 때 이벤트를 알리거나 게시 된 메시지를 전달하는 API가있는 DLL을 채워야 할 수도 있습니다.

별도의 DLL이 필요하지는 않지만 해킹이 필요하다면 디버깅 API (WaitForDebugEvent())를 사용하는 것이 좋습니다. 응용 프로그램에 DEBUG_ONLY_THIS_PROCESS 플래그와 함께 CreateProcess()을 사용하여 exe를 다시 실행하는 특별한 '테스트'모드 (명령 줄 옵션으로 표시 될 수 있음)가있는 경우 부모 ('디버거') 프로세스는 WaitForDebugEvent()을 호출하여 스레드에 대한 알림을받을 수 있습니다 시작 및 끝 이벤트뿐만 아니라 다른 흥미로운 이벤트. 부모 프로세스는 메시지 나 이벤트 신호로 자녀에게 전달할 수 있습니다 (필요한 경우). 또는 필요한 경우 필요한 경우 자체 로깅을 수행 할 수 있습니다.

간단한 것은 아니지만 별도의 DLL 또는 이미지가 필요하지 않으며 이러한 테스트를 수행 할 때 특별한 모드 일 필요가 없습니다.