共用方式為


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
    );

若要定義名為 MyEvtSerCxControlEvtSerCerCxControl 回呼函式,您必須先提供 靜態驅動程序驗證器 (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 呼叫

另請參閱

EvtDriverDeviceAdd

SerCxInitialize