次の方法で共有


スマート カード ドライバー ライブラリとの相互作用

次の図は、リーダー ドライバーが、リソース マネージャーから受信した IOCTL 要求を処理するためにスマート カード ドライバー ライブラリと対話するしくみを示しています。

diagram illustrating how a reader driver interacts with the smart card driver library to process ioctl requests .

以下の項目の番号は、上の図の番号に対応しています。 図は番号 1 から順に、リーダー ドライバーが IOCTL 要求を処理するために (システム提供のドライバー ライブラリと連携して) 完了する必要がある手順を示したものです。

  1. リーダー ドライバーが、すべての IOCTL 要求を SmartcardDeviceControl (WDM) ドライバー ライブラリ ルーチンに渡します。

  2. リーダー ドライバーから SmartcardDeviceControl に渡されたパラメーターが正しくない場合、SmartcardDeviceControl はエラー メッセージを返します。 SmartcardDeviceControl は、IOCTL 要求を完了せずに返します。 この状況では、リーダー ドライバーが IOCTL 要求を完了する必要があります。

  3. パラメーターが有効な場合、SmartcardDeviceControl は、可能であれば IOCTL 要求を処理します。

  4. SmartcardDeviceControl が、処理している IOCTL 要求に定義されているコールバック ルーチンをリーダー ドライバーが持っているかどうかをチェックます。 コールバックが存在する場合は、SmartcardDeviceControl がそれを呼び出します。

  5. コールバック ルーチンによって、IOCTL 要求の処理を完了するために必要なドライバー ライブラリ ルーチンがすべて呼び出されます。

  6. IOCTL 要求の処理後、コールバック ルーチンは SmartcardDeviceControl に戻ります。

  7. SmartcardDeviceControl が、IOCTL を転送した IRP を完了します。

  8. SmartcardDeviceControl が、リーダー ドライバー ディスパッチ ルーチンに制御を戻します。

スマート カード ライブラリは、リーダー ドライバーへのアクセスを同期します。 2 つのコールバック関数が同時に呼び出されることはありません。 ただし、カードの挿入と取り出しのイベント処理は非同期的に処理する必要があります。