2010-11-29 10 views
5

Estoy intentando construir un controlador muy simple. Su único propósito será registrar "PsSetCreateProcessNotifyRoutine" y en devoluciones de llamadas recibidas de kernel, notificar a mi aplicación Win32 sobre qué procesos se inician y se detienen.Comunicación entre la aplicación delphi y el controlador del sistema de Windows NT

Solo sé cómo crear un controlador tan simple con "DriverEntry" y "DriverUnload" y compilarlo con DDK. Pero no sé cómo implementar realmente la comunicación. Sé que se puede hacer con IOCTL. Pero más allá de eso estoy en la oscuridad. No puedo encontrar un ejemplo simple de cómo hacer eso en Delphi. Solo sé que se puede hacer.

Así que lo que estoy buscando es un tutorial simple y comprensible sobre cómo hacerlo o un evento mejor un ejemplo del programa delphi con un código de controlador adicional. Quizás haya otras formas de comunicación.

Cualquier ayuda se apruebe.

+2

Corredor comprobar esta pregunta http://stackoverflow.com/questions/3489501/how-to-recognize-that-an-application-intends-to-execute-run-a-file/3489779#3489779 WMI tiene la El evento 'ExecNotificationQuery' junto con la clase' Win32_Process' puede detectar cuándo un proceso se inicia o se detiene. – RRUZ

+0

Gracias por la información. En general, no me gusta WMI, pero en este caso vale la pena echarle un vistazo. Un controlador es realmente una opción bastante drástica, incluso si es muy efectivo. – Runner

+0

@RRUZ, su comentario fue muy bueno, pero acepté la respuesta de él mismo, lo cual también fue bueno y fue la respuesta a la pregunta real. – Runner

Respuesta

2

No importa si está en Delphi o no. Tienes que usar la función DeviceIoControl. Lea el article in MSDN al respecto.

En resumen, tendrá que elegir algunos IOCTL codes del conjunto disponible. Luego llama a DeviceIoControl con uno de estos códigos y pasa algunos datos, y en el controlador maneja esa solicitud y devuelve algo más.

También puede manejar IOCTLS estándar, como los que se generan al llamar a ReadFile o WriteFile en modo de usuario.

No busques un "tutorial de cómo hacerlo en Delphi", solo busca cualquier tutorial. Son todos iguales, sin importar el idioma, es puramente api de Win32/Native. Here's one por ejemplo, solo lo busqué en Google.

+0

Gracias, echaremos un vistazo. Dije ejemplo delphi, porque a menudo tienes que definir constantes, prototipos de funciones, etc. o buscar definiciones ya hechas. No me gustaría pasar por eso si no tengo que hacerlo. No busco atajos, solo el conocimiento de alguien que ya hizo eso. – Runner

+2

La traducción de casi todos los encabezados de API está disponible en JEDI (http://delphi-jedi.org/). Pero creo que no necesita mucho del modo de usuario, solo es DeviceIoControl y las funciones estándar de Win32 (CreateFile, etc.), todas definidas en Windows.pas. – himself

+0

+1 para Jedi Apilib – Remko

Cuestiones relacionadas