스마트 카드 드라이버 디버깅

참고

확인된 빌드는 Windows 10 버전 1803 이전 버전의 Windows에서 사용할 수 있었습니다. 드라이버 검증 도구 및 GFlags와 같은 도구를 사용하여 이후 버전의 Windows에서 드라이버 코드를 검사.

스마트 카드 드라이버 라이브러리는 여러 디버깅 기능을 지원합니다. 각 디버깅 기능은 Smclib.h 헤더 파일에 정의된 다음 상수 중 하나로 표시됩니다.

DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL

사용 가능한 디버깅 기능의 결합된 집합은 디버깅 수준이라는 값으로 표시됩니다. 사용하려는 기능에 해당하는 상수의 비트 OR을 사용하여 이 값을 계산할 수 있습니다.

디버깅 수준을 설정하는 방법에는 두 가지가 있습니다. 먼저 WDK(Windows 드라이버 키트)와 함께 제공되는 스마트 카드 드라이버 테스트 프로그램인 Scdrvtst를 사용할 수 있습니다. 두 번째는 SmartcardSetDebugLevel 스마트 카드 드라이버 라이브러리 루틴을 사용하는 것입니다.

두 경우 모두 디버깅 수준을 설정하는 프로그램 또는 루틴에 원하는 디버깅 수준의 값을 전달해야 합니다. instance 스마트 카드 라이브러리 루틴을 사용하여 드라이버에서 디버깅 수준을 설정하려면 다음을 호출합니다.

SmartcardSetDebugLevel(DebugLevel);

판독기 드라이버에서 디버깅 메시지를 작성하려면 드라이버가 다음 루틴을 호출해야 합니다.

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

중요

디버깅 메시지를 얻으려면 확인된 버전의 운영 체제 및 드라이버의 확인된 버전을 설치해야 합니다.

이 루틴을 사용하여 다음과 같은 방법으로 원격 디버거에 메시지를 쓸 수도 있습니다.

  • 오류 메시지를 작성하려면 DebugLevel에 DEBUG_ERROR 상수를 사용합니다.

  • 표준 드라이버 메시지를 작성하려면 DEBUG_DRIVER 상수를 사용합니다.

  • 판독기 드라이버가 루틴에 들어오거나 종료되는 시기를 나타내는 추적 메시지를 작성하려면 DEBUG_TRACE DebugLevel로 사용합니다.

드라이버를 개발하는 동안 스마트 카드 드라이버 라이브러리의 확인된 버전을 사용하고 DriverEntry 루틴에서 SmartcardSetDebugLevel(DEBUG_ALL)을 사용하여 디버깅 수준을 최대값으로 설정합니다.

원격 디버깅 세션을 설정하는 방법에 대한 자세한 내용은 Windows 디버깅을 참조하세요.