Share via


Función UcmTcpciPortControllerAlert (ucmtcpciportcontroller.h)

Envía información sobre las alertas de hardware que se reciben en el controlador de puerto a UcmTcpciCx.

Sintaxis

void UcmTcpciPortControllerAlert(
  [in] UCMTCPCIPORTCONTROLLER               PortControllerObject,
       PUCMTCPCI_PORT_CONTROLLER_ALERT_DATA AlertData,
       size_t                               NumberOfAlerts
);

Parámetros

[in] PortControllerObject

Identificador del objeto del controlador de puerto que el controlador de cliente recibió en la llamada anterior a UcmTcpciPortControllerCreate.

AlertData

Puntero a una matriz de UCMTCPCI_PORT_CONTROLLER_ALERT_DATA que contiene todas las alertas actuales que no se han enviado a UcmTcpciCx. Este valor no puede ser NULL.

NumberOfAlerts

Número de elementos de la matriz a los que apunta AlertData. Este valor no puede ser 0.

Valor devuelto

None

Observaciones

UcmTcpciPortControllerAlert devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, esta función insertada puede devolver un código de error NTSTATUS adecuado.

El controlador cliente debe llamar a UcmTcpciPortControllerAlert que se ha iniciado anteriormente llamando a UcmTcpciPortControllerStart.

Cuando se produce una alerta de hardware, el controlador cliente debe determinar el tipo de alertas, capturar cualquier información auxiliar asociada a esa alerta, como un mensaje PD, rellenar la matriz y, a continuación, llamar a UcmTcpciPortControllerAlert.

El controlador cliente debe notificar las alertas secuencialmente. El controlador no debe llamar a este método en subprocesos que se ejecutan simultáneamente, ya que puede conducir a condiciones de carrera. Aunque la extensión de clase garantiza que todos los datos internos estén correctamente protegidos con bloqueo, si el controlador llama a UcmTcpciPortControllerAlert desde varios subprocesos al mismo tiempo sin ninguna sincronización externa, no se garantiza que el conjunto de alertas recibidas esté actualizado. Para evitar ese escenario, el controlador debe llamar a este método dentro de la rutina de servicio de interrupción (ISR) o un objeto DPC en cola para el ISR. El ISR debe sincronizarse correctamente para que solo se ejecute una instancia en un momento dado.

El controlador cliente debe suponer que la extensión de clase puede enviar solicitudes antes de que UcmTcpciPortControllerAlert devuelva, desde dentro de esta llamada.

Al controlar alertas, UcmTcpciCx puede enviar solicitudes de hardware al controlador cliente antes de que se devuelva la llamada UcmTcpciPortControllerAlert . Si el controlador mantiene un bloqueo al llamar a UcmTcpciPortControllerAlert e intenta adquirir el mismo bloqueo al controlar la solicitud de hardware, se puede producir un interbloqueo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Encabezado ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

Consulte también