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