Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 to the port controller object that the client driver received in the previous call to UcmTcpciPortControllerCreate.
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 durch AlertData-verwiesen wird. Dieser Wert darf nicht 0 sein.
Rückgabewert
Nichts
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, die zuvor durch Aufrufen UcmTcpciPortControllerStartgestartet wurde.
Wenn eine Hardwarewarnung auftritt, muss der Clienttreiber den Typ der Warnung bestimmen, alle zusätzlichen Informationen abrufen, die dieser Warnung zugeordnet sind, z. B. eine PD-Nachricht, das Array auffüllen und dann UcmTcpciPortControllerAlertaufrufen.
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. Auch wenn die Klassenerweiterung sicherstellt, dass alle internen Daten ordnungsgemäß gesperrt sind, wenn der Treiber UcmTcpciPortControllerAlert von mehreren Threads gleichzeitig ohne externe Synchronisierung aufruft, wird nicht garantiert, dass der Satz von empfangenen Warnungen aktuell ist. Um dieses Szenario zu vermeiden, muss der Treiber diese Methode innerhalb der Interrupt Service Routine (ISR) oder ein DPC- Objekt aufrufen, das für den ISR in die Warteschlange gestellt wird. Der ISR sollte ordnungsgemäß synchronisiert werden, damit immer nur eine Instanz ausgeführt wird.
Der Clienttreiber muss davon ausgehen, dass die Klassenerweiterung Anforderungen senden kann, bevor UcmTcpciPortControllerAlert innerhalb dieses Aufrufs zurückgibt.
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 UcmTcpciPortControllerAlert eine Sperre hält und auch versucht, dieselbe Sperre beim Behandeln der Hardwareanforderung abzurufen, kann Deadlock auftreten.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10 |
mindestens unterstützte Server- | Windows Server 2016 |
Zielplattform- | Fenster |
Header- | ucmtcpciportcontroller.h |
IRQL- | <=DISPATCH_LEVEL |