EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION回呼函式 (sercx.h)

EvtSerCx2PioTransmitEnableReadyNotification 事件回呼函式是由第 2 版的序列架構擴充功能所呼叫, (SerCx2) ,讓序列控制器驅動程式能夠在串行控制器中的傳輸 FIFO 準備好接受更多數據時通知 SerCx2。

語法

EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION EvtSercx2PioTransmitEnableReadyNotification;

void EvtSercx2PioTransmitEnableReadyNotification(
  [in] SERCX2PIOTRANSMIT PioTransmit
)
{...}

參數

[in] PioTransmit

PIO 傳輸物件的 SERCX2PIOTRANSMIT 句柄。 序列控制器驅動程式先前稱為 SerCx2PioTransmitCreate 方法來建立這個物件。

傳回值

備註

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

如果已啟用 PIO 傳輸交易的就緒通知,當驅動程式偵測到序列控制器硬體中的傳輸 FIFO 已準備好接受更多數據時,序列控制器驅動程序必須呼叫 SerCx2PioTransmitReady 方法來通知 SerCx2。 如果傳輸 FIFO 已準備好在啟用就緒通知時接受數據,驅動程式會立即呼叫這個方法來通知 SerCx2。

PIO 傳輸交易的就緒通知是一次性通知。 將就緒通知傳送至 SerCx2 之後,序列控制器驅動程式在 SerCx2 呼叫 EvtSerCx2PioTransmitEnableReadyNotification 函式以啟用另一個通知之前,不會再傳送任何通知。

EvtSerCx2PioTransmitWriteBuffer 函式呼叫可能只會部分完成 PIO 傳輸交易,因為傳輸 FIFO 中沒有更多空間可立即使用,以寫入更多數據。 在此情況下, SerCx2 會呼叫 EvtSerCx2PioTransmitEnableReadyNotification 函式來啟用就緒的通知,在此情況下,當傳輸 FIFO 具有更多數據的空間時,序列控制器驅動程式必須通知 SerCx2。 為了回應此通知,SerCx2 會再次呼叫 EvtSerCx2PioTransmitWriteBuffer 函 式,繼續部分完成的傳輸交易。

一般而言, EvtSerCx2PioTransmitEnableReadyNotification 函式會啟用當序列控制器中的傳輸 FIFO 準備好接受更多數據時所發生的中斷。 為了回應此中斷,序列控制器驅動程式會呼叫 SerCx2PioTransmitReady

一次不能有一個以上的就緒通知擱置。 如果已啟用就緒通知,SerCx2 永遠不會呼叫 EvtSerCx2PioTransmitEnableReadyNotification 函式。

啟用就緒通知時,SerCx2 永遠不會呼叫 EvtSerCx2PioTransmitWriteBuffer 函 式。

如果相關聯的寫入要求逾時或取消,則可以取消擱置就緒通知。 若要取消 PIO 傳輸交易的就緒通知, SerCx2 會呼叫 EvtSerCx2PioTransmitCancelReadyNotification 事件回呼函式。

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

範例

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

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

EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION  MyPioTransmitEnableReadyNotification;

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

_Use_decl_annotations_
VOID
  MyPioTransmitEnableReadyNotification(
    SERCX2PIOTRANSMIT  PioTransmit
    )
  {...}

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

規格需求

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

另請參閱

EvtSerCx2PioTransmitWriteBuffer

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate

SerCx2PioTransmitReady