Requisitos de rutina del controlador estándar
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 envío 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 Unload . 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 llama para iniciar operaciones de E/S para IRP que el controlador ha puesto en cola en una cola irP proporcionada 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 IRP a controladores de nivel inferior directamente desde sus rutinas de envío.
Algunos controladores de minipuerto son excepciones a 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 minipuerto.
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.