EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO回呼函式 (sercx.h)

EvtSerCx2PioTransmitCancelDrainFifo 事件回呼函式是由序列架構延伸模組的第 2 版呼叫, (SerCx2) 取消先前的要求,以清空序列控制器硬體中的傳輸 FIFO。

語法

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO EvtSercx2PioTransmitCancelDrainFifo;

BOOLEAN EvtSercx2PioTransmitCancelDrainFifo(
  [in] SERCX2PIOTRANSMIT PioTransmit
)
{...}

參數

[in] PioTransmit

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

傳回值

如果 EvtSerCx2PioTransmitCancelDrainFifo 函式成功取消擱置的清空要求,而且序列控制器驅動程式可以保證它不會呼叫 SerCx2PioTransmitDrainFifoComplete 方法來通知 SerCx2 已清空 FIFO。 否則,此函式會傳回 FALSE ,表示驅動程式已呼叫或即將呼叫 SerCx2PioTransmitDrainFifoComplete

備註

您的序列控制器驅動程式可以作為選項來實作此函式。 如果實作,驅動程式會在 SerCx2PioTransmitCreate 呼叫中註冊函式,以建立 PIO 傳輸物件。

如果您的驅動程式具有硬體 FIFO (或類似的緩衝機制) ,則如果序列控制器具有硬體 FIFO (或類似的緩衝機制,則應該實作 EvtSerCx2PioTransmitCancelDrainFifo 函式,以保存傳輸數據。 如果您的驅動程序實作此函式,它也必須實作 EvtSerCx2PioTransmitDrainFifoEvtSerCx2PioTransmitPurgeFifo 事件回呼函式。

SerCx2 會呼叫 EvtSerCx2PioTransmitDrainFifo 事件回呼函式,要求序列控制器驅動程式清空傳輸 FIFO,然後等候序列控制器驅動程式呼叫 SerCx2PioTransmitDrainFifoComplete。 清空作業可能需要無限時間才能完成。 因此,如果寫入要求在清空作業進行時逾時或取消, SerCx2 會呼叫 EvtSerCx2PioTransmitCancelDrainFifo 函式,在完成之前取消擱置的清空作業。

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

範例

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

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

EVT_SERCX2_PIO_TRANSMIT_CANCEL_DRAIN_FIFO  MyPioTransmitCancelDrainFifo;

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

_Use_decl_annotations_
BOOLEAN
  MyPioTransmitCancelDrainFifo(
    SERCX2PIOTRANSMIT  PioTransmit
    )
  {...}

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

規格需求

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

另請參閱

EvtSerCx2PioTransmitDrainFifo

EvtSerCx2PioTransmitPurgeFifo

IOCTL_SERIAL_PURGE

IRP_MJ_WRITE

SERCX2PIOTRANSMIT

SerCx2PioTransmitCreate

SerCx2PioTransmitDrainFifoComplete