Compartilhar via


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 ao UcmTcpciCx. Esse valor não pode ser NULL.

NumberOfAlerts

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

Valor de retorno

Nenhum

Observações

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 de NTSTATUS apropriado.

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

Quando ocorre um alerta de hardware, o driver 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 cliente deve relatar os alertas sequencialmente. O driver não deve chamar esse método em threads que estão em execução 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 há garantia de que o conjunto de alertas recebidos seja atual. Para evitar esse cenário, o driver deve chamar esse método no ISR ( de Rotina de Serviço de Interrupção) ou um objeto DPC que está na fila para o ISR. O ISR deve ser sincronizado corretamente para ter apenas uma instância em execução a qualquer momento.

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

Ao lidar com alertas, o 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
de cliente com suporte mínimo Windows 10
servidor com suporte mínimo Windows Server 2016
da Plataforma de Destino Windows
cabeçalho ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

Consulte também