spbControllerSetIoOtherCallback 函式 (spbcx.h)

SpbControllerSetIoOtherCallback 方法會註冊 SPB 控制器驅動程式的 EvtSpbControllerIoOther 回呼函式。

語法

void SpbControllerSetIoOtherCallback(
  [in]           WDFDEVICE                    FxDevice,
  [in]           PFN_SPB_CONTROLLER_OTHER     EvtSpbControllerIoOther,
  [in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);

參數

[in] FxDevice

代表SPB控制器之裝置物件的WDFDEVICE句柄。

[in] EvtSpbControllerIoOther

EvtSpbControllerIoOther 回呼函式的指標。 SPB 控制器驅動程式會實作此函式。 SPB 架構延伸模組 (SpbCx) 呼叫此函式,以將 I/O 控制要求傳遞至控制器驅動程式。 如需傳遞至此函式之 I/O 要求類型的詳細資訊,請參閱下列一節。

[in, optional] EvtIoInCallerContext

當 I/O 控件要求第一次抵達控制器的 I/O 佇列時呼叫 EvtIoInCallerContext 回呼函式的指標,要求包含 SPB 架構延伸模組 (SpbC) x 無法辨識的 IOCTL 程式代碼。 此回呼會在要求原始程式的進程內容中執行,並可預先處理稍後由 EvtSpbControllerIoOther 回呼處理的要求。 此參數是選擇性的,如果不需要這類前置處理,則可以指定為NULL。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

備註

這個方法可讓您的SPB控制器驅動程式宣告其對自定義I/O控件代碼的支援, (IOCTLs) 為總線特定或驅動程式特定。 如果SPB控制器驅動程式未呼叫此方法,SpbCx 會拒絕所有這類 I/O 控制要求,而SPB控制器驅動程序永遠不會看到它們。

SpbCx 會管理SPB控制器的 I/O 佇列。 根據預設,如果SpbCx收到I/O控件要求,且IOCTL不支援,SpbCx就會完成要求,並STATUS_INVALID_DEVICE_REQUEST錯誤狀態代碼。

不過,藉由呼叫 SpbControllerSetIoOtherCallback,SPB 控制器驅動程式會宣告其支援 SPB 架構擴充功能 (SpbCx) 不支援的 I/O 控件要求。 在此情況下,當 SpbCx 收到 I/O 控制器要求,該要求具有不支援的 IOCTL 程式代碼時,SpbCx 會呼叫 EvtSpbControllerIoOther 函式,以將要求傳遞至 SPB 控制器驅動程式進行處理。 SPB 控制器驅動程序負責完成要求。

如需SpbCx支援的IOCTLs清單,請參閱 SpbCx I/O控件代碼

選擇性 的 EvtIoInCallerContext 回呼函式會在要求原始程式的進程內容中執行,而且可以在要求傳遞至 EvtSpbControllerIoOther 回呼函式之前,預先處理內容相依的要求參數,例如緩衝區指標。 呼叫 EvtIoInCallerContext 函式時,SPB 控制器驅動程式在先前對 SpbControllerSetRequestAttributes 的呼叫中要求的任何個別要求內容,都將已配置並指派給要求。

SPB 控制器驅動程式必須在 認可 裝置物件之前呼叫這個方法,也就是說,在從 EvtDriverDeviceAdd 回呼傳回之前,或將 PDO 新增至控制器的子清單。 子清單代表連接到總線的裝置。 如需詳細資訊,請參閱 列舉總線上的裝置

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 Universal
標頭 spbcx.h
程式庫 Spbcxstubs.lib
IRQL PASSIVE_LEVEL

另請參閱

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes