次の方法で共有


シーケンスの例

スマート カード リソース マネージャーの IOCTL のシーケンスの例を次に示します。

シーケンス開始

  1. スマート カード アクセス デバイス インターフェイス GUID と共に DevObj または CfgMgr API を使用して NFC デバイス ドライバーの名前を検出し、CreateFile でそれを使用してデバイス ハンドルを開きます。

  2. スレッド プールを初期化します。

  3. リーダー名を決定します。

    • SCARD_ATTR_VENDOR_NAME、SCARD_ATTR_VENDOR_IFD_TYPE、およびSCARD_ATTR_DEVICE_UNITのIOCTL_SMARTCARD_GET_ATTRIBUTE
  4. リーダーの特性を決定します。

    • SCARD_ATTR_CHARACTERISTICS の IOCTL_SMARTCARD_GET_ATTRIBUTE
  5. カード状態モニターを起動します。

    • IOCTL_SMARTCARD_IS_PRE Standard Edition NT – スマートカード到着を待ちます。

    • IOCTL_SMARTCARD_IS_AB Standard Edition NT - スマートなカードの出発を待ちます。

SCARD_SWALLOWED、SCARD_POWERED状態はサポートされていないため、電源リセットは関係ありません。

接続シーケンス

  1. ループの開始。

  2. IOCTL_SMARTCARD_GET_STATE

    • case SCARD_UNKNOWN と SCARD_AB Standard Edition NT、何もしません

    • ケース SCARD_PRE Standard Edition NT、カードを飲み込みます

    • ケース SCARD_SWALLOWED、コールド リセット

    • ケース SCARD_POWERED、ウォーム リセット

    • ケース SCARD_NEGOTIABLE、カード ATR を決定します

    • Case SCARD_SPECIFIC、カード ATR とプロトコルを決定します

  3. IOCTL_SMARTCARD_SET_PROTOCOL

切断シーケンス

  1. 電源ダウン タイムアウトが開始されます。

  2. ループの開始。

  3. IOCTL_SMARTCARD_GET_STATE

    • ケース SCARD_SPECIFIC、SCARD_NEGOTIABLE、SCARD_POWERED、電源を切ります

    • ケース SCARD_SWALLOWED、SCARD_PRE Standard Edition NT、何もしません

    • ケース SCARD_UNKNOWN と SCARD_AB Standard Edition NT、何もしません