次の方法で共有


EVT_SERCX_TRANSMITコールバック関数 (sercx.h)

EvtSerCxTransmit イベント コールバック関数は、書き込み (送信) 操作を行うためにシリアル コントローラー デバイス (UART) を準備します。

構文

EVT_SERCX_TRANSMIT EvtSercxTransmit;

NTSTATUS EvtSercxTransmit(
  [in] WDFDEVICE Device,
  [in] size_t Length
)
{...}

パラメーター

[in] Device

シリアル コントローラーを表すフレームワーク デバイス オブジェクトへの WDFDEVICE ハンドル。

[in] Length

送信するバイト数。 コントローラー ドライバーは、PIO または DMA を使用してデータ転送を実行するかどうかを決定するためのヒントとしてこの値を使用できます。

戻り値

EvtSerCxTransmit 関数は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー状態コードが返されます。

備考

シリアル フレームワーク拡張機能 (SerCx) は、この関数を呼び出して、データを送信するようにシリアル コントローラー ハードウェアを構成します。 必要に応じて、EvtSerCxTransmit 関数で割り込みを有効にすることができます。

EvtSerCxTransmit 関数は、必ずしも出力データを送信 FIFO バッファーに書き込むわけではありません。 シリアル コントローラーのハードウェアまたは転送の種類によっては、この関数は、データを書き込むための DMA 操作を設定する場合や、データを書き込むための送信/受信 DPC 関数をスケジュールする場合があります。 シリアル コントローラー ドライバーは、シリアル コント ローラーにデータを送信し、コント ローラーからデータを受信するこの DPC 関数を実装します。 DPC の間、DPC 関数はデータを送信できるかどうかを決定し、使用可能な場合は PIO を使用してシリアル コントローラーの送信 FIFO にデータを転送します。

シリアル コントローラの送信 FIFO がいっぱいまたはほぼ満杯であっても、FIFO の低ウォーター マーク割り込みが有効になっている場合、EvtSerCxTransmit 関数は単に戻ることができます。 その後、コントローラー ドライバーの ISR は送信/受信 DPC 関数の実行をスケジュールでき、この関数はより多くの出力データを送信 FIFO に転送できます。

EvtSerCxTransmit コールバック関数を登録するには、コントローラー ドライバーは、EvtDriverDeviceAdd コールバック中に SerCxInitialize メソッドを呼び出します。

このコールバックの関数型は、次のように Sercx.h で宣言されています。

typedef NTSTATUS
  EVT_SERCX_TRANSMIT(
    __in WDFDEVICE Device
    );

という名前の EvtSerCxTransmit コールバック関数を定義するには、まず、次のように、静的ドライバー検証ツール (SDV) およびその他の検証ツール 必要な関数宣言を指定する必要があります。

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

次に、次のようにコールバック関数を実装します。

NTSTATUS
  MyEvtSerCxTransmit(
    __in WDFDEVICE Device
    )
{ ... }

関数宣言の SDV 要件の詳細については、「宣言する関数を宣言する KMDF ドライバーのの関数の役割の種類を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 以降で使用できます。
ターゲット プラットフォーム の デスクトップ
ヘッダー sercx.h
IRQL IRQL <= DISPATCH_LEVEL で呼び出されます

関連項目

EvtDriverDeviceAdd の

SerCxInitialize

WdfDpcEnqueue