c++ - versión - controlador de tarjeta de video para windows 7
¿Puedo escribir controladores de Windows con Delphi 2010? (4)
Siempre escuché que Delphi puede hacer casi cualquier cosa que C ++ pueda hacer ... excepto escribir controladores de Windows. ¿Es correcto, y si es así, por qué es eso?
Hace poco leí una publicación de blog en línea que puede indicar una posible solución para escribir controladores con Delphi , pero tiene 3 años y no sé qué tan precisa es esta información.
Entonces, con la última versión de Delphi (2010), ¿sería técnicamente posible escribir un controlador de Windows?
Puede escribir un controlador de Windows en cualquier idioma que se compile en un archivo DLL en formato PE, que no tenga dependencias externas (distintas de las aprobadas para cargar en el kernel), pueda invocar funciones con enlaces STDCALL y funciones de exportación con enlaces STDCALL.
Las dependencias no aprobadas-externas-van a ser la parte difícil que yo pensaría. :)
Puede ser técnicamente posible escribir algunos controladores con Delphi, pero en cuanto a una respuesta general , diría: no se pueden escribir fácilmente controladores con Delphi .
En primer lugar, existe una diferencia entre los controladores del controlador en modo usuario (UMDF) y los controladores en modo kernel (KMDF) . Los controladores UMDF deberían ser posibles con Delphi. Los controladores KMDF no son fácilmente posibles, porque
1) El enlazador de Delphi no puede producirlos y
2) El formato de archivo de objeto de Delphi es diferente del formato COFF que el enlazador de Microsoft utiliza de forma predeterminada.
3) Delphi''s RTL hace la suposición de que vive en modo usuario y puede hacer ciertas cosas que uno no debería hacer en kernel-land (creo, por ejemplo, en la forma en que se manejan las excepciones, también en la administración de memoria diferente), así que tendrías tener mucho cuidado sobre qué funciones de RTL son seguras de usar. También hay dificultades con las unidades System y SysInit (ver el comentario de Ritsaert Hornstra a otra respuesta aquí).
No estoy diciendo que estos no sean problemas que no puedan superarse (consulte la publicación a la que se vincula) si es realmente dedicado, pero no será sencillo.
En segundo lugar, los controladores KMDF (no sé sobre UMDF, en realidad, ¿alguien puede comentar?) Para Win64 tienen que estar en código de 64 bits. Dado que actualmente no existe un compilador Delphi de 64 bits, escribirlos es un rotundo no-no.
Estoy de acuerdo con las dos respuestas anteriores. De hecho, lo hice en un caso especial: un monitor de impresión. Es un caso especial de controlador que se ejecuta en modo de usuario, y podría escribir uno en Delphi. Definitivamente hubo algunos beneficios al usar Delphi allí.
Pero el último escollo que no se mencionó aún (creo) es que necesitas traducir montones de estructuras complejas y macros desde los archivos de encabezado DDK. Traducir algunas macros intrincadas, en particular, puede ser muy complicado.
He encontrado algunos enlaces que pueden ayudarte: