SCardIntroduceCardTypeA 関数 (winscard.h)
SCardIntroduceCardType 関数は、スマート カードをスマート カード データベースに追加することで、スマート カード サブシステム (アクティブ ユーザー用) に導入します。
構文
LONG SCardIntroduceCardTypeA(
[in] SCARDCONTEXT hContext,
[in] LPCSTR szCardName,
[in, optional] LPCGUID pguidPrimaryProvider,
[in, optional] LPCGUID rgguidInterfaces,
[in] DWORD dwInterfaceCount,
[in] LPCBYTE pbAtr,
[in] LPCBYTE pbAtrMask,
[in] DWORD cbAtrLen
);
パラメーター
[in] hContext
リソース マネージャー コンテキストを識別するハンドル。 リソース マネージャー コンテキストは、 SCardEstablishContext の以前の呼び出しによって設定されます。 このパラメーターを NULL にすることはできません。
[in] szCardName
ユーザーがカードを認識できる名前。
[in, optional] pguidPrimaryProvider
スマート カードのプライマリ サービス プロバイダーの識別子 (GUID) へのポインター。
[in, optional] rgguidInterfaces
スマート カードでサポートされているインターフェイスを識別する識別子 (GUID) の配列。
[in] dwInterfaceCount
rgguidInterfaces 配列内の識別子の数。
[in] pbAtr
スマート カード データベースに対してクエリを実行するときに照合目的で使用できる ATR 文字列 (詳細については、「SCardListCards」を参照してください)。 この文字列の長さは、通常の ATR 解析によって決まります。
[in] pbAtrMask
スマート カードの ATR と pbAtr で提供される ATR を比較するときに使用するオプションのビットマスク。 この値が NULL 以外の場合は、 pbAtr で指定された ATR 文字列と同じ長さのバイト文字列を指す必要があります。 指定された ATR 文字列 A が pbAtr で指定された ATR と比較されると、A が M = pbAtrを &場合にのみ一致します。ここで、M は指定されたマスクであり、& はビットごとの AND を表します。
[in] cbAtrLen
ATR とオプションの ATR マスクの長さ。 この値が 0 の場合、ATR の長さは通常の ATR 解析によって決定されます。 pbAtr 値が指定されている場合、この値を 0 にすることはできません。
戻り値
この関数は、成功するか失敗するかによって異なる値を返します。
リターン コード | 説明 |
---|---|
|
SCARD_S_SUCCESS。 |
|
エラー コード。 詳細については、「 スマート カードの戻り値」を参照してください。 |
注釈
この関数はリダイレクトされませんが、リモート デスクトップ セッション内で 関数を呼び出してもエラーは発生しません。 これは、結果がローカル コンピューターではなくリモート コンピューターからの結果であることを意味するだけです。
SCardIntroduceCardType 関数はデータベース管理機能です。 その他のデータベース管理機能の詳細については、「 スマート カード データベース管理機能」を参照してください。
スマート カードを削除するには、SCardForgetCardType を使用します。
例
次の例は、カード型を導入する方法を示しています。 この例では、hContext が SCardEstablishContext 関数の以前の呼び出しから取得した有効なハンドルであると想定しています。
GUID MyGuid = { 0xABCDEF00,
0xABCD,
0xABCD,
0xAA, 0xBB, 0xCC, 0xDD,
0xAA, 0xBB, 0xCC, 0xDD };
static const BYTE MyATR[] = { 0xaa, 0xbb, 0xcc, 0x00, 0xdd };
static const BYTE MyATRMask[] = { 0xff, 0xff, 0xff, 0x00, 0xff};
LONG lReturn;
lReturn = SCardIntroduceCardType(hContext,
L"MyCardName",
&MyGuid,
NULL, // No interface array
0, // Interface count = 0
MyATR,
MyATRMask,
sizeof(MyATR));
if ( SCARD_S_SUCCESS != lReturn )
printf("Failed SCardIntroduceCardType\n");
注意
winscard.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SCardIntroduceCardType を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winscard.h |
Library | Winscard.lib |
[DLL] | Winscard.dll |