Manipulando códigos DIF
Observação
Não há suporte para os recursos descritos nesta seção e os pacotes de driver que os contêm não receberão mais uma assinatura da Microsoft. Consulte Usando um arquivo INF universal.
Os aplicativos de instalação de dispositivo enviam códigos de função de instalação do dispositivo (códigos DIF) para instaladores chamando SetupDiCallClassInstaller. Essa função, por sua vez, chama a função de ponto de entrada do instalador. Para obter uma descrição dos pontos de entrada do instalador, confira:
A página de referência para cada código DIF contém as seguintes seções:
Quando enviado
Descreve os horários típicos em que e os motivos pelos quais um aplicativo de instalação de dispositivo envia essa solicitação DIF.
Quem manipula
Especifica quais instaladores têm permissão para lidar com essa solicitação. Os instaladores incluem instaladores de classe, co-instaladores de classe (co-instaladores de toda a classe de instalação) e co-instaladores de dispositivo (co-instaladores específicos do dispositivo).
Entrada do instalador
Além do código DIF, SetupDiCallClassInstaller fornece informações adicionais relevantes para a solicitação específica. Consulte a página de referência para cada código DIF para obter detalhes sobre as informações fornecidas com cada solicitação. A lista a seguir contém uma descrição geral dos parâmetros de entrada adicionais e lista as funções de instalação do dispositivo (funçõesSetupDiXxx ) que os instaladores podem chamar para lidar com os parâmetros:
DeviceInfoSet
Fornece um identificador para o conjunto de informações do dispositivo.
O identificador é opaco. Use o identificador, por exemplo, para identificar as informações do dispositivo definidas em chamadas para funções SetupDiXxx .
O DeviceInfoSet pode ter uma classe de configuração de dispositivo associada. Nesse caso, chame SetupDiGetDeviceInfoListClass para obter o GUID da classe.
DeviceInfoData
Opcionalmente, fornece um ponteiro para uma estrutura SP_DEVINFO_DATA que identifica um dispositivo no conjunto de informações do dispositivo.
Parâmetros de instalação do dispositivo
Esses parâmetros indiretos fornecem informações para a instalação do dispositivo em uma estrutura SP_DEVINSTALL_PARAMS . Se DeviceInfoData não for NULL, haverá parâmetros de instalação do dispositivo associados ao DeviceInfoData. Se DeviceInfoData for NULL, os parâmetros de instalação do dispositivo serão associados ao DeviceInfoSet.
Chame SetupDiGetDeviceInstallParams para obter os parâmetros de instalação do dispositivo.
Parâmetros de instalação de classe
Os parâmetros indiretos opcionais são específicos para a solicitação DIF específica. Estes são essencialmente "parâmetros de solicitação DIF". Por exemplo, os parâmetros de instalação de classe para uma solicitação de instalação DIF_REMOVE estão contidos em uma estrutura SP_REMOVEDEVICE_PARAMS.
Cada estrutura SP_XXX_PARAMS começa com uma estrutura de SP_CLASSINSTALL_HEADER de tamanho fixo.
Chame SetupDiGetClassInstallParams para obter os parâmetros de instalação da classe.
Se uma solicitação DIF tiver parâmetros de instalação de classe, haverá um conjunto de parâmetros associados ao DeviceInfoSet e outro conjunto de parâmetros associados ao DeviceInfoData (se a solicitação DIF especificar DeviceInfoData). SetupDiGetClassInstallParams retorna os parâmetros mais específicos disponíveis.
Contexto
Os co-instaladores têm um parâmetro de contexto opcional.
Saída do instalador
Descreve a saída esperada para esse código DIF.
Se um instalador modificar os parâmetros de instalação do dispositivo, o instalador deverá chamar SetupDiSetDeviceInstallParams para aplicar as alterações antes de retornar. Da mesma forma, se um instalador modificar os parâmetros de instalação de classe para o código DIF, o instalador deverá chamar SetupDiSetClassInstallParams.
Valor retornado do instalador
Especifica os valores retornados apropriados para o código DIF. Consulte a figura a seguir para obter mais informações sobre valores retornados.
Manipulador de código DIF padrão
Especifica a função SetupDiXxx que executa as operações padrão definidas pelo sistema para o código DIF. Nem todos os códigos DIF têm um manipulador padrão. A menos que um co-instalador ou instalador de classe execute etapas para impedir que o manipulador padrão seja chamado, SetupDiCallClassInstaller chama o manipulador padrão para um código DIF depois de chamar o instalador de classe (mas antes de chamar os co-instaladores registrados para pós-processamento).
Se um instalador de classe manipular com êxito um código DIF e SetupDiCallClassInstaller precisar chamar posteriormente o manipulador padrão, o instalador de classe retornará ERROR_DI_DO_DEFAULT.
Se o instalador de classe manipular com êxito um código DIF, 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. Observe que 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.
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.
Os co-instaladores não devem chamar manipuladores de código DIF padrão.
Operação do instalador
Descreve as etapas típicas que um instalador pode executar para lidar com a solicitação DIF.
Consulte Também
Lista fontes de informações relacionadas.
A figura a seguir mostra a sequência de eventos em SetupDiCallClassInstaller para processar um código DIF.
O sistema operacional executa algumas operações para cada código DIF. Os co-instaladores e instaladores de classe fornecidos pelo fornecedor podem participar das atividades de instalação. Observe que SetupDiCallClassInstaller chama os co-instaladores registrados para pós-processamento, mesmo que o código DIF falhe.