Função UcmTcpciPortControllerAlert (ucmtcpciportcontroller.h)

Envia informações sobre os alertas de hardware recebidos no controlador de porta para UcmTcpciCx.

Sintaxe

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

Parâmetros

[in] PortControllerObject

Manipule para o objeto do controlador de porta que o driver cliente recebeu na chamada anterior para UcmTcpciPortControllerCreate.

AlertData

Um ponteiro para uma matriz de UCMTCPCI_PORT_CONTROLLER_ALERT_DATA que contém todos os alertas atuais que não foram enviados para UcmTcpciCx. Esse valor não pode ser NULL.

NumberOfAlerts

O número de itens na matriz apontada por AlertData. Esse valor não pode ser 0.

Retornar valor

Nenhum

Comentários

UcmTcpciPortControllerAlert retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, essa função embutida poderá retornar um código de erro NTSTATUS apropriado.

O driver do cliente deve chamar UcmTcpciPortControllerAlert que foi iniciado anteriormente chamando UcmTcpciPortControllerStart.

Quando ocorre um alerta de hardware, o driver do cliente deve determinar o tipo de alertas, buscar quaisquer informações auxiliares associadas a esse alerta, como uma mensagem PD, preencher a matriz e, em seguida, chamar UcmTcpciPortControllerAlert.

O driver do cliente deve relatar os alertas sequencialmente. O driver não deve chamar esse método em threads que estão sendo executados simultaneamente, pois isso pode levar a condições de corrida. Embora a extensão de classe garanta que todos os dados internos estejam corretamente protegidos por bloqueio, se o driver chamar UcmTcpciPortControllerAlert de vários threads ao mesmo tempo sem nenhuma sincronização externa, não é garantido que o conjunto de alertas recebidos seja atual. Para evitar esse cenário, o driver deve chamar esse método dentro do ISR ( Rotina de Serviço de Interrupção ) ou um objeto DPC enfileirado para o ISR. O ISR deve ser sincronizado corretamente para ter apenas uma instância em execução a qualquer momento.

O driver do cliente deve assumir que a extensão de classe pode enviar solicitações antes que UcmTcpciPortControllerAlert retorne, de dentro dessa chamada.

Ao lidar com alertas, UcmTcpciCx pode enviar solicitações de hardware para o driver cliente antes que a chamada ucmTcpciPortControllerAlert retorne. Se o driver mantiver um bloqueio ao chamar UcmTcpciPortControllerAlert e também tentar adquirir o mesmo bloqueio ao lidar com a solicitação de hardware, poderá ocorrer deadlock.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Windows
Cabeçalho ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

Confira também