EVT_SERCX_CONTROL回呼函式 (sercx.h)
EvtSerCxControl 事件回呼函式會處理 I/O 控件要求,該要求具有序列架構延伸模組 (SerCx) 支援的 I/O 控件程式代碼 (IOCTL)。
語法
EVT_SERCX_CONTROL EvtSercxControl;
NTSTATUS EvtSercxControl(
[in] WDFDEVICE Device,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
參數
[in] Device
代表序列控制器之架構裝置物件的WDFDEVICE句柄。
[in] Request
代表 I/O 控制件要求的架構要求物件的 WDFREQUEST 句柄。
[in] OutputBufferLength
指定 Request 參數所指定之 I/O 控件要求的輸出緩衝區長度,以位元組為單位。
[in] InputBufferLength
指定 Request 參數所指定之 I/O 控件要求的輸入緩衝區長度,以位元組為單位。
[in] IoControlCode
從 Request 參數所指定的 I/O 控件要求指定 IOCTL。
傳回值
如果呼叫成功,EvtSerCxControl 函式會傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤狀態代碼。 如需詳細資訊,請參閱下列一節。
言論
需要序列控制器驅動程式才能實作這個回呼函式。 SerCx 會呼叫此函式,將 I/O 控件要求交給控制器驅動程式進行處理。 在此函式傳回之前,它必須藉由執行要求的作業或傳回錯誤狀態來完成要求。 未實作特定要求支持的驅動程式應該傳回此要求STATUS_NOT_IMPLEMENTED錯誤狀態。
一般而言,EvtSerCxControl 函式應該先同步處理至控制器驅動程式的 ISR,然後此函式才會變更序列控制器硬體快取器中的設定。
EvtSerCxControl 函式的傳回值必須符合此函式寫入 I/O 控制項要求狀態區塊的狀態值。 SerCx 會使用傳回值來追蹤控制器驅動程式和序列控制器硬體的狀態。
以下是此回呼函式必須準備好處理之 IOCTL 的清單:
IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTRIOCTL_SERIAL_CLR_RTSIOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARSIOCTL_SERIAL_GET_COMMSTATUSIOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_HANDFLOWIOCTL_SERIAL_IMMEDIATE_CHARIOCTL_SERIAL_GET_LINE_CONTROLIOCTL_SERIAL_GET_MODEM_CONTROLIOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATEIOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ONIOCTL_SERIAL_SET_CHARSIOCTL_SERIAL_SET_DTRIOCTL_SERIAL_SET_FIFO_CONTROLIOCTL_SERIAL_SET_HANDFLOWIOCTL_SERIAL_SET_LINE_CONTROLIOCTL_SERIAL_SET_MODEM_CONTROLIOCTL_SERIAL_SET_RTSIOCTL_SERIAL_SET_XOFFIOCTL_SERIAL_SET_XONIOCTL_SERIAL_XOFF_COUNTER 若要註冊 EvtSerCxControl 回呼函式,控制器驅動程式會在 EvtDriverDeviceAdd 回呼期間呼叫 SerCxInitialize 方法。
例子
此回呼的函式類型會在 Sercx.h 中宣告,如下所示。
typedef NTSTATUS
EVT_SERCX_CONTROL(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
);
若要定義名為 MyEvtSerCxControl
的 EvtSerCerCxControl 回呼函式,您必須先提供 靜態驅動程序驗證器 (SDV) 和其他驗證工具所需的函式宣告,如下所示。
EVT_SERCX_CONTROL MyEvtSerCxControl;
然後,如下所示實作您的回呼函式。
NTSTATUS
MyEvtSerCxControl(
__in WDFREQUEST Request,
__in size_t OutputBufferLength,
__in size_t InputBufferLength,
__in ULONG IoControlCode
)
{ ... }
如需函數宣告之 SDV 需求的詳細資訊,請參閱 使用 KMDF 驅動程式的函式角色類型來宣告函式。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 桌面 |
標頭 | sercx.h |
IRQL | 在 IRQL <= DISPATCH_LEVEL 呼叫 |