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