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
他のアプリケーションがカードへの接続を形成できるかどうかを示すフラグ。
[in] dwPreferredProtocols
接続に使用できるプロトコルのビットマスク。 使用できる値は 、OR 演算と組み合わせて使用できます。
値 | 意味 |
---|---|
|
T=0 は許容されるプロトコルです。 |
|
T=1 は許容されるプロトコルです。 |
|
dwShareMode が SCARD_SHARE_DIRECT に設定されている場合にのみ、このパラメーターは 0 になります。 この場合、IOCTL_SMARTCARD_SET_PROTOCOL コントロール ディレクティブが SCardControl と共に送信されるまで、ドライバーによってプロトコル ネゴシエーションは実行されません。 |
[out] phCard
指定されたリーダー内のスマート カードへの接続を識別するハンドル。
[out] pdwActiveProtocol
確立されたアクティブなプロトコルを示すフラグ。
値 | 意味 |
---|---|
|
T=0 はアクティブなプロトコルです。 |
|
T=1 はアクティブなプロトコルです。 |
|
プロトコル ネゴシエーションが発生しないように、SCARD_SHARE_DIRECTが指定されています。 リーダーにカードがない可能性があります。 |
戻り値
この関数は、成功するか失敗するかによって異なる値を返します。
リターン コード | 説明 |
---|---|
|
SCARD_S_SUCCESS。 |
|
エラー コード。 詳細については、「 スマート カードの戻り値」を参照してください。 |
|
リーダーがカードに接続できませんでした。 |
注釈
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 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winscard.h |
Library | Winscard.lib |
[DLL] | Winscard.dll |