共用方式為


EVT_SERCX_PURGE回呼函式 (sercx.h)

EvtSerCxPurge 事件回呼函式是由序列架構延伸模組 (SerCx) 呼叫,以清除序列控制器的硬體緩衝區。

語法

EVT_SERCX_PURGE EvtSercxPurge;

NTSTATUS EvtSercxPurge(
  [in] WDFDEVICE Device,
  [in] ULONG PurgeMask
)
{...}

參數

[in] Device

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

[in] PurgeMask

一組旗標,描述要清除的硬體緩衝區。 目前,沒有針對序列控制器所執行的清除作業定義旗標。 如需詳細資訊,請參閱。

傳回值

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

言論

序列控制器驅動程序會實作這個回呼函式。 SerCx 會在用戶端(應用程式或周邊驅動程式)傳送 IOCTL_SERIAL_PURGE 控件要求,要求清除序列控制器所管理的硬體緩衝區時,呼叫此函式。

SerCx 會執行下表所列旗標所指定的清除作業。

旗標位 意義
SERIAL_PURGE_RXABORT 清除所有讀取要求。
SERIAL_PURGE_RXCLEAR 如果輸入緩衝區存在,請清除輸入緩衝區。 會捨棄此緩衝區中的任何接收數據。
SERIAL_PURGE_TXABORT 清除所有寫入要求。
SERIAL_PURGE_TXCLEAR 如果輸出緩衝區存在,請清除輸出緩衝區。 會捨棄此緩衝區中的任何傳輸數據。
 

EvtSerCxPurge 函式永遠不會收到包含此數據表中任何旗標的清除要求。 SERIAL_PURGE_XXX 旗標定義於 Ntddser.h 頭檔中。

目前,不會定義SERIAL_PURGE_XXX 旗標來指定序列控制器驅動程式所執行的清除作業,而且序列控制器驅動程式應該不會執行清除作業,以回應 EvtSerCxPurge 呼叫。

如果 IOCTL_SERIAL_PURGE 控件要求需要取消暫止的讀取或寫入要求,則 SerCx 會先取消這些要求,再呼叫 EvtSerCxPurge 函式。

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

例子

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

typedef NTSTATUS
  EVT_SERCX_PURGE(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    );

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

EVT_SERCX_PURGE MyEvtSerCxPurge;

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

NTSTATUS
  MyEvtSerCxPurge(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    )
{ ... }

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

要求

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

另請參閱

EvtDriverDeviceAdd

IOCTL_SERIAL_PURGE

SerCxInitialize