UcmTcpciPortControllerAlert-Funktion (ucmtcpciportcontroller.h)

Sendet Informationen zu den Hardwarewarnungen, die auf dem Portcontroller empfangen werden, an UcmTcpciCx.

Syntax

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

Parameter

[in] PortControllerObject

Handle an das Portcontrollerobjekt, das der Clienttreiber im vorherigen Aufruf von UcmTcpciPortControllerCreate empfangen hat.

AlertData

Ein Zeiger auf ein Array von UCMTCPCI_PORT_CONTROLLER_ALERT_DATA , das alle aktuellen Warnungen enthält, die nicht an UcmTcpciCx gesendet wurden. Dieser Wert darf nicht NULL sein.

NumberOfAlerts

Die Anzahl der Elemente im Array, auf die von AlertData verwiesen wird. Dieser Wert darf nicht 0 sein.

Rückgabewert

Keine

Bemerkungen

UcmTcpciPortControllerAlert gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Inlinefunktion möglicherweise einen geeigneten NTSTATUS-Fehlercode zurück.

Der Clienttreiber muss UcmTcpciPortControllerAlert aufrufen, das zuvor durch Aufrufen von UcmTcpciPortControllerStart gestartet wurde.

Wenn eine Hardwarewarnung auftritt, muss der Clienttreiber den Typ der Warnungen bestimmen, alle dieser Warnung zugeordneten Hilfsinformationen abrufen, z. B. eine PD-Nachricht, das Array auffüllen und dann UcmTcpciPortControllerAlert aufrufen.

Der Clienttreiber muss die Warnungen sequenziell melden. Der Treiber darf diese Methode nicht für Threads aufrufen, die gleichzeitig ausgeführt werden, da dies zu Rennbedingungen führen kann. Obwohl die Klassenerweiterung sicherstellt, dass alle internen Daten ordnungsgemäß gesperrt sind, wird nicht garantiert, dass der Satz empfangener Warnungen aktuell ist, wenn der Treiber UcmTcpciPortControllerAlert von mehreren Threads gleichzeitig ohne externe Synchronisierung aufruft. Um dieses Szenario zu vermeiden, muss der Treiber diese Methode innerhalb der Interrupt Service Routine (ISR) oder eines DPC-Objekts aufrufen, das für den ISR in die Warteschlange gestellt wird. Die ISR sollte ordnungsgemäß synchronisiert werden, damit zu einem bestimmten Zeitpunkt nur ein instance ausgeführt wird.

Der Clienttreiber muss davon ausgehen, dass die Klassenerweiterung Anforderungen übermitteln kann, bevor UcmTcpciPortControllerAlert aus diesem Aufruf zurückgegeben wird.

Bei der Behandlung von Warnungen sendet UcmTcpciCx möglicherweise Hardwareanforderungen an den Clienttreiber, bevor der UcmTcpciPortControllerAlert-Aufruf zurückgegeben wird . Wenn der Treiber beim Aufrufen von UcmTcpciPortControllerAlert eine Sperre hält und auch versucht, die gleiche Sperre bei der Behandlung der Hardwareanforderung abzurufen, kann ein Deadlock auftreten.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Windows
Kopfzeile ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

Weitere Informationen