DiRollbackDriver 함수(newdev.h)

DiRollbackDriver 함수는 지정된 디바이스에 설치된 드라이버를 롤백합니다.

구문

BOOL DiRollbackDriver(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            Flags,
  [out, optional] PBOOL            NeedReboot
);

매개 변수

[in] DeviceInfoSet

드라이버 롤백이 수행되는 디바이스를 나타내는 디바이스 정보 요소가 포함된 디바이스 정보 집합 에 대한 핸들입니다.

[in] DeviceInfoData

드라이버 롤백이 수행되는 지정된 디바이스 정보 집합의 특정 디바이스를 나타내는 SP_DEVINFO_DATA 구조체에 대한 포인터입니다.

[in, optional] hwndParent

DiRollbackDriver가 지정된 디바이스의 드라이버 롤백과 연결된 모든 사용자 인터페이스 구성 요소를 표시하는 데 사용하는 최상위 창에 대한 핸들입니다. 이 매개 변수는 선택 사항이며 NULL로 설정할 수 있습니다.

[in] Flags

0 또는 ROLLBACK_FLAG_NO_UI 설정할 수 있는 DWORD 형식의 값입니다.

일반적으로 이 플래그는 0으로 설정해야 합니다. 이 경우 DiRollbackDriver 는 드라이버 롤백과 연결된 기본 사용자 인터페이스 구성 요소를 표시하지 않습니다. 그러나 이 플래그가 ROLLBACK_FLAG_NO_UI 설정된 경우 DiRollbackDriver 는 드라이버 롤백과 연결된 사용자 인터페이스 구성 요소의 표시를 표시하지 않습니다.

[out, optional] NeedReboot

DiRollbackDriver가 롤백을 완료하는 데 시스템 다시 시작이 필요한지 여부를 나타내기 위해 설정하는 BOOL 형식의 값에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

매개 변수가 제공되고 롤백을 완료하기 위해 시스템 다시 시작이 필요한 경우 DiRollbackDriver 는 값을 TRUE로 설정합니다. 이 경우 호출자는 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다. 이 매개 변수가 제공되고 설치를 완료하는 데 시스템 다시 시작이 필요하지 않은 경우 DiRollbackDriver 는 값을 FALSE로 설정합니다.

매개 변수가 NULL 이고 롤백을 완료하려면 시스템 다시 시작이 필요한 경우 DiRollbackDriver 는 시스템 다시 시작 대화 상자를 표시합니다.

이 매개 변수에 대한 자세한 내용은 다음 설명 섹션 을 참조하세요 .

반환 값

DiRollbackDriver는 함수가 디바이스에 대한 드라이버를 성공적으로 롤백하면 TRUE 를 반환합니다. 그렇지 않으면 DiRollbackDriverFALSE 를 반환하고 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다. GetLastError에서 반환할 수 있는 몇 가지 일반적인 오류 값은 다음과 같습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
호출자에게 관리자 권한이 없습니다. 기본적으로 Windows에서는 호출자에게 드라이버 패키지를 롤백할 수 있는 관리자 권한이 있어야 합니다.
ERROR_IN_WOW64
호출 애플리케이션은 허용되지 않는 64비트 환경에서 실행하려는 32비트 애플리케이션입니다. 자세한 내용은 64비트 시스템에 디바이스 설치를 참조하세요.
ERROR_INVALID_FLAGS
Flags에 지정된 값이 0 또는 ROLLBACK_FLAG_NO_UI 같지 않습니다.
ERROR_NO_MORE_ITEMS
백업 드라이버가 디바이스에 대해 설정되지 않았습니다.

설명

이전에 설치된 백업 드라이버가 디바이스에 대해 설정된 경우 디바이스에 대한 드라이버 롤백은 디바이스에 현재 설치된 드라이버를 백업 드라이버로 대체합니다. Windows는 디바이스에 대해 최대 하나의 백업 드라이버를 유지 관리합니다. Windows는 드라이버를 디바이스에 성공적으로 설치한 직후 디바이스의 백업 드라이버로 설정하고 Windows는 디바이스가 올바르게 작동하는지 확인합니다. 그러나 드라이버가 디바이스에 성공적으로 설치되지 않았거나 설치 후 디바이스가 제대로 작동하지 않는 경우 Windows는 드라이버를 디바이스의 백업 드라이버로 설정하지 않습니다. 드라이버 롤백에 대한 자세한 내용은 도움말 및 지원 센터의 장치 관리자 대한 정보를 참조하세요.

지정된 디바이스에 백업 드라이버가 있는 경우 DiRollbackDriver 는 다음 작업을 수행합니다.

  1. Flags가 0으로 설정된 경우 DiRollbackDriver는 사용자에게 백업 드라이버를 설치해야 하는지 여부를 확인하라는 메시지를 표시합니다. 그렇지 않은 경우 플래그 가 ROLLBACK_FLAG_NO_UI 설정되면 DiRollbackDriver 는 사용자에게 백업 드라이버 설치를 확인하라는 메시지를 표시하지 않고 백업 드라이버를 설치합니다.
  2. DiRollbackDriver는 백업 드라이버를 설치합니다. 백업 드라이버가 디바이스에 현재 설치된 드라이버보다 디바이스와 더 일치하는지 여부에 관계없이 드라이버가 설치됩니다.
  3. 백업 드라이버로 대체된 드라이버가 받은 편지함 드라이버가 아니고 시스템의 다른 장치에 설치되지 않은 경우 DiRollbackDriver 는 시스템에서 드라이버를 제거합니다. DiRollbackDriver 는 드라이버에 문제가 있는 경우에만 사용자가 드라이버를 교체한다고 가정하기 때문에 시스템에서 드라이버를 제거합니다.
지정된 디바이스에 백업 드라이버가 없는 경우 DiRollbackDriverSetLastError 를 호출하여 오류 ERROR_NO_MORE_ITEMS 설정하고, 현재 설치된 드라이버를 제거하지 않고, FALSE를 반환합니다.

일반적으로 설치 애플리케이션은 롤백을 완료하기 위해 다시 시작해야 하는 경우 시스템이 시스템 다시 시작을 자동으로 시작하도록 NeedRebootNULL 로 설정해야 합니다. 애플리케이션은 다음 경우에만 NeedReboot 포인터를 제공해야 합니다.

  • 설치를 완료하려면 애플리케이션에서 DiRollbackDriver 를 여러 번 호출해야 합니다. 이 경우 애플리케이션은 DiRollbackDriver에 대한 호출에서 TRUENeedReboot 값이 반환되는지 여부를 기록하고, 이 경우 DiRollbackDriver에 대한 최종 호출이 반환된 후 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
  • 애플리케이션은 시스템을 다시 시작하기 전에 DiRollbackDriver를 호출하는 것 외에 필요한 작업을 수행해야 합니다. 시스템 다시 시작이 필요한 경우 애플리케이션은 필요한 작업을 완료한 다음 사용자에게 시스템을 다시 시작하라는 메시지를 표시해야 합니다.
디바이스에 대한 드라이버를 롤백하는 대신 디바이스용 새 드라이버를 설치하려면 DiInstallDriver 또는 UpdateDriverForPlugAndPlayDevices를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 및 이후 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 newdev.h(Newdev.h 포함)
라이브러리 Newdev.lib
DLL Newdev.dll

추가 정보

DiInstallDriver

UpdateDriverForPlugAndPlayDevices