DIF 코드 처리
참고
이 섹션에 설명된 기능은 지원되지 않으며 이를 포함하는 드라이버 패키지는 더 이상 Microsoft 서명을 받지 않습니다. 유니버설 INF 파일 사용을 참조하세요.
디바이스 설치 애플리케이션은SetupDiCallClassInstaller를 호출하여 DIF 코드(디바이스 설치 함수 코드)를 설치 관리자에게 보냅니다. 이 함수는 차례로 설치 관리자의 진입점 함수를 호출합니다. 설치 관리자 진입점에 대한 설명은 다음을 참조하세요.
각 DIF 코드에 대한 참조 페이지에는 다음 섹션이 포함되어 있습니다.
보낸 경우
디바이스 설치 애플리케이션이 이 DIF 요청을 보내는 일반적인 시간과 이유를 설명합니다.
처리할 사람
이 요청을 처리할 수 있는 설치 관리자를 지정합니다. 설치 관리자에는 클래스 설치 관리자, 클래스 공동 설치 관리자(설치 클래스 전체 공동 설치 관리자) 및 디바이스 공동 설치 관리자(디바이스별 공동 설치 관리자)가 포함됩니다.
설치 관리자 입력
DIF 코드 외에도 SetupDiCallClassInstaller는 특정 요청과 관련된 추가 정보를 제공합니다. 각 요청에 제공되는 정보에 대한 자세한 내용은 각 DIF 코드에 대한 참조 페이지를 참조하세요. 다음 목록에는 추가 입력 매개 변수에 대한 일반적인 설명이 포함되어 있으며 설치 관리자가 매개 변수를 처리하기 위해 호출할 수 있는 디바이스 설치 함수 (SetupDiXxx 함수)가 나열되어 있습니다.
DeviceInfoSet
디바이스 정보 집합에 핸들을 제공합니다.
핸들이 불투명합니다. 예를 들어 핸들을 사용하여 SetupDiXxx 함수에 대한 호출에서 설정된 디바이스 정보를 식별합니다.
DeviceInfoSet에는 연결된 디바이스 설정 클래스가 있을 수 있습니다. 그렇다면 SetupDiGetDeviceInfoListClass 를 호출하여 클래스 GUID를 가져옵니다.
DeviceInfoData
필요에 따라 디바이스 정보 집합에서 디바이스를 식별하는 SP_DEVINFO_DATA 구조에 대한 포인터를 제공합니다.
디바이스 설치 매개 변수
이러한 간접 매개 변수는 SP_DEVINSTALL_PARAMS 구조에서 디바이스 설치에 대한 정보를 제공합니다.
DeviceInfoData가 NULL이 아닌 경우 DeviceInfoData와 연결된 디바이스 설치 매개 변수가 있습니다.
DeviceInfoData가 NULL인 경우 디바이스 설치 매개 변수는 DeviceInfoSet과 연결됩니다.
SetupDiGetDeviceInstallParams를 호출하여 디바이스 설치 매개 변수를 가져옵니다.
클래스 설치 매개 변수
선택적 간접 매개 변수는 특정 DIF 요청과 관련이 있습니다. 기본적으로 "DIF 요청 매개 변수"입니다. 예를 들어 DIF_REMOVE 설치 요청에 대한 클래스 설치 매개 변수는 SP_REMOVEDEVICE_PARAMS 구조에 포함됩니다.
각 SP_XXX_PARAMS 구조체는 고정 크기 SP_CLASSINSTALL_HEADER 구조로 시작합니다.
SetupDiGetClassInstallParams를 호출하여 클래스 설치 매개 변수를 가져옵니다.
DIF 요청에 클래스 설치 매개 변수가 있는 경우 DeviceInfoSet 과 연결된 매개 변수 집합과 DeviceInfoData 와 연결된 다른 매개 변수 집합이 있습니다(DIF 요청이 DeviceInfoData를 지정하는 경우). SetupDiGetClassInstallParams는 사용 가능한 가장 구체적인 매개 변수를 반환합니다.
컨텍스트
공동 설치 관리자에는 선택적 컨텍스트 매개 변수가 있습니다.
설치 관리자 출력
이 DIF 코드에 필요한 출력을 설명합니다.
설치 관리자가 디바이스 설치 매개 변수를 수정하는 경우 설치 관리자는 반환하기 전에 SetupDiSetDeviceInstallParams 를 호출하여 변경 내용을 적용해야 합니다. 마찬가지로 설치 관리자가 DIF 코드에 대한 클래스 설치 매개 변수를 수정하는 경우 설치 관리자는 SetupDiSetClassInstallParams를 호출해야 합니다.
설치 관리자 반환 값
DIF 코드에 대한 적절한 반환 값을 지정합니다. 반환 값에 대한 자세한 내용은 다음 그림을 참조하세요.
기본 DIF 코드 처리기
DIF 코드에 대한 시스템 정의 기본 작업을 수행하는 SetupDiXxx 함수를 지정합니다. 모든 DIF 코드에 기본 처리기가 있는 것은 아닙니다. 공동 설치 관리자 또는 클래스 설치 관리자가 기본 처리기가 호출되지 않도록 하는 단계를 수행하지 않는 한 SetupDiCallClassInstaller 는 클래스 설치 관리자를 호출한 후 DIF 코드에 대한 기본 처리기를 호출합니다(하지만 후처리를 위해 등록된 모든 공동 설치 관리자를 호출하기 전에).
클래스 설치 관리자가 DIF 코드를 성공적으로 처리하고 SetupDiCallClassInstaller 가 이후에 기본 처리기를 호출해야 하는 경우 클래스 설치 관리자는 ERROR_DI_DO_DEFAULT 반환합니다.
클래스 설치 관리자가 기본 처리기를 직접 호출하는 등 DIF 코드를 성공적으로 처리하는 경우 클래스 설치 관리자는 NO_ERROR 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 다시 호출하지 않습니다. 클래스 설치 관리자는 기본 처리기를 직접 호출할 수 있지만 클래스 설치 관리자는 기본 처리기의 작업을 대체하려고 시도해서는 안 됩니다.
클래스 설치 관리자에 오류가 발생하면 설치 관리자가 적절한 Win32 오류 코드를 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 호출하지 않습니다.
공동 설치 관리자는 기본 DIF 코드 처리기를 호출 해서는 안 됩니다.
설치 관리자 작업
설치 관리자가 DIF 요청을 처리하기 위해 수행할 수 있는 일반적인 단계를 설명합니다.
다음 그림에서는 DIF 코드를 처리하기 위한 SetupDiCallClassInstaller 의 이벤트 시퀀스를 보여 줍니다.
운영 체제는 각 DIF 코드에 대해 일부 작업을 수행합니다. 공급업체에서 제공하는 공동 설치 관리자 및 클래스 설치 관리자는 설치 작업에 참여할 수 있습니다. SetupDiCallClassInstaller는 DIF 코드가 실패하더라도 사후 처리에 등록된 공동 설치 관리자를 호출합니다.