이 항목에서는 디바이스 드라이버가 실행 중인 운영 체제가 안전 모드에서 시작되었는지 여부를 확인하는 방법에 대해 설명합니다. 이 항목에서는 드라이버가 안전 모드에서 작동하지 못하도록 하는 방법도 설명합니다.
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 값을 확인합니다. 운영 체제가 안전 모드인 경우 다음을 수행합니다.
- 필터 디바이스 개체를 디바이스 스택에 연결하지 마세요.
- 필터 드라이버의 AddDevice 루틴에서 성공을 반환합니다.
기타 드라이버
함수 또는 필터 드라이버 이외의 드라이버의 경우 드라이버의 DriverEntry 루틴에서 InitSafeBootMode 값을 확인합니다. 운영 체제가 안전 모드인 경우 실패 상태를 반환합니다.