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
EvtIoInCallerContext 回呼函式的指標,該函式會在 I/O 控制項要求第一次到達控制器的 I/O 佇列時呼叫,而且要求包含 SPB 架構延伸模組 (SpbCx) 無法辨識的 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 開始提供。 |
目標平臺 | 普遍 |
標頭 | spbcx.h |
連結庫 | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |