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 呼叫 |