추가 dll을 사용하지 않고 독립 실행 형 exe에서 스레드 연결/분리에 대한 알림과 같은 DllMain을받을 수 있습니까?exe에서 DllMain?
편집 : 이것은 내가 수행하고있는 일부 테스트와 관련이있는 이론적 인 질문입니다. 실생활 상황이 아닙니다.
추가 dll을 사용하지 않고 독립 실행 형 exe에서 스레드 연결/분리에 대한 알림과 같은 DllMain을받을 수 있습니까?exe에서 DllMain?
편집 : 이것은 내가 수행하고있는 일부 테스트와 관련이있는 이론적 인 질문입니다. 실생활 상황이 아닙니다.
스레드에서 실행되고 실행 파일을로드하는 외부 코드가 없으므로 스레드 연결/분리 알림 [1]이 없습니다. 실행 파일의 코드는 일반적으로 스레딩 [2]을 제어합니다.
시나리오를 설명하면 사람들이 아이디어를 얻을 수 있습니다.
[1] 대부분의 경우. 다른 프로세스에서 실행 파일을로드 할 수는 있지만 사람들은 보통 그렇게하지 않습니다.
[2] 실행 코드 대신 OS에서 스레딩 모델과 스레드를 만드는 예외가 있습니다. 이들은 주로 COM/RPC와 관련이 있습니다.
귀하의 질문은 프로세스가로드되고 언로드되는 동안 알림을 얻는 것입니다. 이것은 DLL이 다른 프로세스에 의해로드 될 때 더 적용 가능합니다.
Exes의 경우 동일하게 처리 할 수있는 InitInstance 및 ExitInstance가 있습니다!
흥미로운 질문입니다. Win32에 내장 된 것에 대해서는 잘 모릅니다. 다양한 첨부/분리 메시지가있을 때 이벤트를 알리거나 게시 된 메시지를 전달하는 API가있는 DLL을 채워야 할 수도 있습니다.
별도의 DLL이 필요하지는 않지만 해킹이 필요하다면 디버깅 API (WaitForDebugEvent()
)를 사용하는 것이 좋습니다. 응용 프로그램에 DEBUG_ONLY_THIS_PROCESS
플래그와 함께 CreateProcess()
을 사용하여 exe를 다시 실행하는 특별한 '테스트'모드 (명령 줄 옵션으로 표시 될 수 있음)가있는 경우 부모 ('디버거') 프로세스는 WaitForDebugEvent()
을 호출하여 스레드에 대한 알림을받을 수 있습니다 시작 및 끝 이벤트뿐만 아니라 다른 흥미로운 이벤트. 부모 프로세스는 메시지 나 이벤트 신호로 자녀에게 전달할 수 있습니다 (필요한 경우). 또는 필요한 경우 필요한 경우 자체 로깅을 수행 할 수 있습니다.
간단한 것은 아니지만 별도의 DLL 또는 이미지가 필요하지 않으며 이러한 테스트를 수행 할 때 특별한 모드 일 필요가 없습니다.
프로세스에서 하나의 스레드가 해당 프로세스에서 다른 스레드가 생성되었는지 감지 할 수있는 방법을 찾고 있습니까? 부착/분리로 무엇을 의미하는지 모르겠습니다. – Ferruccio