다음을 통해 공유


.kdfiles(드라이버 교체 맵 설정)

.kdfiles 명령은 파일을 읽고 해당 내용을 드라이버 대체 맵으로 사용합니다.

.kdfiles MapFile
.kdfiles -m OldDriver NewDriver
.kdfiles -s SaveFile
.kdfiles -c
.kdfiles

매개 변수

MapFile
읽을 드라이버 교체 맵 파일을 지정합니다.

-m
현재 연결 목록에 드라이버 교체 연결을 추가합니다.

OldDriver
대상 컴퓨터에서 이전 드라이버의 경로 및 파일 이름을 지정합니다. OldDriver의 구문은 드라이버 교체 파일에서 지도첫 번째 줄의 구문과 동일합니다. 이 구문에 대한 자세한 내용은 드라이버 파일 매핑을 참조 하세요.

NewDriver
새 드라이버의 경로 및 파일 이름을 지정합니다. 이 드라이버는 호스트 컴퓨터 또는 다른 네트워크 위치에 있을 수 있습니다. NewDriver의 구문은 드라이버 교체 파일의 지도두 번째 줄과 동일합니다. 이 구문에 대한 자세한 내용은 드라이버 파일 매핑을 참조 하세요.

-s
파일을 만들고 현재 드라이버 교체 연결을 해당 파일에 씁니다.

SaveFile
만들려는 파일의 이름을 지정 합니다.

-c
기존 드라이버 교체 맵을 삭제합니다. (이 옵션은 지도 파일 자체를 변경하지 않습니다. 대신 이 옵션은 디버거의 현재 맵 설정을 지웁니다.)

환경

모드

커널 모드만

대상

라이브 디버깅만

Platforms

x86 기반 프로세서

추가 정보

드라이버 교체 및 다른 커널 모드 모듈의 교체, 드라이버 교체 맵 파일 형식에 대한 설명 및 이 기능 사용에 대한 제한 사항에 대한 자세한 내용은 드라이버 파일 매핑을 참조 하세요.

설명

매개 변수 없이 .kdfiles 명령을 사용하는 경우 디버거는 현재 드라이버 교체 맵 파일의 경로와 이름 및 현재 대체 연결 집합을 표시합니다.

이 명령을 실행하면 지정된 MapFile파일이 읽혀집니다. 파일을 찾을 수 없거나 적절한 형식의 텍스트가 없는 경우 디버거는 "파일 연결을 로드할 수 없음"이라는 메시지를 표시합니다.

지정된 파일이 올바른 드라이버 대체 맵 파일 형식인 경우 디버거는 파일의 내용을 로드하고 드라이버 대체 맵으로 사용합니다. 이 맵은 디버거를 종료하거나 다른 .kdfiles 명령을 실행할 때까지 유지됩니다.

파일을 읽은 후 드라이버 교체 맵은 파일의 후속 변경 내용의 영향을 받지 않습니다(이러한 변경 내용 다음에 다른 .kdfiles 명령이 적용되지 않는 한).

사용자 모드 파일 바꾸기

사용자 모드 파일 대체는 Windows 버전 2004에 추가되었습니다. 이 지원을 사용하면 다음 사용자 모드 파일을 .kdfiles로 바꿀 수 있습니다.

  • 사용자 모드 DLL(NTDLL 및 KnownDll 포함)
  • CreateProcess의 기본 프로세스 이미지인 사용자 모드 EXE

사용자 모드 .kdfiles 지원을 사용하려면 먼저 디버거 명령을 사용하여 !gflag +ksl 커널 기호 로드를 사용하도록 설정하거나 레지스트리에서 ksl 전역 플래그를 구성해야 합니다. gflag에 대한 자세한 내용은 !gflag를 참조하세요.

다음 예제에서는 일반적인 사용을 보여 줍니다.

.kdfiles -m system32\userdll C:\myfiles\my_native_userdll.dll
.kdfiles -m system32\userdll \\server\share\my_native_userdll.dll
.kdfiles -m syswow64\ntdll.dll \\server\share\my_x86_wow64_ntdll.dll
.kdfiles -m system32\userbase.dll \\server\share\my_native_userbase.dll

사용자 모드 .kdfiles는 파일과 일치하는 오류를 무시하고 오류가 발생할 때 오류 메시지를 표시하지 않습니다.

사용자 모드 .kdfiles에 대한 .kdfiles 경로를 적절하게 한정해야 합니다. 그렇지 않으면 Wow64 NTDLL이 네이티브 NTDLL로 대체되기 때문에 (system32\ntdll.dll 대신) ntdll.dll 일치시킬 수 없습니다. 다른 모호한 부분 문자열 일치와 비슷한 상황이 발생할 수 있습니다.

빌드 20172 이후 사용자 모드 .kdfiles 메커니즘은 한 번의 시도가 실패할 때까지 디버거에서 파일을 끌어오려고 시도합니다. 그런 다음, 끌어오지 못한 파일 이름은 대상 시스템 상태를 수정하기 위해 디버거의 수동 개입 없이 부팅 세션에 대해 다시 시도되지 않습니다. 이전 빌드에서 사용자 모드 .kdfiles 메커니즘은 부팅 세션당 지정된 파일 이름을 끌어오려고 한 번 시도합니다(성공 여부). 이러한 정책은 kdfiles 목록에 없거나 지정된 파일을 이미 로드한 프로세스에서 위반을 공유하는 등 대체에 액세스할 수 없는 파일에 대해 디버거와 통신하는 오버헤드를 줄입니다. 이 동작으로 인해 먼저 참조되기 전에 .kdfiles 목록을 미리 끌어오도록 모든 파일을 구성하는 것이 좋습니다.

이미 사용 중인 디스크 파일을 바꿀 수 없는 등의 제한 사항에 유의하세요. 처음에 로드된 후 많은 시스템 DLL을 쉽게 핫 스왑할 수 없으므로 gflags +ksl 옵션을 미리 설정하고 .kdfiles를 사용하여 부팅 시 바로 사용자 모드 이진 파일을 바꿉니다.

부팅 디버깅을 사용하도록 설정하는 방법에 대한 자세한 내용은 BCDEdit /bootdebug를 참조하세요.

시스템 성능 영향을 최소화하려면 고속/짧은 대기 시간 KD 전송 KDNET을 사용하는 것이 좋습니다.

요구 사항

버전

Windows XP 이상 버전의 Windows 운영 체제에서 지원됩니다.