次の方法で共有


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 を使用してアクティブ化することができ、カード内の他のサービスへのアクセスを提供します。

戻り値

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

リターン コード 説明
Success
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 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winscard.h
Library Winscard.lib
[DLL] Winscard.dll

関連項目

SCardEstablishContext

SCardListCards

SCardListInterfaces

SCardListReaderGroups

SCardListReaders