0

このメソッドがあります: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 が返されます。

4

1 に答える 1

2

関数を Unicode または MBCS ビルドで動作させたい場合は_tcslenwcslen.

誰かが Unicode なしで関数を使用しようとした場合にコンパイル時エラーが必要な場合は、に変更LPTSTRLPWSTRます。

于 2013-09-17T14:59:07.070 に答える