このメソッドがあります:SCardListReaders、http ://msdn.microsoft.com/en-us/library/windows/desktop/aa379793(v=vs.85).aspx
MSDN に例があります。
この呼び出しの後:
LPTSTR pmszReaders = NULL;
LPTSTR pReader;
lReturn = SCardListReaders(hSC,
NULL,
(LPTSTR)&pmszReaders,
&cch );
複数文字列から文字列を抽出するようなコードが存在します (複数文字列 pmszReaders
は 2 つのヌル文字で終了します)。
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;
}
ちょうど私の質問です。上記のコードはUnicodeでしか機能しないと思いますよね? プロジェクトで Unicode サポートを無効にすると、上記のコード スニペットでリーダー名が正しく抽出されないと思いますか? ではない?
たとえば、チェックwcslen
すると、Unicode が設定されている場合は 22 が返され、Unicode が設定されていない場合は 24 が返されます。