Funzione UcmTcpciPortControllerAlert (ucmtcpciportcontroller.h)

Invia informazioni sugli avvisi hardware ricevuti nel controller di porta a UcmTcpciCx.

Sintassi

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

Parametri

[in] PortControllerObject

Gestire l'oggetto controller di porta ricevuto dal driver client nella chiamata precedente a UcmTcpciPortControllerCreate.

AlertData

Puntatore a una matrice di UCMTCPCI_PORT_CONTROLLER_ALERT_DATA contenente tutti gli avvisi correnti che non sono stati inviati a UcmTcpciCx. Questo valore non può essere NULL.

NumberOfAlerts

Numero di elementi nella matrice a cui punta AlertData. Questo valore non può essere 0.

Valore restituito

nessuno

Osservazioni

UcmTcpciPortControllerAlert restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questa funzione inline può restituire un codice di errore NTSTATUS appropriato.

Il driver client deve chiamare UcmTcpciPortControllerAlert avviato in precedenza chiamando UcmTcpciPortControllerStart.

Quando si verifica un avviso hardware, il driver client deve determinare il tipo di avvisi, recuperare eventuali informazioni ausiliarie associate a tale avviso, ad esempio un messaggio PD, popolare la matrice e quindi chiamare UcmTcpciPortControllerAlert.

Il driver client deve segnalare gli avvisi in sequenza. Il driver non deve chiamare questo metodo sui thread che vengono eseguiti simultaneamente, in quanto può causare condizioni di gara. Anche se l'estensione della classe garantisce che tutti i dati interni siano protetti correttamente, se il driver chiama UcmTcpciPortControllerAlert da più thread contemporaneamente senza alcuna sincronizzazione esterna, non è garantito che il set di avvisi ricevuti sia corrente. Per evitare questo scenario, il driver deve chiamare questo metodo all'interno della routine del servizio di interruzione (ISR) o un oggetto DPC accodato per l'ISR. L'ISR deve essere sincronizzato correttamente per avere una sola istanza in esecuzione in qualsiasi momento.

Il driver client deve presupporre che l'estensione della classe possa inviare richieste prima che UcmTcpciPortControllerAlert restituisca, dall'interno di questa chiamata.

Durante la gestione degli avvisi, UcmTcpciCx può inviare richieste hardware al driver client prima che venga restituita la chiamata UcmTcpciPortControllerAlert . Se il driver contiene un blocco durante la chiamata a UcmTcpciPortControllerAlert e tenta anche di acquisire lo stesso blocco durante la gestione della richiesta hardware, può verificarsi deadlock.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Server minimo supportato Windows Server 2016
Piattaforma di destinazione Windows
Intestazione ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

Vedi anche