我有一台gtop11dotnet.dll。它是来自金雅拓网站的.NET PKCS#11库v2.2.0.9。DLL包含可用于检索智能卡序列号或GUID的C_GetCardProperty方法。根据PKCS#11用户指南和.NET集成指南,它是"byte[] GetCardProperty(字节属性,字节标志)“。它接收两个字节作为参数,并以字节数组的形式检索例如序列号或GUID。我的问题是如何获取序列号并将其存储到托管字节数组中?
这是我的尝试:
[DllImport("gtop11dotnet.dll")]
public static extern byte[] C_GetCardProperty(byte property, byte flags);
public static void Main()
{
byte[] bytes = new byte[12];
bytes = C_GetCardProperty(0x06, 0x00) //Error at this line -> Cannot marshal 'return value': Invalid managed/unmanaged type combination.
}谢谢你的帮助。
发布于 2011-07-01 02:21:37
什么是".NET PKCS#11"?PKCS#11 v2.20和v2.30草案都不包含C_GetCardProperty方法。您可能正在面对一些专有的Gemalto/.NET的东西,它与世界上其他地方所知的加密没有任何关系,而Gemalto做了一件“好”的事情,它在任意函数前面加上"C_“前缀并调用结果PCKS#11。PKCS#11是一个C接口,与托管/非托管代码或.NET无关。
发布于 2013-02-28 19:10:44
尝尝这个。
公共静态外部uint C_GetCardProperty(uint slotID,字节属性,字节标志,byte[] blob,参考字节长度);
https://stackoverflow.com/questions/6535681
复制相似问题