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 |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱提交並檢視相關的意見反應