다음을 통해 공유


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 코드 처리기

SetupDiRemoveDevice

설치 관리자 작업

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 포함)

추가 정보

SetupDiRemoveDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_REMOVEDEVICE_PARAMS