Función SpbControllerSetIoOtherCallback (spbcx.h)

El método SpbControllerSetIoOtherCallback registra la función de devolución de llamada EvtSpbControllerIoOther del controlador SPB.

Sintaxis

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

Parámetros

[in] FxDevice

Identificador WDFDEVICE para el objeto de dispositivo que representa el controlador SPB.

[in] EvtSpbControllerIoOther

Puntero a una función de devolución de llamada EvtSpbControllerIoOther . El controlador del controlador SPB implementa esta función. La extensión del marco spB (SpbCx) llama a esta función para pasar una solicitud de control de E/S al controlador del controlador. Para obtener más información sobre el tipo de solicitudes de E/S que se pasan a esta función, consulte la siguiente sección Comentarios.

[in, optional] EvtIoInCallerContext

Puntero a una función de devolución de llamada EvtIoInCallerContext a la que se llama cuando una solicitud de control de E/S llega por primera vez a la cola de E/S del controlador y la solicitud contiene un código IOCTL que la extensión de marco de SPB (SpbCx) no reconoce. Esta devolución de llamada se ejecuta en el contexto de proceso del originador de la solicitud y puede preprocesar las solicitudes que más adelante procesarán la devolución de llamada EvtSpbControllerIoOther . Este parámetro es opcional y se puede especificar como NULL si no se requiere este preprocesamiento. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

None

Observaciones

Este método proporciona una manera de que el controlador del controlador SPB declare su compatibilidad con códigos de control de E/S personalizados (IOCTLs) específicos del bus o específicos del controlador. Si el controlador del controlador SPB no llama a este método, SpbCx rechaza todas esas solicitudes de control de E/S y el controlador del controlador SPB nunca los ve.

SpbCx administra la cola de E/S para el controlador SPB. De forma predeterminada, si SpbCx recibe una solicitud de control de E/S que tiene un IOCTL que no es compatible, SpbCx completa la solicitud con código de estado de error STATUS_INVALID_DEVICE_REQUEST.

Sin embargo, mediante una llamada a SpbControllerSetIoOtherCallback, el controlador de SPB declara su compatibilidad con las solicitudes de control de E/S que la extensión del marco spB (SpbCx) no admite. En este caso, cuando SpbCx recibe una solicitud de control de E/S que tiene un código IOCTL que no es compatible, SpbCx llama a la función EvtSpbControllerIoOther para pasar la solicitud al controlador del controlador SPB para su procesamiento. El controlador del controlador SPB es responsable de completar la solicitud.

Para obtener una lista de las E/S que admite SpbCx, consulte Códigos de control de E/S de SpbCx.

La función de devolución de llamada EvtIoInCallerContext opcional se ejecuta en el contexto de proceso del originador de la solicitud y puede preprocesar parámetros de solicitud dependientes del contexto, como punteros de búfer, antes de pasar la solicitud a la función de devolución de llamada EvtSpbControllerIoOther . Cuando se llama a la función EvtIoInCallerContext , cualquier contexto por solicitud que el controlador spB solicitó en una llamada anterior a SpbControllerSetRequestAttributes ya se asignará y asignará a la solicitud.

El controlador del controlador SPB debe llamar a este método antes de confirmar el objeto de dispositivo, es decir, antes de que vuelva de la devolución de llamada EvtDriverDeviceAdd o agregue el PDO a la lista secundaria del controlador. La lista secundaria representa los dispositivos conectados al bus. Para obtener más información, vea Enumerar los dispositivos en un bus.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Plataforma de destino Universal
Encabezado spbcx.h
Library Spbcxstubs.lib
IRQL PASSIVE_LEVEL

Consulte también

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes