Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Tenga en cuenta los siguientes puntos al diseñar un controlador en modo kernel:
Cada controlador debe tener una rutina DriverEntry , que inicializa las estructuras de datos y los recursos de todo el controlador. El administrador de E/S llama a la rutina DriverEntry cuando carga el controlador.
Cada controlador debe tener al menos una rutina de envío que reciba y procese paquetes de solicitud de E/S (IRP). Cada controlador debe colocar el punto de entrada de una rutina de distribución en su estructura de DRIVER_OBJECT , para cada código de función principal de IRP que el controlador pueda recibir. Un controlador puede tener una rutina de distribución independiente para cada código de función principal de IRP, o bien puede tener una o varias rutinas de envío que controlen varios códigos de función.
Cada controlador WDM debe tener una rutina de descarga . El controlador debe colocar el punto de entrada de la rutina Unload en el objeto driver del controlador. Las responsabilidades de una rutina de descarga del controlador PnP son mínimas, pero una rutina de descarga del controlador que no es PnP es responsable de liberar los recursos del sistema que el controlador está usando.
Cada controlador WDM debe tener una rutina AddDevice y definir su punto de entrada en la extensión del controlador del objeto driver. Una rutina AddDevice es responsable de crear e inicializar objetos de dispositivo para cada dispositivo PnP que controla el controlador.
Un controlador puede tener una rutina StartIo, que el administrador de E/S invoca para iniciar las operaciones de E/S de los IRP que el controlador ha puesto en una cola de IRP suministrada por el sistema. Cualquier controlador que no tenga una rutina StartIo debe configurar y administrar colas internas para los IRP que recibe, o bien debe completar cada IRP dentro de sus rutinas de envío. Es posible que los controladores de nivel superior no tengan una rutina StartIo, si simplemente pasan IRPs directamente a controladores de nivel inferior desde sus rutinas de envío.
Algunos controladores de miniport están exentos de los requisitos anteriores. Consulte la documentación específica del tipo de dispositivo en el Kit de controladores de Windows (WDK) para obtener información sobre los requisitos de los controladores de miniport.
Si un controlador tiene cualquier otro tipo de rutina estándar depende de su funcionalidad y de cómo encaja ese controlador en el sistema (por ejemplo, si interopera con controladores suministrados por el sistema). Consulte la documentación específica del tipo de dispositivo en WDK para obtener más información.