1
我想在C#中使用interop在SCardGetCardTypeProviderName。其中一个参数是一个参考,是应该根据所传入的卡上下文智能卡返回供应商的名称这是我使用的代码:SCardGetCardTypeProviderName返回空结果
IntPtr hSC = { value comes from call using SCardEstablishContext }
string cardName = { value comes from SCardUIDlgSelectCard }
int providerNameLength = 256;
string providerName = string.Empty; //doesn't matter how I initialize this
[DllImport("winscard.dll", CharSet = CharSet.Ansi, SetLastError = true)]
public static extern Int32 SCardGetCardTypeProviderName(IntPtr hContext, string szCardName, uint dwProviderId, ref string szProvider, ref int pcchProvider);
int lReturn = SCardGetCardTypeProviderName(hSC, cardName, SCARD_PROVIDER_CSP, ref providerName, ref providerNameLength);
但providerName总是回到空,而providerNameLength变为43,这使我认为这是一个编组问题。但我已经试过编组的providerName为:
- LPWSTR
- LPTSTR
- LPSTR
在后两种情况下,而不是一个空字符串,我得到的奇怪的字符串人物,再次,让我觉得这是一个编组/翻译问题。
令人惊叹!谢谢! – Random