次の方法で共有


スマート カード ドライバーのデバッグ

チェックされたビルドは、Windows 10 バージョン 1803 より前の古いバージョンの Windows で使用できます。 ドライバー検証ツールや GFlags などのツールを使用して、新しいバージョンの Windows のドライバー コードをチェックします。

スマート カード ドライバー ライブラリでは、いくつかのデバッグ機能がサポートされています。 各デバッグ機能は、Smclib.h ヘッダーファイルで定義されている次の定数のいずれかを使用して表されます。

DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL

有効なデバッグ機能の組み合わせセットは、#B0 デバッグ レベル #A1 と呼ばれる値で表されます。 この値を計算するには、有効にする機能に対応する定数のビットごとの OR を使用します。

デバッグ レベルを設定するには、2 つの方法があります。 まず、Windows Driver Kit (WDK) に付属のスマート カード ドライバー テスト プログラム (Scdrvtst #A1 #B0) を使用できます。 2 つ目は、SmartcardSetDebugLevel スマートカードドライバライブラリルーチンを使用することです。

どちらの場合も、デバッグ レベルを設定するプログラムまたはルーチンに、デバッグ レベルの値を渡す必要があります。 たとえば、スマート カード ライブラリ ルーチンを使用してドライバーからデバッグ レベルを設定するには、次の呼び出しを行います。

SmartcardSetDebugLevel(DebugLevel);

リーダー ドライバーからデバッグ メッセージを書き込むには、ドライバーは、次のルーチンを呼び出す必要があります。

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

重要

デバッグ メッセージを取得するには、チェックされたバージョンのオペレーティング システムとチェックされたバージョンのドライバーをインストールする必要があります。

このルーチンは、次の方法でリモート デバッガーにメッセージを書き込むにも使用できます。

  • エラーメッセージを書き込むには、DebugLevel に DEBUG_ERROR 定数を使用します。

  • 標準のドライバー メッセージを書き込むには、DEBUG_DRIVER定数を使用します。

  • リーダードライバーがルーチンに入るまたは終了することを示すトレースメッセージを書くには、DebugLevel としてDEBUG_TRACEを使用します。

ドライバーの開発中には、スマートカードドライバーライブラリのチェックされたバージョンを使用し、DriverEntryルーチンでSmartcardSetDebugLevel(DEBUG_ALL)を使用して、デバッグレベルを最大に設定してください。

リモート デバッグ セッションの設定については、「Windows デバッグ」を参照してください。