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中提取字符串(多字符串以双空字符终止)。

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 版本中工作,请使用 Microsoft 特定_tcslen而不是wcslen.

如果有人尝试在没有 Unicode 的情况下使用该函数,如果您想要编译时错误,请更改LPTSTRLPWSTR.

于 2013-09-17T14:59:07.070 回答