Função SpbControllerSetIoOtherCallback (spbcx.h)
O método SpbControllerSetIoOtherCallback registra a 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 do 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 um EvtIoInCallerContext função de retorno de chamada 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 EvtSpbControllerIoOther retorno de chamada. 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.
Valor de retorno
Nenhum
Observações
Esse método fornece uma maneira para 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 motorista. 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 o código de status de erro 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 que 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 dos IOCTLs compatíveis com o SpbCx, consulte códigos de controle de E/S SpbCx.
A função opcional EvtIoInCallerContext de retorno de chamada é 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 for 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 confirma objeto do dispositivo, ou seja, antes de retornar do EvtDriverDeviceAdd retorno de chamada 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 |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 8. |
da Plataforma de Destino | Universal |
cabeçalho | spbcx.h |
biblioteca | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |