シーケンスの例
スマート カード リソース マネージャーの IOCTL のシーケンスの例を次に示します。
シーケンス開始
スマート カード アクセス デバイス インターフェイス GUID と共に DevObj または CfgMgr API を使用して NFC デバイス ドライバーの名前を検出し、CreateFile でそれを使用してデバイス ハンドルを開きます。
スレッド プールを初期化します。
リーダー名を決定します。
- SCARD_ATTR_VENDOR_NAME、SCARD_ATTR_VENDOR_IFD_TYPE、およびSCARD_ATTR_DEVICE_UNITのIOCTL_SMARTCARD_GET_ATTRIBUTE
リーダーの特性を決定します。
- SCARD_ATTR_CHARACTERISTICS の IOCTL_SMARTCARD_GET_ATTRIBUTE
カード状態モニターを起動します。
IOCTL_SMARTCARD_IS_PRE Standard Edition NT – スマートカード到着を待ちます。
IOCTL_SMARTCARD_IS_AB Standard Edition NT - スマートなカードの出発を待ちます。
SCARD_SWALLOWED、SCARD_POWERED状態はサポートされていないため、電源リセットは関係ありません。
接続シーケンス
ループの開始。
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 とプロトコルを決定します
IOCTL_SMARTCARD_SET_PROTOCOL
切断シーケンス
電源ダウン タイムアウトが開始されます。
ループの開始。
IOCTL_SMARTCARD_GET_STATE
ケース SCARD_SPECIFIC、SCARD_NEGOTIABLE、SCARD_POWERED、電源を切ります
ケース SCARD_SWALLOWED、SCARD_PRE Standard Edition NT、何もしません
ケース SCARD_UNKNOWN と SCARD_AB Standard Edition NT、何もしません