共用方式為


智慧卡驅動程序偵錯

備註

在 Windows 10 版本 1803 之前,檢查過的組建可在舊版 Windows 上使用。 使用驅動程式驗證程式和 GFlags 之類的工具,檢查更新版本中的驅動程式程式代碼。

智慧卡驅動程式連結庫支援數個偵錯功能。 每個偵錯功能都會以下列其中一個常數來表示,這些常數定義於 Smclib.h 頭檔中:

DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL

啟用的偵錯功能組合是由稱為偵 錯層級的值來表示。 您可以通過對應至您想要啟用的功能的常數進行位元 OR運算來計算此值。

有兩種方式可以設定偵錯層級。 首先,您可以使用 Windows 驅動程式套件 (WDK) 隨附的智慧卡驅動程式測試程式 Scdrvtst。 第二個是使用 SmartcardSetDebugLevel 智慧卡驅動程序連結庫例程。

在這兩種情況下,您必須將您要偵錯層級的值傳遞給設定偵錯層級的程式或例程。 例如,若要使用智慧卡連結庫例程從驅動程式設定偵錯層級,請進行下列呼叫:

SmartcardSetDebugLevel(DebugLevel);

若要從讀取器驅動程式撰寫偵錯訊息,驅動程式必須呼叫下列例程:

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

這很重要

您必須安裝已核取的作系統版本和已核取的驅動程式版本,才能取得偵錯訊息。

此例程也可以用來以下列方式將訊息寫入遠端調試程式。

  • 若要寫入錯誤訊息,請使用 DebugLevel的DEBUG_ERROR常數。

  • 若要撰寫標準驅動程式訊息,請使用 DEBUG_DRIVER 常數。

  • 若要撰寫追蹤訊息,指出讀取器驅動程式何時進入或結束例程,請使用 DEBUG_TRACE 作為 DebugLevel

開發驅動程式時,請使用已核取的智慧卡驅動程序連結庫版本,並使用 DriverEntry 例程中的 SmartcardSetDebugLevel(DEBUG_ALL) 將偵錯層級設定為最大值。

如需設定遠端偵錯會話的相關信息,請參閱 Windows 偵錯