Red de conocimiento del abogados - Ley de patentes - El mecanismo operativo del gancho global Win32 del gancho global

El mecanismo operativo del gancho global Win32 del gancho global

Un gancho es en realidad un segmento de programa que procesa mensajes y se conecta al sistema a través de llamadas al sistema. Siempre que se envía un mensaje específico, el programa de enlace captura el mensaje antes de llegar a la ventana de destino, es decir, la función de enlace primero obtiene el control. En este momento, la función de enlace puede procesar (cambiar) el mensaje, continuar entregándolo sin procesarlo o forzar la finalización de la entrega del mensaje. El sistema mantiene una cadena de ganchos para cada tipo de gancho. El gancho instalado más recientemente se coloca al principio de la cadena y el primer gancho instalado se coloca al final. Es decir, el gancho agregado más tarde obtiene el control primero. Para implementar el enlace del sistema Win32, debe llamar a la función API SetWindowsHookEx en el SDK para instalar la función de enlace. El prototipo de esta función es HHOOK SetWindowsHookEx (int ​​idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId); el primer parámetro es el tipo de enlace; el segundo parámetro es la dirección de la función de enlace; el tercer parámetro es el identificador del módulo que contiene la función de enlace; el cuarto parámetro especifica el hilo que se va a monitorear; Si se especifica un hilo específico, es un gancho específico del hilo; si está vacío, es un gancho global. Entre ellos, la función de enlace global debe incluirse en la DLL (biblioteca de enlaces dinámicos), mientras que el enlace específico del hilo también puede incluirse en el archivo ejecutable. Una vez que la función de enlace que ha obtenido el control completa el procesamiento del mensaje, si desea que el mensaje continúe entregándose, debe llamar a la función API CallNextHookEx en otro SDK para entregarlo. La función de enlace también puede descartar el mensaje e impedir la entrega del mensaje devolviendo VERDADERO directamente.