共用方式為


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 開始提供。
目標平臺 桌面
標頭 sercx.h
IRQL 在 IRQL <= DISPATCH_LEVEL 呼叫

另請參閱

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue