EVT_SERCX_WAITMASK回呼函式 (sercx.h)
EvtSerCxWaitmask 事件回呼函式會設定序列控制器來監視等候掩碼中的事件,這是指定一組硬體事件的位掩碼值。
語法
EVT_SERCX_WAITMASK EvtSercxWaitmask;
NTSTATUS EvtSercxWaitmask(
[in] WDFDEVICE Device
)
{...}
參數
[in] Device
代表序列控制器之架構裝置物件的WDFDEVICE句柄。
傳回值
EvtSerCxWaitmask 函式會在呼叫成功時傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤狀態代碼。
言論
序列控制器驅動程序會實作這個回呼函式。 序列架構延伸模組 (SerCx) 會呼叫此函式,以在等候遮罩變更時通知驅動程式。 在此呼叫期間,EvtSerCxWaitmask 函式會呼叫 SerCxGetWaitMask 方法來取得新的等候遮罩。 驅動程式會立即開始監視新等候掩碼中的事件,並捨棄先前 EvtSerCerCxWaitmask 呼叫中可能提供的任何舊等候掩碼。 如果新的等候遮罩為零,驅動程式只會捨棄舊的等候遮罩,並停止監視任何等候遮罩事件。
當 SerCx 從用戶端收到 IOCTL_SERIAL_SET_WAIT_MASK 要求時,SerCx 中的要求處理程式會呼叫 EvtSerCxWaitmask 函式來設定新的等候遮罩。 如需等候遮罩可指定之事件類型的詳細資訊,請參閱 SERIAL_EV_XXX。
EvtSerCxWaitmask 函式會設定序列控制器硬體,以監視新等候掩碼中的事件。 一般而言,函式會啟用這些事件的中斷。 設定硬體之後,函式應該會立即傳回,而不會等待等候遮罩中的事件發生。
稍後,當等候掩碼中的事件造成中斷時,序列控制器驅動程式中的ISR會排程執行 DPC 函式。 此 DPC 函式會呼叫 SerCxCompleteWait 方法來通知 SerCx 事件。
一開始,在客戶端開啟與序列埠的連線,並在第一個 EvtSerCxWaitmask 呼叫之前,等候遮罩實際上為零,而且序列控制器驅動程式不會監視任何 SERIAL_EV_XXX 事件。
若要註冊 EvtSerCxWaitmask 回呼函式,控制器驅動程式會在 EvtDriverDeviceAdd 回呼期間呼叫 SerCxInitialize 方法。
例子
此回呼的函式類型會在 Sercx.h 中宣告,如下所示。
typedef NTSTATUS
EVT_SERCX_WAITMASK(
__in WDFDEVICE Device
);
若要定義名為 MyEvtSerCxWaitmask
的 EvtSerCxWaitmask 回呼函式,您必須先提供 靜態驅動程式驗證器 (SDV) 和其他驗證工具所需的函式宣告,如下所示。
EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;
然後,如下所示實作您的回呼函式。
NTSTATUS
MyEvtSerCxWaitmask(
__in WDFDEVICE Device
)
{ ... }
如需函數宣告之 SDV 需求的詳細資訊,請參閱 使用 KMDF 驅動程式的函式角色類型來宣告函式。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 桌面 |
標頭 | sercx.h |
IRQL | 在 IRQL <= DISPATCH_LEVEL 呼叫 |