共用方式為


EVT_SERCX_RECEIVE回呼函式 (sercx.h)

EvtSerCxReceive 事件回呼函式會準備序列控制器裝置 (UART) 以執行讀取(接收) 作業。

語法

EVT_SERCX_RECEIVE EvtSercxReceive;

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

參數

[in] Device

代表序列控制器之架構裝置物件的WDFDEVICE句柄。

[in] Length

要接收的位元組數目。 控制器驅動程式可以使用此值作為提示,以決定是否要使用 PIO 或 DMA 來執行資料傳輸。

傳回值

EvtSerCxReceive 函式會在呼叫成功時傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤狀態代碼。

言論

序列架構延伸模組 (SerCx) 會呼叫此函式,以設定控制器硬體以接收數據。 如有必要,EvtSerCxReceive 函式可以啟用中斷。

EvtSerCxReceive 函式不一定從接收 FIFO 緩衝區讀取輸入數據。 視序列控制器硬體或傳輸類型而定,此函式可能會設定 DMA 作業來讀取數據,或者可能會排程傳輸/接收 DPC 函式來讀取數據。 序列控制器驅動程式會實作這個 DPC 函式,以接收來自控制器的數據,以及將數據傳輸到序列控制器。 在 DPC 期間,DPC 函式會判斷數據是否可供接收,如果是,則會使用 PIO 從序列控制器中的接收 FIFO 讀取數據。

如果序列控制器中的接收 FIFO 是空的或幾乎空白的,但已啟用 FIFO 的高水位中斷,則 DPC 例程可以直接傳回。 稍後,控制器驅動程式的ISR可以排程執行 DPC 例程,而且此例程可以從接收 FIFO 讀取更多數據。

若要註冊 EvtSerCxReceive 回呼函式,控制器驅動程式會在 EvtDriverDeviceAdd 回呼期間呼叫 SerCxInitialize 方法。

例子

此回呼的函式類型會在 Sercx.h 中宣告,如下所示。

typedef NTSTATUS
  EVT_SERCX_RECEIVE(
    __in WDFDEVICE Device
    );

若要定義名為 MyEvtSerCxReceiveEvtSerCxReceive 回呼函式,您必須先提供 靜態驅動程序驗證器 (SDV) 和其他驗證工具所需的函式宣告,如下所示。

EVT_SERCX_RECEIVE MyEvtSerCxReceive;

然後,如下所示實作您的回呼函式。

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

如需函數宣告之 SDV 需求的詳細資訊,請參閱 使用 KMDF 驅動程式的函式角色類型來宣告函式

要求

要求 價值
最低支援的用戶端 從 Windows 8 開始提供。
目標平臺 桌面
標頭 sercx.h
IRQL 在 IRQL <= DISPATCH_LEVEL 呼叫

另請參閱

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue