Partilhar via


DIF_SELECTBESTCOMPATDRV

Observação

Essa solicitação foi preterida no Windows 10 versão 1703 (Redstone 2). Em versões mais recentes do Windows, esse retorno de chamada não é mais invocado.

Uma solicitação de DIF_SELECTBESTCOMPATDRV permite que um instalador selecione o melhor driver na lista de driver compatíveis do elemento de informações do dispositivo.

Quando enviado

Quando o sistema operacional está se preparando para instalar um novo dispositivo PnP ou está executando uma operação de change-driver em um dispositivo PnP.

Normalmente, essa solicitação DIF é usada durante uma configuração de PnP. Se um dispositivo estiver sendo instalado manualmente, o Windows enviará uma solicitação DIF_SELECTDEVICE .

Quem manipula

Co-instalador de classe

Pode manipular

Co-instalador de dispositivo

Não manipula

Instalador de Classe

Pode manipular

Entrada do instalador

DeviceInfoSet
Fornece um identificador para o conjunto de informações do dispositivo que contém o dispositivo.

DeviceInfoData
Fornece um ponteiro para uma estrutura SP_DEVINFO_DATA que identifica o dispositivo no conjunto de informações do dispositivo.

Parâmetros de instalação do dispositivo
Há parâmetros de instalação do dispositivo (SP_DEVINSTALL_PARAMS) associados ao DeviceInfoData.

Parâmetros de instalação de classe
Nenhum

Saída do instalador

Parâmetros de instalação do dispositivo
Um instalador pode modificar os parâmetros de instalação do dispositivo. No entanto, eles normalmente não fazem ao lidar com essa solicitação DIF.

DeviceInfoData
Como efeito colateral, um instalador pode modificar a lista de drivers associada ao DeviceInfoData, em particular, o SP_DRVINSTALL_PARAMS.

Valor retornado do instalador

Um co-instalador pode retornar NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED ou um código de erro Win32.

Se um instalador de classe lidar com êxito com essa solicitação e SetupDiCallClassInstaller chamar posteriormente o manipulador padrão, o instalador de classe retornará ERROR_DI_DO_DEFAULT.

Se o instalador de classe manipular essa solicitação com êxito, incluindo chamar diretamente o manipulador padrão, o instalador de classe deverá retornar NO_ERROR e SetupDiCallClassInstaller não chamará o manipulador padrão novamente.

Nota O instalador de classe pode chamar diretamente o manipulador padrão, mas o instalador de classe nunca deve tentar substituir as operações do manipulador padrão.

Para obter mais informações sobre como chamar o manipulador padrão, consulte Chamando manipuladores de código DIF padrão.

Se o instalador de classe encontrar um erro, o instalador deverá retornar um código de erro Win32 apropriado e SetupDiCallClassInstaller não chamará posteriormente o manipulador padrão.

Manipulador de código DIF padrão

SetupDiSelectBestCompatDrv

Operação do instalador

Um instalador manipula essa solicitação DIF para participar da seleção de um driver para um dispositivo PnP. Um instalador normalmente responde a essa solicitação DIF de uma das seguintes maneiras:

  • Não fazer nada.

    Se um instalador não tiver requisitos de seleção especiais, ele não fará nada em resposta a essa solicitação DIF. Um instalador de classe retorna ERROR_DI_DO_DEFAULT e um co-instalador retorna NO_ERROR.

  • Modifique os parâmetros de um ou mais drivers na lista de drivers.

    Por exemplo, um instalador pode remover um driver da consideração para o dispositivo marcando-o DNF_BAD_DRIVER. Um instalador modifica os parâmetros do driver seguindo estas etapas:

    1. Obtenha as informações sobre o primeiro driver na lista chamando SetupDiEnumDriverInfo e SetupDiGetDriverInstallParams. Se apropriado, modifique os parâmetros de driver e aplique a alteração chamando SetupDiSetDriverInstallParams.

      Se um driver for uma opção de pior caso, defina a classificação do driver como 0xFFFF ou superior nos parâmetros de instalação do driver. Confira Como o Windows seleciona drivers para obter mais informações.

    2. Repita a etapa anterior até que você tenha processado todos os drivers na lista. Certifique-se de incrementar o parâmetro MemberIndex para SetupDiEnumDriverInfo , conforme descrito na página de referência dessa função.

    Depois que um instalador de classe modifica a lista de drivers, ele retorna ERROR_DI_DO_DEFAULT. Se um co-instalador modificar a lista de driveres, ele deverá fazer isso no pré-processamento e retornar NO_ERROR.

  • Selecione o melhor driver para o dispositivo.

    Essa ação é menos comum, mas um instalador pode escolher o melhor driver para o dispositivo. Esse instalador examinaria os dados de cada driver, escolheria um driver e chamaria SetupDiSetSelectedDriver para definir o driver. Depois que um instalador define o driver selecionado, ele retorna NO_ERROR.

    Se um co-instalador selecionar um driver, ele deverá fazer isso no pós-processamento.

Para obter mais informações sobre códigos DIF, consulte Manipulando códigos DIF.

Requisitos

Versão

Com suporte no Microsoft Windows 2000 e versões posteriores do Windows.

Cabeçalho

Setupapi.h (inclua Setupapi.h)

Confira também

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS