共用方式為


EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION回呼函式 (sercx.h)

EvtSerCx2PioReceiveEnableReadyNotification 事件回呼函式是由序列架構延伸模組第 2 版呼叫,讓序列控制器驅動程式在序列控制器收到新數據時通知 SerCx2。

語法

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION EvtSercx2PioReceiveEnableReadyNotification;

void EvtSercx2PioReceiveEnableReadyNotification(
  [in] SERCX2PIORECEIVE PioReceive
)
{...}

參數

[in] PioReceive

PIO 接收物件的 SERCX2PIORECEIVE 句柄。 序列控制器驅動程式先前稱為 SerCx2PioReceiveCreate 方法來建立這個物件。

傳回值

沒有

言論

您的序列控制器驅動程序必須實作此函式。 驅動程式會在 SerCx2PioReceiveCreate 呼叫中註冊函式,以建立 PIO-receive 物件。

呼叫 EvtSerCx2PioReceiveEnableReadyNotification 函式以啟用 PIO 接收交易的就緒通知之後,序列控制器驅動程式必須呼叫 SerCx2PioReceiveReady 方法,以在驅動程式偵測到可從序列控制器硬體中的接收 FIFO 讀取一或多個字節的數據時通知 SerCx2。 如果啟用就緒通知時,接收 FIFO 中已經有數據可用,驅動程式會立即呼叫此方法來通知 SerCx2。

PIO 接收交易的就緒通知是單次通知。 將就緒通知傳送至 SerCx2 之後,序列控制器驅動程式不會再傳送任何通知,直到 SerCx2 呼叫 EvtSerCx2PioReceiveEnableReadyNotification 函式,才能啟用另一個通知。

EvtSerCx2PioReceiveReadBuffer 事件回呼函式呼叫可能只會部分完成 PIO 接收交易,因為不會立即從接收 FIFO 讀取任何數據。 在此情況下,SerCx2 會呼叫 EvtSerCx2PioReceiveEnableReadyNotification 函式來啟用就緒通知,在此情況下,當接收 FIFO 包含更多數據時,序列控制器驅動程式必須通知 SerCx2。 為了回應此通知,SerCx2 會再次呼叫 EvtSerCx2PioReceiveReadBuffer 函式,以繼續部分完成的接收交易。

一般而言,EvtSerCx2PioReceiveEnableReadyNotification 函式會啟用當序列控制器有更多數據可供讀取時發生的中斷。 為了回應此中斷,序列控制器驅動程式會呼叫 SerCx2PioReceiveReady

一次不能有一個以上的就緒通知擱置中。 在 SerCx2 呼叫 EvtSerCx2PioReceiveEnableReadyNotification 函式以啟用就緒通知之後,SerCx2 不會再次呼叫此函式,直到控制器驅動程式呼叫 SerCx2PioReceiveReady為止。

啟用就緒通知時,SerCx2 絕不會呼叫 EvtSerCx2PioReceiveReadBuffer 函式。

如果相關聯的讀取要求逾時或已取消,則可以取消暫止的就緒通知。 若要取消 PIO 接收交易的就緒通知,SerCx2 會呼叫 EvtSerCx2PioReceiveCancelReadyNotification 事件回呼函式。

SerCx2 使用就緒通知,有效率地管理在處理做為 PIO 接收交易之讀取要求期間發生的時間間隔逾時。

如需詳細資訊,請參閱 SerCx2 PIO-Receive Transactions

例子

若要定義 EvtSerCx2PioReceiveEnableReadyNotification 回呼函式,您必須先提供函式宣告,以識別您要定義的回呼函式類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證器 (SDV)和其他驗證工具尋找錯誤,而且是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為 MyPioReceiveEnableReadyNotification 回呼函式,請使用 EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION 函式類型,如下列程式代碼範例所示:

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION  MyPioReceiveEnableReadyNotification;

然後,實作回呼函式,如下所示:

_Use_decl_annotations_
VOID
  MyPioReceiveEnableReadyNotification(
    SERCX2PIORECEIVE  PioReceive
    )
  {...}

EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION 函式類型定義於 Sercx.h 頭檔中。 若要在執行程式代碼分析工具時更準確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations 批注可確保會使用套用至頭檔中 EVT_SERCX2_PIO_RECEIVE_ENABLE_READY_NOTIFICATION 函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 KMDF 驅動程式的函式角色類型來宣告函式。 如需 Use_decl_annotations的詳細資訊,請參閱 批注函式行為

要求

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

另請參閱

EvtSerCx2PioReceiveCancelReadyNotification

EvtSerCx2PioReceiveCleanupTransaction

IRP_MJ_READ

SERCX2PIORECEIVE

SerCx2PioReceiveCreate

SerCx2PioReceiveReady