SCardListReadersA 関数 (winscard.h)
SCardListReaders 関数は、名前付きリーダー グループのセット内のリーダーの一覧を提供し、重複を排除します。
呼び出し元はリーダー グループの一覧を提供し、名前付きグループ内のリーダーの一覧を受け取ります。 認識できないグループ名は無視されます。 この関数は、現在システムにアタッチされ、使用できる名前付きグループ内のリーダーのみを返します。
構文
LONG SCardListReadersA(
[in] SCARDCONTEXT hContext,
[in, optional] LPCSTR mszGroups,
[out] LPSTR mszReaders,
[in, out] LPDWORD pcchReaders
);
パラメーター
[in] hContext
クエリの リソース マネージャー コンテキスト を識別するハンドル。 リソース マネージャー コンテキストは、 SCardEstablishContext の以前の呼び出しによって設定できます。
このパラメーターが NULL に設定されている場合、リーダーの検索はどのコンテキストにも限定されません。
[in, optional] mszGroups
複数文字列としてシステムに定義されているリーダー グループの名前。 NULL 値を使用して、システム内のすべてのリーダー (つまり、SCard$AllReaders グループ) を一覧表示します。
[out] mszReaders
指定されたリーダー グループ内のカードリーダーを一覧表示する複数文字列。 この値が NULL の場合、 SCardListReaders は pcchReaders で指定されたバッファー長を無視し、このパラメーターが NULL でない場合に返されるバッファーの長さを pcchReaders に書き込み、成功コードを返します。
[in, out] pcchReaders
mszReaders バッファーの長さ (文字数)。 このパラメーターは、後続のすべての null 文字を含む、複数文字列構造体の実際の長さを受け取ります。 バッファー長が SCARD_AUTOALLOCATE として指定されている場合、 mszReaders はバイト ポインターへのポインターに変換され、複数文字列構造を含むメモリ ブロックのアドレスを受け取ります。 このメモリ ブロックは 、SCardFreeMemory で割り当てを解除する必要があります。
戻り値
この関数は、成功するか失敗したかに応じて異なる値を返します。
リターン コード/値 | 説明 |
---|---|
|
SCARD_S_SUCCESS |
|
SCARD_E_NO_READERS_AVAILABLE |
|
SCARD_E_READER_UNAVAILABLE |
|
エラー コード。 詳細については、「 スマート カードの戻り値」を参照してください。 |
注釈
SCardListReaders 関数はデータベース クエリ関数です。 その他のデータベース クエリ関数の詳細については、「 スマート カード データベース クエリ関数」を参照してください。
例
次の例は、リーダーの一覧を示しています。
LPTSTR pmszReaders = NULL;
LPTSTR pReader;
LONG lReturn, lReturn2;
DWORD cch = SCARD_AUTOALLOCATE;
// Retrieve the list the readers.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaders(hSC,
NULL,
(LPTSTR)&pmszReaders,
&cch );
switch( lReturn )
{
case SCARD_E_NO_READERS_AVAILABLE:
printf("Reader is not in groups.\n");
// Take appropriate action.
// ...
break;
case SCARD_S_SUCCESS:
// Do something with the multi string of readers.
// Output the values.
// A double-null terminates the list of values.
pReader = pmszReaders;
while ( '\0' != *pReader )
{
// Display the value.
printf("Reader: %S\n", pReader );
// Advance to the next value.
pReader = pReader + wcslen((wchar_t *)pReader) + 1;
}
// Free the memory.
lReturn2 = SCardFreeMemory( hSC,
pmszReaders );
if ( SCARD_S_SUCCESS != lReturn2 )
printf("Failed SCardFreeMemory\n");
break;
default:
printf("Failed SCardListReaders\n");
// Take appropriate action.
// ...
break;
}
注意
winscard.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SCardListReaders を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winscard.h |
Library | Winscard.lib |
[DLL] | Winscard.dll |