Responsabilidades necesarias de DriverEntry
Las responsabilidades ordenadas necesarias de una rutina DriverEntry son las siguientes:
Proporcione puntos de entrada para las rutinas estándar del controlador.
El controlador almacena puntos de entrada para muchas de sus rutinas estándar en el objeto de controlador o la extensión del controlador. Estos puntos de entrada incluyen los de la rutina AddDevice del controlador, las rutinas de envío, la rutina StartIo y la rutina Unload . Por ejemplo, un controlador establecería los puntos de entrada para sus rutinas AddDevice, DispatchPnP y DispatchPower con instrucciones como las siguientes (Xxx es un marcador de posición para un prefijo proporcionado por el proveedor que identifica el controlador):
: DriverObject->DriverExtension->AddDevice = XxxAddDevice; DriverObject->MajorFunction[IRP_MJ_PNP] = XxxDispatchPnp; DriverObject->MajorFunction[IRP_MJ_POWER] = XxxDispatchPower; :
Las rutinas estándar adicionales, como LAS ISR o las rutinas de IoCompletion , se especifican mediante una llamada a rutinas de soporte técnico del sistema. Para obtener más información, consulte las descripciones de rutinas de controlador estándar individuales.
Cree o inicialice varios objetos, tipos o recursos de todo el controlador que usa el controlador. Tenga en cuenta que la mayoría de las rutinas estándar usan objetos por dispositivo, por lo que los controladores deben configurar dichos objetos en sus rutinas AddDevice o después de recibir una solicitud de IRP_MN_START_DEVICE .
Si el controlador tiene un subproceso dedicado al dispositivo o espera en cualquier objeto distribuidor definido por kernel, la rutina DriverEntry podría inicializar objetos de distribuidor del kernel. (Dependiendo de cómo use el controlador los objetos), podría realizar esta tarea en su rutina AddDevice o después de recibir una solicitud de IRP_MN_START_DEVICE ).
Libere cualquier memoria que haya asignado y ya no sea necesaria.
Devuelve NTSTATUS que indica si el controlador se cargó correctamente y puede aceptar y procesar solicitudes del administrador de PnP para configurar, agregar e iniciar sus dispositivos. (Consulte DriverEntry Return Values).)