SCardIntroduceCardTypeW 関数 (winscard.h)

SCardIntroduceCardType 関数は、スマート カードスマート カード データベースに追加することによって、スマート カード サブシステム (アクティブ ユーザー用) に導入します。

構文

LONG SCardIntroduceCardTypeW(
  [in]           SCARDCONTEXT hContext,
  [in]           LPCWSTR      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 文字列 ApbAtr で指定された ATR と比較されると、A が M = pbAtrを &場合にのみ一致します。ここで、M は指定されたマスクであり、& はビットごとの AND を表します。

[in] cbAtrLen

ATR とオプションの ATR マスクの長さ。 この値が 0 の場合、ATR の長さは通常の ATR 解析によって決定されます。 pbAtr 値が指定されている場合、この値を 0 にすることはできません。

戻り値

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

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

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winscard.h
Library Winscard.lib
[DLL] Winscard.dll

こちらもご覧ください

SCardEstablishContext

SCardForgetCardType

SCardIntroduceReader

SCardIntroduceReaderGroup

SCardListCards