次の方法で共有


SCardListReaderGroupsA 関数 (winscard.h)

SCardListReaderGroups 関数は、以前にシステムに導入 リーダー グループの一覧を提供します。

構文

LONG SCardListReaderGroupsA(
  [in]      SCARDCONTEXT hContext,
  [out]     LPSTR        mszGroups,
  [in, out] LPDWORD      pcchGroups
);

パラメーター

[in] hContext

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

このパラメーターが NULLに設定されている場合、リーダー グループの検索はどのコンテキストにも限定されません。

[out] mszGroups

システムに定義され、現在の ターミナルで現在のユーザーが使用できるリーダー グループを一覧表示する複数文字列。 この値が NULL場合、SCardListReaderGroups は、pcchGroupsで指定されたバッファーの長さを無視し、このパラメーターが pcchGroupsに NULL されていない場合に返されたバッファーの長さを書き込み、成功コード 返します。

価値 意味
SCARD_ALL_READERS
TEXT("SCard$AllReaders\000")
閲覧者を一覧表示するときにグループ名が指定されていない場合に使用されるグループ。 リーダーがどのグループに含まれているかに関係なく、すべてのリーダーの一覧を返します。
SCARD_DEFAULT_READERS
TEXT("SCard$DefaultReaders\000")
システムに導入されたときにすべてのリーダーが追加される既定のグループ。
SCARD_LOCAL_READERS
TEXT("SCard$LocalReaders\000")
未使用のレガシ値。 これは、リーダー グループ API を使用して変更できない内部管理グループです。 これは、列挙にのみ使用することを目的としています。
SCARD_SYSTEM_READERS
TEXT("SCard$SystemReaders\000")
未使用のレガシ値。 これは、リーダー グループ API を使用して変更できない内部管理グループです。 これは、列挙にのみ使用することを目的としています。

[in, out] pcchGroups

mszGroups の長さはバッファー 文字単位で、末尾のすべての null 文字を含む、複数文字列構造の実際の長さを受け取ります。 バッファーの長さが SCARD_AUTOALLOCATE として指定されている場合、mszGroups はバイト ポインターへのポインターに変換され、複数文字列構造を含むメモリ ブロックのアドレスを受け取ります。 このメモリ ブロックは、SCardFreeMemoryで割り当てを解除する必要があります。

戻り値

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

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

備考

グループは、少なくとも 1 つの リーダーが含まれている場合にのみ返されます。 これには、SCard$DefaultReadersグループが含まれます。 SCard$AllReaders グループは暗黙的にのみ存在するため、返すことができません。

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

次の例は、リーダー グループの一覧を示しています。

LPTSTR          pmszReaderGroups = NULL;
LPTSTR          pReaderGroup;
LONG            lReturn;
DWORD           cch = SCARD_AUTOALLOCATE;
    
// Retrieve the list the reader groups.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaderGroups(hSC,
                                (LPTSTR)&pmszReaderGroups,
                                &cch );
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardListReaderGroups\n");
else
{
    // Do something with the multi string of reader groups.
    // Output the values.
    // A double-null terminates the list of values.
    pReaderGroup = pmszReaderGroups;
    while ( '\0' != *pReaderGroup )
    {
        // Display the value.
        printf("%S\n", pReaderGroup );
        // Advance to the next value.
        pReaderGroup = pReaderGroup + wcslen((wchar_t *) pReaderGroup) + 1;
    }

    // Remember to free pmszReaderGroups by a call to SCardFreeMemory.
    // ...
}

手記

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

必要条件

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

関連項目

SCardEstablishContext

SCardFreeMemory

SCardGetProviderId

SCardListCards

SCardListInterfaces

SCardListReaders