다음을 통해 공유


DIF_SELECTBESTCOMPATDRV

참고

이 요청은 Windows 10 버전 1703(Redstone 2)에서 더 이상 사용되지 않습니다. 최신 버전의 Windows에서는 이 콜백이 더 이상 호출되지 않습니다.

DIF_SELECTBESTCOMPATDRV 요청을 사용하면 설치 관리자가 디바이스 정보 요소의 호환되는 드라이버 목록에서 최상의 드라이버를 선택할 수 있습니다.

보낸 경우

운영 체제가 새 PnP 디바이스를 설치할 준비를 하거나 PnP 디바이스에서 변경 드라이버 작업을 수행하는 경우

이 DIF 요청은 일반적으로 PnP 구성 중에 사용됩니다. 디바이스를 수동으로 설치하는 경우 Windows는 DIF_SELECTDEVICE 요청을 보냅니다.

처리할 사람

클래스 공동 설치 관리자

처리 가능

디바이스 공동 설치 관리자

처리하지 않음

클래스 설치 관리자

처리 가능

설치 관리자 입력

DeviceInfoSet
디바이스가 포함된 디바이스 정보 집합 에 핸들을 제공합니다.

DeviceInfoData
디바이스 정보 집합에서 디바이스를 식별하는 SP_DEVINFO_DATA 구조체에 대한 포인터를 제공합니다.

디바이스 설치 매개 변수
DeviceInfoData와 연결된 디바이스 설치 매개 변수(SP_DEVINSTALL_PARAMS)가 있습니다.

클래스 설치 매개 변수
없음

설치 관리자 출력

디바이스 설치 매개 변수
설치 관리자는 디바이스 설치 매개 변수를 수정할 수 있습니다. 그러나 일반적으로 이 DIF 요청을 처리할 때는 그렇지 않습니다.

DeviceInfoData
부작용으로 설치 관리자는 DeviceInfoData, 특히 SP_DRVINSTALL_PARAMS 연결된 드라이버 목록을 수정할 수 있습니다.

설치 관리자 반환 값

공동 설치 관리자는 NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED 또는 Win32 오류 코드를 반환할 수 있습니다.

클래스 설치 관리자가 이 요청을 성공적으로 처리하고 SetupDiCallClassInstaller 가 이후에 기본 처리기를 호출해야 하는 경우 클래스 설치 관리자는 ERROR_DI_DO_DEFAULT 반환합니다.

클래스 설치 관리자가 기본 처리기를 직접 호출하는 것을 포함하여 이 요청을 성공적으로 처리하는 경우 클래스 설치 관리자는 NO_ERROR 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 다시 호출하지 않습니다.

참고 클래스 설치 관리자는 기본 처리기를 직접 호출할 수 있지만 클래스 설치 관리자는 기본 처리기의 작업을 대체하려고 시도해서는 안 됩니다.

기본 처리기를 호출하는 방법에 대한 자세한 내용은 기본 DIF 코드 처리기 호출을 참조하세요.

클래스 설치 관리자에 오류가 발생하면 설치 관리자는 적절한 Win32 오류 코드를 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 호출하지 않습니다.

기본 DIF 코드 처리기

SetupDiSelectBestCompatDrv

설치 관리자 작업

설치 관리자는 PnP 디바이스에 대한 드라이버 선택에 참여하기 위해 이 DIF 요청을 처리합니다. 설치 관리자는 일반적으로 다음 방법 중 하나로 이 DIF 요청에 응답합니다.

  • 아무 작업도 하지 않습니다.

    설치 관리자에 특별한 선택 요구 사항이 없는 경우 이 DIF 요청에 대한 응답으로 아무 것도 수행하지 않습니다. 클래스 설치 관리자는 ERROR_DI_DO_DEFAULT 반환하고 공동 설치 관리자는 NO_ERROR 반환합니다.

  • 드라이버 목록에서 하나 이상의 드라이버의 매개 변수를 수정합니다.

    예를 들어 설치 관리자는 DNF_BAD_DRIVER 표시하여 디바이스에 대한 고려 사항에서 드라이버를 제거할 수 있습니다. 설치 관리자는 다음 단계에 따라 드라이버 매개 변수를 수정합니다.

    1. SetupDiEnumDriverInfoSetupDiGetDriverInstallParams를 호출하여 목록의 첫 번째 드라이버에 대한 정보를 가져옵니다. 적절한 경우 드라이버 매개 변수를 수정하고 SetupDiSetDriverInstallParams를 호출하여 변경 사항을 적용합니다.

      드라이버가 최악의 경우 드라이버 설치 매개 변수에서 드라이버의 순위를 0xFFFF 이상으로 설정합니다. 자세한 내용은 Windows에서 드라이버를 선택하는 방법을 참조하세요.

    2. 목록의 모든 드라이버를 처리할 때까지 이전 단계를 반복합니다. 해당 함수에 대한 참조 페이지에 설명된 대로 MemberIndex 매개 변수를 SetupDiEnumDriverInfo 로 증가해야 합니다.

    클래스 설치 관리자가 드라이버 목록을 수정한 후 ERROR_DI_DO_DEFAULT 반환합니다. 공동 설치 관리자가 드라이버 목록을 수정하는 경우 전처리에서 이를 수행하고 NO_ERROR 반환해야 합니다.

  • 디바이스에 가장 적합한 드라이버를 선택합니다.

    이 작업은 덜 일반적이지만 설치 관리자는 디바이스에 가장 적합한 드라이버를 선택할 수 있습니다. 이러한 설치 관리자는 각 드라이버에 대한 데이터를 검사하고, 드라이버를 선택하고, SetupDiSetSelectedDriver 를 호출하여 드라이버를 설정합니다. 설치 관리자가 선택한 드라이버를 설정한 후 NO_ERROR 반환합니다.

    공동 설치 관리자가 드라이버를 선택하는 경우 후처리에서 드라이버를 선택해야 합니다.

DIF 코드에 대한 자세한 내용은 DIF 코드 처리를 참조하세요.

요구 사항

Version

Microsoft Windows 2000 이상 버전의 Windows에서 지원됩니다.

헤더

Setupapi.h(Setupapi.h 포함)

추가 정보

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS