para - pack dll windows 7 64 bits
DllMain en un exe? (3)
¿Es posible recibir notificaciones de DllMain sobre la conexión / separación de subprocesos en un exe independiente sin usar dlls extra?
Editar: Esta es solo una pregunta teórica que tiene que ver con algunas pruebas que estoy haciendo. no es una situación de la vida real.
Interesante pregunta. No conozco nada integrado en Win32: creo que tendrías que utilizar una DLL que tenga una API que señale eventos o mensajes publicados cuando reciba los diversos mensajes de adjuntar / desconectar.
Una alternativa que no requeriría una DLL separada pero que requeriría algunos trucos de piratería es usar la API de depuración ( WaitForDebugEvent()
específicamente). Si su aplicación tiene un modo de prueba especial (tal vez indicado por una opción de línea de comando) que no hace más que DEBUG_ONLY_THIS_PROCESS
el exe usando CreateProcess()
con el indicador DEBUG_ONLY_THIS_PROCESS
, el proceso padre (''depurador'') puede llamar a WaitForDebugEvent()
para obtener notificación de los eventos de inicio y fin de la secuencia, así como un montón de otros eventos interesantes. El proceso principal puede pasarlos al niño como mensajes o mediante eventos de señalización (si eso es lo que desea) o realizar su propio registro si eso es todo lo que necesita.
De ninguna manera es algo simple, pero funcionaría y no requeriría una DLL o imagen separada, solo un modo especial para cuando quiera realizar estas pruebas.
No hay un código externo que se ejecute en el subproceso y cargue el ejecutable, por lo tanto, no hay notificaciones de conexión / desconexión de subprocesos [1]. El código en el ejecutable generalmente controla el enhebrado [2].
Si describes tu escenario, las personas podrían darte algunas ideas sobre cómo lograrlo.
[1] Bueno, la mayoría de las veces. Es posible cargar un archivo ejecutable en otro proceso, pero las personas no lo hacen normalmente.
[2] Existen ciertas excepciones en las que el sistema operativo crea el modelo de subprocesamiento y los subprocesos, en lugar del código ejecutable. Estos están principalmente relacionados con COM / RPC.
Su pregunta es recibir una notificación mientras se carga y descarga el proceso. Esto es más aplicable para las DLL, ya que están siendo cargadas por otros procesos.
¡Para Exes, tiene InitInstance y ExitInstance que puede manejar de manera equivalente!