Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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
Дескриптор WDFDEVICE для объекта устройства, представляющего контроллер SPB.
[in] EvtSpbControllerIoOther
Указатель на функцию обратного вызова EvtSpbControllerIoOther. Драйвер контроллера SPB реализует эту функцию. Расширение платформы SPB (SpbCx) вызывает эту функцию для передачи запроса элемента управления ввода-вывода драйверу контроллера. Дополнительные сведения о типе запросов ввода-вывода, передаваемых этой функции, см. в следующем разделе "Примечания".
[in, optional] EvtIoInCallerContext
Указатель на функцию обратного вызова EvtIoInCallerContext, которая вызывается при первом поступлении запроса управления ввода-вывода в очередь ввода-вывода контроллера, а запрос содержит код IOCTL, который не распознает расширение платформы SPB (SpbCx). Этот обратный вызов выполняется в контексте процесса инициатора запроса и может предварительно обработать запросы, которые позже будут обработаны EvtSpbControllerIoOther обратного вызова. Этот параметр является необязательным и может быть указан как NULL, если такая предварительная обработка не требуется. Дополнительные сведения см. в следующем разделе "Примечания".
Возвращаемое значение
Никакой
Замечания
Этот метод позволяет драйверу контроллера SPB объявить поддержку пользовательских кодов управления ввода-вывода (IOCTLs), относящихся к шине или драйверу. Если драйвер контроллера SPB не вызывает этот метод, SpbCx отклоняет все такие запросы управления ввода-вывода, а драйвер контроллера SPB никогда не видит их.
SpbCx управляет очередью ввода-вывода для контроллера SPB. По умолчанию, если SpbCx получает запрос управления ввода-вывода, имеющий IOCTL, который не поддерживается, SpbCx завершает запрос с кодом состояния ошибки STATUS_INVALID_DEVICE_REQUEST.
Однако путем вызова SpbControllerSetIoOtherCallbackдрайвер контроллера SPB объявляет поддержку запросов управления ввода-вывода, что расширение платформы SPB (SpbCx) не поддерживает. В этом случае, когда SpbCx получает запрос управления ввода-вывода с кодом IOCTL, который не поддерживается, SpbCx вызывает функцию EvtSpbControllerIoOther, чтобы передать запрос драйверу контроллера SPB для обработки. Драйвер контроллера SPB отвечает за выполнение запроса.
Список списков операций ввода-вывода, поддерживаемых SpbCx, см. в разделе Коды элементов управления SpbCx ввода-вывода.
Необязательная функция обратного вызова EvtIoInCallerContext выполняется в контексте процесса инициатора запроса и может предварительно обработать параметры запроса, зависящие от контекста, такие как указатели буфера, перед передачей запроса в функцию обратного вызова EvtSpbControllerIoOther. При вызове функции EvtIoInCallerContext любой контекст для каждого запроса, запрошенный драйвером контроллера SPB в предыдущем вызове SpbControllerSetRequestAttributes уже будет выделен и назначен запросу.
Драйвер контроллера SPB должен вызвать этот метод, прежде чем он фиксирует объект устройства, то есть, прежде чем он возвращается из EvtDriverDeviceAdd обратного вызова или добавляет PDO в дочерний список контроллера. Дочерний список представляет устройства, подключенные к шине. Дополнительные сведения см. в разделе Перечисление устройств вшины.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8. |
целевая платформа | Всеобщий |
заголовка | spbcx.h |
библиотеки | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |