운영 체제가 안전 모드에서 실행 중인지 확인

이 항목에서는 디바이스 드라이버가 실행 중인 운영 체제가 안전 모드에서 시작되었는지 여부를 확인하는 방법을 설명합니다. 이 항목에서는 드라이버가 안전 모드에서 작동하지 못하도록 방지하는 방법도 설명합니다.

Microsoft Windows 운영 체제 커널은 InitSafeBootMode라는 포인터를 내보냅니다. InitSafeBootMode 는 현재 적용 중인 안전 모드 설정이 포함된 ULONG 변수를 가리킵니다. 디바이스 드라이버는 이러한 설정을 검사하여 운영 체제가 안전 모드에서 실행 중인지 여부를 확인할 수 있습니다.

다음 표에서는 InitSafeBootMode 변수 값에 대한 모드를 나열합니다.

모드

0

운영 체제가 안전 모드가 아닙니다.

1

SAFEBOOT_MINIMAL

2

SAFEBOOT_NETWORK

3*

SAFEBOOT_DSREPAIR

참고 * 값 3은 Windows 도메인 컨트롤러에만 적용됩니다.

InitSafeBootMode 변수를 사용하려면 다음 코드 예제와 같이 드라이버에서 선언해야 합니다.

extern PULONG InitSafeBootMode;

InitSafeBootMode를 선언한 후 다음 코드 예제를 사용하여 운영 체제가 안전 모드에서 실행 중인지 여부를 확인할 수 있습니다.

if (*InitSafeBootMode > 0) {
    // The operating system is in Safe Mode.
    // Take appropriate action.
    //
}

드라이버가 안전 모드에서 작동하지 않도록 하려면 드라이버 유형과 일치하는 다음 목록의 기술을 사용합니다.

  • 함수 드라이버

    함수 드라이버에 서비스 시작 형식의 SERVICE_BOOT_START 있는 경우 함수 드라이버의 AddDevice 루틴에서 InitSafeBootMode 값을 검사. 시스템이 안전 모드인 경우 오류 상태 반환합니다.

    참고DriverEntry 루틴에서 오류를 반환해서는 안 됩니다.

  • 필터 드라이버

    시스템 시작 중에 필터 드라이버가 시작되는 경우 필터 드라이버의 AddDevice 루틴에서 InitSafeBootMode 값을 검사. 운영 체제가 안전 모드인 경우 다음을 수행합니다.

    1. 필터 디바이스 개체를 디바이스 스택에 연결하지 마세요.
    2. 필터 드라이버의 AddDevice 루틴에서 성공을 반환합니다.
  • 기타 드라이버

    함수 또는 필터 드라이버 이외의 드라이버의 경우 드라이버의 DriverEntry 루틴에서 InitSafeBootMode 값을 검사. 운영 체제가 안전 모드인 경우 오류 상태 반환합니다.