Función StorPortNotification (storport.h)
El controlador de minipuerto usa la rutina StorPortNotification para notificar al controlador de Storport determinados eventos y condiciones.
StorPortNotification toma un número variable de parámetros según el tipo de notificación especificado.
Sintaxis
STORPORT_API VOID StorPortNotification(
SCSI_NOTIFICATION_TYPE NotificationType,
PVOID HwDeviceExtension,
...
);
Parámetros
NotificationType
Especifica el tipo de notificación, que puede ser uno de los valores siguientes.
Tipo de notificación | Descripción |
---|---|
BufferOverrunDetected | Este tipo de notificación no tiene argumentos y ofrece al controlador de minipuerto una oportunidad para comprobar el sistema si detecta daños. |
BusChangeDetected |
Indica que es posible que se haya agregado o quitado un dispositivo de destino de un bus dinámico. Para usar este tipo de notificación, incluya un parámetro PathId opcional para indicar el puerto SCSI o el bus donde se detectó el cambio.
|
IoTargetRequestServiceTime |
Indica a Storport la cantidad de tiempo necesario para procesar una solicitud especificada.
Duración [in] Duración del tiempo de servicio necesario para Srb en unidades de 100 nanosegundos. Srb [in] Bloque de solicitud para el que se va a establecer la hora del servicio. |
LinkDown | Indica que el vínculo está inactivo y probablemente estará inactivo durante algún tiempo. StorPort pausará el adaptador en respuesta a esta notificación. |
Linkup | Indica que se ha restaurado el vínculo. StorPort reinicia el adaptador para que pueda reanudar la operación en respuesta a esta notificación. Los controladores de minipuerto no deben enviar esta notificación a menos que el vínculo esté inactivo. |
QueryTickCount |
Este tipo de notificación devuelve un LARGE_INTEGER que contiene el valor de KeQueryTickCount. El valor devuelto en TickCount es el recuento de las interrupciones del temporizador de intervalo que se han producido desde el arranque del sistema.
|
RequestComplete |
Indica que la SRB especificada ha finalizado. Una vez enviada esta notificación, el controlador de puerto posee la solicitud. El parámetro Srb representa un puntero al bloque de solicitud SCSI completado. El controlador de minipuerto no debe intentar acceder a la solicitud en Srb, y no debe pasar Srb a otra rutina.
|
RequestTimerCall |
Indica que el controlador de minipuerto requiere que el controlador de puerto llame a la rutina HwStorTimer del controlador de miniporte en el número solicitado de microsegundos.
HwStorTimer [in] Puntero a una rutina de temporizador a la que se llama después del intervalo de tiempo especificado en MiniportTimerValue. MiniportTimerValue [in] Indica el intervalo después del cual se llama a la rutina del temporizador a la que apunta HwStorTimer. Se trata de un valor positivo especificado en microsegundos. Un valor de 0 cancelará el temporizador. La resolución del temporizador del sistema es de aproximadamente 10 milisegundos. |
ResetDetected | Indica que el HBA ha detectado un restablecimiento en el bus. Una vez enviada esta notificación, el controlador de minipuerto sigue siendo responsable de completar las solicitudes activas. El controlador de puerto administrará todos los retrasos de restablecimiento de bus necesarios. |
WMIEvent |
Indica que el controlador de minipuerto ha detectado un evento para el que se registran uno o varios consumidores de datos WMI. Tenga en cuenta que el parámetro WmiEvent está limitado a un máximo de 128 bytes. Si WmiEvent tiene más de 128 bytes, se omitirá.
WMIEvent [in] Puntero a estructuras de eventos que tienen información sobre un evento WMI detectado por el controlador de minipuerto. PathId [in] Indica el puerto o bus SCSI de la solicitud. Establezca este parámetro en 0xff para un dispositivo adaptador. De lo contrario, establezca en un identificador de ruta de acceso válido. TargetId [in, opcional] Indica el controlador de destino o el dispositivo del bus. Este parámetro no se usa cuando el evento es para un adaptador. Lun [in, opcional] Indica el número de unidad lógica del dispositivo. Este parámetro no se usa cuando el evento es para un adaptador. |
WMIReregister |
Indica que el controlador de minipuerto ha cambiado los elementos de datos o el número de instancias de un bloque de datos determinado que se registró anteriormente mediante una llamada a IoWMIRegistrationControl.
PathId [in] Indica el puerto o bus SCSI de la solicitud. Establezca este parámetro en 0xff para un dispositivo adaptador. De lo contrario, establezca en un identificador de ruta de acceso válido. TargetId [in, opcional] Indica el controlador de destino o el dispositivo del bus. Este parámetro no se usa cuando el registro es para un adaptador. Lun [in, opcional] Indica el número de unidad lógica del dispositivo. Este parámetro no se usa cuando el registro es para un adaptador. |
HwDeviceExtension
Puntero a la extensión de dispositivo de hardware. Se trata de un área de almacenamiento por HBA que el controlador de puerto asigna e inicializa en nombre del controlador de minipuerto. Los controladores de minipuerto suelen almacenar información específica de HBA en esta extensión, como el estado del HBA y los intervalos de acceso asignados para el HBA. Esta área está disponible para el controlador de minipuerto inmediatamente después de que el controlador de minipuerto llame a StorPortInitialize. El controlador de puerto libera esta memoria cuando quita el dispositivo.
...
Parámetros adicionales.
Valor devuelto
Ninguno.
Comentarios
StorPortNotification es una función polimórfica que controla muchos tipos diferentes de solicitudes, lo que dificulta la anotación de una manera que cubriría todos los usos posibles. Dado que StorPortNotification devuelve VOID, el motor de análisis debe suponer que lockHandle se adquirió como se le preguntó.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | storport.h (incluya Storport.h) |
Library | Storport.lib |
Reglas de cumplimiento de DDI | StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport) |