Funzione UcmTcpciPortControllerAlert (ucmtcpciportcontroller.h)
Invia informazioni sugli avvisi hardware ricevuti sul controller della 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 UcmTcpciPortControllerCreare.
AlertData
Puntatore a una matrice di UCMTCPCI_PORT_CONTROLLER_ALERT_DATA che contiene 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 NTSTATUS codice di errore appropriato.
Il driver client deve chiamare UcmTcpciPortControllerAlert avviato in precedenza chiamando UcmTciPortControllerStart.
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 in esecuzione contemporaneamente, in quanto ciò può portare a 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 del interrupt service routine (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 di UcmTcpciPortControllerAlert restituisce, dall'interno di questa chiamata.
Quando si gestiscono gli avvisi, UcmTcpciCx può inviare richieste hardware al driver client prima che venga restituita la UcmTcpciPortControllerAlert chiamata. Se il driver mantiene un blocco durante la chiamata di UcmTcpciPortControllerAlert e tenta anche di acquisire lo stesso blocco durante la gestione della richiesta hardware, può verificarsi deadlock.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 |
server minimo supportato | Windows Server 2016 |
piattaforma di destinazione | Finestre |
intestazione | ucmtcpciportcontroller.h |
IRQL | <=DISPATCH_LEVEL |