次の方法で共有


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
    );

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

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

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

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

関数宣言の SDV 要件の詳細については、「 KMDF ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。

要件

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

こちらもご覧ください

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue