DIF_REMOVE
DIF_REMOVE 요청은 Windows가 디바이스를 제거하려고 한다는 것을 설치 관리자에게 알리고 설치 관리자에게 제거를 준비할 수 있는 기회를 제공합니다.
보낸 경우
사용자가 장치 관리자 디바이스를 제거하는 경우
처리할 사람
클래스 공동 설치 관리자 |
처리 가능 |
디바이스 공동 설치 관리자 |
처리 가능 |
클래스 설치 관리자 |
처리 가능 |
설치 관리자 입력
DeviceInfoSet
제거할 디바이스가 포함된 디바이스 정보 집합 에 핸들을 제공합니다.
DeviceInfoData
디바이스 정보 집합의 디바이스에 대한 SP_DEVINFO_DATA 구조에 대한 포인터를 제공합니다.
디바이스 설치 매개 변수
DeviceInfoData와 연결된 디바이스 설치 매개 변수(SP_DEVINSTALL_PARAMS)가 있습니다.
클래스 설치 매개 변수
SP_REMOVEDEVICE_PARAMS 구조체는 DeviceInfoData와 연결될 수 있습니다.
SP_DEVINSTALL_PARAMS DI_CLASSINSTALLPARAMS 플래그가 명확한 경우 요청에 대한 클래스 설치 매개 변수가 없습니다. 이 경우 하드웨어 프로필이 지정되지 않으며 디바이스를 시스템에서 전체적으로 제거해야 합니다.
설치 관리자 출력
설치 관리자 반환 값
공동 설치 관리자는 NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED 또는 Win32 오류 코드를 반환할 수 있습니다.
클래스 설치 관리자가 이 요청을 성공적으로 처리하고 SetupDiCallClassInstaller 가 이후에 기본 처리기를 호출해야 하는 경우 클래스 설치 관리자는 ERROR_DI_DO_DEFAULT 반환합니다.
클래스 설치 관리자가 기본 처리기를 직접 호출하는 것을 포함하여 이 요청을 성공적으로 처리하는 경우 클래스 설치 관리자는 NO_ERROR 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 다시 호출하지 않습니다.
참고 클래스 설치 관리자는 기본 처리기를 직접 호출할 수 있지만 클래스 설치 관리자는 기본 처리기의 작업을 대체하려고 시도해서는 안 됩니다.
기본 처리기를 호출하는 방법에 대한 자세한 내용은 기본 DIF 코드 처리기 호출을 참조하세요.
클래스 설치 관리자에 오류가 발생하면 설치 관리자는 적절한 Win32 오류 코드를 반환해야 하며 SetupDiCallClassInstaller 는 이후에 기본 처리기를 호출하지 않습니다.
기본 DIF 코드 처리기
설치 관리자 작업
DIF_REMOVE 요청에 대한 응답으로 설치 관리자는 일반적으로 일부 클린 작업을 수행합니다. 이 경우 공동 설치 관리자는 NO_ERROR 반환하고 클래스 설치 관리자는 ERROR_DI_DO_DEFAULT 반환합니다.
설치 관리자가 디바이스를 제거해서는 안 된다고 판단하면 설치 관리자는 Win32 오류 코드를 반환하여 DIF 요청에 실패합니다. DI_QUIETINSTALL 플래그가 명확한 경우 설치 관리자는 디바이스가 제거되지 않는 이유를 설명하는 메시지를 사용자에게 표시해야 합니다.
공동 설치 관리자는 SetupDiRemoveDevice를 호출하여 디바이스 자체를 제거하려고 시도해서는 안 됩니다. 공동 설치 관리자는 일반적으로 디바이스가 성공적으로 제거된 후 후처리에서 이 요청을 처리합니다.
예를 들어 공동 설치 관리자가 레지스트리에서 정보를 삭제해야 하는 경우 공동 설치 관리자는 후처리에서 이 작업을 수행해야 하며 이전 설치 관리자가 제거 요청에 성공한 경우에만 삭제해야 합니다. 전처리 단계에서 공동 설치 관리자는 레지스트리 정보를 컨텍스트 매개 변수에 저장하고 ERROR_DI_POSTPROCESSING_REQUIRED 반환하여 후처리를 요청해야 합니다. Windows에서 이 DIF 요청의 후처리를 위해 공동 설치 관리자를 호출하는 경우 공동 설치 관리자는 DIF 상태 NO_ERROR 검사 레지스트리 정보를 삭제해야 합니다. 공동 설치 관리자가 전처리 패스에서 레지스트리 정보를 삭제하고 클래스 설치 관리자(또는 다른 공동 설치 관리자)가 DIF_REMOVE 실패하는 경우 공동 설치 관리자는 디바이스를 예측할 수 없는 상태로 둘 수 있습니다.
파일이 다른 디바이스에서 사용 중인 경우 설치 관리자는 이 DIF 요청을 처리할 때 파일을 삭제해서는 안 됩니다.
Windows는 PnP 쿼리 제거 및 제거 처리를 시작하기 전에 이 DIF 요청을 보냅니다.
DIF 코드에 대한 자세한 내용은 DIF 코드 처리를 참조하세요.
요구 사항
Version |
Microsoft Windows 2000 이상 버전의 Windows에서 지원됩니다. |
헤더 |
Setupapi.h(Setupapi.h 포함) |