次の方法で共有


SCardGetProviderIdA 関数 (winscard.h)

SCardGetProviderId 関数は、特定のカードの プライマリ サービス プロバイダーの識別子 (GUID) を返します。

呼び出し元は、スマート カード の名前を指定し (以前にシステムに導入されました)、プライマリ サービス プロバイダー GUID の登録済み識別子 (存在する場合) を受け取ります。

構文

LONG SCardGetProviderIdA(
  [in]  SCARDCONTEXT hContext,
  [in]  LPCSTR       szCard,
  [out] LPGUID       pguidProviderId
);

パラメーター

[in] hContext

クエリのリソース マネージャー コンテキスト を識別するハンドル。 リソース マネージャー コンテキストは、SCardEstablishContextする前の呼び出しによって設定できます。 このパラメーターは NULLできません。

[in] szCard

システムに定義されているカードの名前。

[out] pguidProviderId

プライマリ サービス プロバイダーの識別子 (GUID)。 このプロバイダーは COM を使用してアクティブ化することができ、カード内の他のサービスへのアクセスを提供します。

戻り値

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

リターン コード 形容
成功 の
SCARD_S_SUCCESS。
エラーの
エラー コード。 詳細については、「スマート カードの戻り値 を参照してください。

備考

この関数はリダイレクトされませんが、リモート デスクトップ セッション内で関数を呼び出してもエラーは発生しません。 これは、結果がローカル コンピューターではなくリモート コンピューターからの結果であることを意味するだけです。

SCardGetProviderId 関数は、データベース クエリ関数です。 その他のデータベース クエリ関数の詳細については、「スマート カード データベース クエリ関数の」を参照してください。

次の例は、指定したカードのプロバイダー ID を取得する方法を示しています。 この例では、hContext は、SCardEstablishContext 関数の以前の呼び出しから取得した有効なハンドルであり、SCardIntroduceCardType 関数への以前の呼び出しによって "MyCardName" が導入されたことを前提としています。

GUID    guidProv;
LONG    lReturn;

lReturn = SCardGetProviderId(hContext, 
                             L"MyCardName",
                             &guidProv);
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardGetProviderId - %x\n", lReturn);
else
{
    // Use the provider GUID as needed.
    // ...
}

手記

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

必要条件

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

関連項目

SCardEstablishContext

SCardListCards

SCardListInterfaces

SCardListReaderGroups

SCardListReaders