Função SpbControllerSetIoOtherCallback (spbcx.h)

O método SpbControllerSetIoOtherCallback registra uma função de retorno de chamada EvtSpbControllerIoOther do driver SPB.

Sintaxe

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

Parâmetros

[in] FxDevice

Um identificador WDFDEVICE para o objeto de dispositivo que representa o controlador SPB.

[in] EvtSpbControllerIoOther

Um ponteiro para uma função de retorno de chamada EvtSpbControllerIoOther . O driver do controlador SPB implementa essa função. A extensão da estrutura SPB (SpbCx) chama essa função para passar uma solicitação de controle de E/S para o driver do controlador. Para obter mais informações sobre o tipo de solicitações de E/S passadas para essa função, consulte a seção Comentários a seguir.

[in, optional] EvtIoInCallerContext

Um ponteiro para uma função de retorno de chamada EvtIoInCallerContext que é chamada quando uma solicitação de controle de E/S chega pela primeira vez à fila de E/S do controlador e a solicitação contém um código IOCTL que a extensão da estrutura SPB (SpbCx) não reconhece. Esse retorno de chamada é executado no contexto de processo do originador da solicitação e pode pré-processar solicitações que posteriormente serão processadas pelo retorno de chamada EvtSpbControllerIoOther . Esse parâmetro é opcional e pode ser especificado como NULL se nenhum pré-processamento for necessário. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

Nenhum

Comentários

Esse método fornece uma maneira de o driver do controlador SPB declarar seu suporte para IOCTLs (códigos de controle de E/S) personalizados que são específicos do barramento ou específicos do driver. Se o driver do controlador SPB não chamar esse método, o SpbCx rejeitará todas essas solicitações de controle de E/S e o driver do controlador SPB nunca as verá.

O SpbCx gerencia a fila de E/S para o controlador SPB. Por padrão, se o SpbCx receber uma solicitação de controle de E/S que tenha um IOCTL sem suporte, o SpbCx concluirá a solicitação com erro status código STATUS_INVALID_DEVICE_REQUEST.

No entanto, ao chamar SpbControllerSetIoOtherCallback, o driver do controlador SPB declara seu suporte para solicitações de controle de E/S às quais a extensão da estrutura SPB (SpbCx) não dá suporte. Nesse caso, quando o SpbCx recebe uma solicitação de controle de E/S que tem um código IOCTL que não dá suporte, o SpbCx chama a função EvtSpbControllerIoOther para passar a solicitação para o driver do controlador SPB para processamento. O driver do controlador SPB é responsável por concluir a solicitação.

Para obter uma lista das IOCTLs compatíveis com o SpbCx, confira Códigos de controle de E/S do SpbCx.

A função opcional de retorno de chamada EvtIoInCallerContext é executada no contexto de processo do originador da solicitação e pode pré-processar parâmetros de solicitação dependentes de contexto, como ponteiros de buffer, antes que a solicitação seja passada para a função de retorno de chamada EvtSpbControllerIoOther . Quando a função EvtIoInCallerContext é chamada, qualquer contexto por solicitação que o driver do controlador SPB solicitou em uma chamada anterior para SpbControllerSetRequestAttributes já será alocado e atribuído à solicitação.

O driver do controlador SPB deve chamar esse método antes de confirmar o objeto do dispositivo, ou seja, antes de retornar do retorno de chamada EvtDriverDeviceAdd ou adicionar o PDO à lista filho do controlador. A lista filho representa os dispositivos anexados ao barramento. Para obter mais informações, consulte Enumerando os dispositivos em um barramento.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Plataforma de Destino Universal
Cabeçalho spbcx.h
Biblioteca Spbcxstubs.lib
IRQL PASSIVE_LEVEL

Confira também

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes