次の方法で共有


UcmTcpciPortControllerAlert 関数 (ucmtcpciportcontroller.h)

ポート コントローラーで受信したハードウェア アラートに関する情報を UcmTcpciCx に送信します。

構文

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

パラメーター

[in] PortControllerObject

前の UcmTcpciPortControllerCreate の呼び出しでクライアント ドライバーが受信したポート コントローラー オブジェクトを処理します。

AlertData

UcmTcpciCx に送信されていない現在のすべての アラートを含 むUCMTCPCI_PORT_CONTROLLER_ALERT_DATAの配列へのポインター。 この値を NULL にすることはできません。

NumberOfAlerts

AlertData が指す配列内の項目の数。 この値を 0 にすることはできません。

戻り値

なし

解説

操作が成功した場合、UcmTcpciPortControllerAlert はSTATUS_SUCCESSを返します。 それ以外の場合、このインライン関数は適切な NTSTATUS エラー コードを返す場合があります。

クライアント ドライバーは、以前 に UcmTcpciPortControllerStart を呼び出して起動した UcmTcpciPortControllerAlert を呼び出す必要があります。

ハードウェア アラートが発生した場合、クライアント ドライバーはアラートの種類を決定し、PD メッセージなどのそのアラートに関連付けられている補助情報をフェッチし、配列を設定してから UcmTcpciPortControllerAlert を呼び出す必要があります。

クライアント ドライバーは、アラートを順番に報告する必要があります。 ドライバーは、競合状態につながる可能性があるとして、同時に実行されているスレッドでこのメソッドを呼び出す必要があります。 クラス拡張機能は、すべての内部データが正しくロック保護されていることを保証しますが、ドライバーが外部同期なしで同時に複数のスレッドから UcmTcpciPortControllerAlert を呼び出す場合、受信したアラートのセットが最新であるとは限りません。 このシナリオを回避するには、ドライバーは 割り込みサービス ルーチン (ISR) または ISR のキューに登録されている DPC オブジェクト 内でこのメソッドを呼び出す必要があります。 ISR は、特定の時点で 1 つのインスタンスしか実行しないように、正しく同期する必要があります。

クライアント ドライバーは、この呼び出し内から UcmTcpciPortControllerAlert が返される前に、クラス拡張機能が要求を送信できるものとします。

アラートを処理する場合、UcmTcpciCx は 、UcmTcpciPortControllerAlert 呼び出しが返される前に、クライアント ドライバーにハードウェア要求を送信することがあります。 UcmTcpciPortControllerAlert の呼び出し中にドライバーがロックを保持し、ハードウェア要求の処理時に同じロックを取得しようとすると、デッドロックが発生する可能性があります。

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
対象プラットフォーム Windows
ヘッダー ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

こちらもご覧ください