次の方法で共有


SCardConnectA 関数 (winscard.h)

SCardConnect 関数は、呼び出し元アプリケーションと特定のリーダーに含まれる スマート カード との間の接続 (特定の リソース マネージャー コンテキストを使用) を確立します。 指定したリーダーにカードが存在しない場合は、エラーが返されます。

構文

LONG SCardConnectA(
  [in]  SCARDCONTEXT  hContext,
  [in]  LPCSTR        szReader,
  [in]  DWORD         dwShareMode,
  [in]  DWORD         dwPreferredProtocols,
  [out] LPSCARDHANDLE phCard,
  [out] LPDWORD       pdwActiveProtocol
);

パラメーター

[in] hContext

リソース マネージャー コンテキストを識別するハンドル。 リソース マネージャー コンテキストは、SCardEstablishContextを する以前の呼び出しによって設定されます。

[in] szReader

ターゲット カードを含むリーダーの名前。

[in] dwShareMode

他のアプリケーションがカードへの接続を形成できるかどうかを示すフラグ。

価値 意味
SCARD_SHARE_SHARED
このアプリケーションは、他のアプリケーションとカードを共有することを選択しています。
SCARD_SHARE_EXCLUSIVE
このアプリケーションは、カードを他のアプリケーションと共有する必要はありません。
SCARD_SHARE_DIRECT
このアプリケーションは、そのプライベート使用のためにリーダーを割り当て、直接制御します。 他のアプリケーションにはアクセスできません。

[in] dwPreferredProtocols

接続で許容されるプロトコルのビットマスク。 指定できる値は、OR 操作と組み合わせることができます。

価値 意味
SCARD_PROTOCOL_T0
T=0 は許容されるプロトコルです。
SCARD_PROTOCOL_T1
T=1 は許容されるプロトコルです。
0
このパラメーターは、dwShareMode が SCARD_SHARE_DIRECT に設定されている場合にのみ 0 にすることができます。 この場合、IOCTL_SMARTCARD_SET_PROTOCOL コントロール ディレクティブが SCardControlと共に送信されるまで、ドライバー プロトコル ネゴシエーションは実行されません。

[out] phCard

指定されたリーダーで スマート カードへの接続を識別するハンドル。

[out] pdwActiveProtocol

確立されたアクティブなプロトコルを示すフラグ。

価値 意味
SCARD_PROTOCOL_T0
T=0 がアクティブなプロトコルです。
SCARD_PROTOCOL_T1
T=1 がアクティブなプロトコルです。
SCARD_PROTOCOL_UNDEFINED
プロトコル ネゴシエーションが発生しないように、SCARD_SHARE_DIRECTが指定されています。 リーダーにカードがない可能性があります。

戻り値

この関数は、成功するか失敗したかに応じて異なる値を返します。

リターン コード 形容
成功 の
SCARD_S_SUCCESS。
エラーの
エラー コード。 詳細については、「スマート カードの戻り値 を参照してください。
SCARD_E_NOT_READY
リーダーがカードに接続できませんでした。

備考

SCardConnect 機能は、スマートカードリーダー アクセス機能です。 その他のアクセス機能の詳細については、「スマート カードおよびリーダー アクセス機能の」を参照してください。

次の例では、リーダーへの接続を作成します。 この例では、hContext が、SCardEstablishContextへの以前の呼び出しから受信した SCARDCONTEXT 型の有効なハンドル 前提としています。

SCARDHANDLE     hCardHandle;
LONG            lReturn;
DWORD           dwAP;

lReturn = SCardConnect( hContext, 
                        (LPCTSTR)"Rainbow Technologies SCR3531 0",
                        SCARD_SHARE_SHARED,
                        SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
                        &hCardHandle,
                        &dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardConnect\n");
    exit(1);  // Or other appropriate action.
}

// Use the connection.
// Display the active protocol.
switch ( dwAP )
{
    case SCARD_PROTOCOL_T0:
        printf("Active protocol T0\n"); 
        break;

    case SCARD_PROTOCOL_T1:
        printf("Active protocol T1\n"); 
        break;

    case SCARD_PROTOCOL_UNDEFINED:
    default:
        printf("Active protocol unnegotiated or unknown\n"); 
        break;
}

// Remember to disconnect (by calling SCardDisconnect).
// ...

手記

winscard.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SCardConnect を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winscard.h
ライブラリ Winscard.lib
DLL Winscard.dll

関連項目

SCardControl

SCardDisconnect

SCardEstablishContext

SCardReconnect