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 |