casmcard包装

时间:2012-05-21 17:20:38

标签: c# c++ smartcard

我有一张智能卡,一个用C ++编写的简单sdk(casmcard.dll)。

我需要通过托管代码(C#)调用上面的dll中的一些方法来专门读取和写入一些特定的块或扇区。

找不到casmcard.dll包装。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来你需要深入了解互操作。如果它是一个COM对象,你可以导入它&让.net为你创建包装器。如果它是旧学校dll功能,那么你只需要导入它们。

Interop是一种黑色艺术,所以你需要谷歌周围的地图和&编组类型。

修改

所以你的功能看起来像?

CasCLGetSN( IN SCARDHANDLE hCard, OUT LPBYTE pbCSNBuffer, IN DWORD cbCSNBufferSize, OUT LPDWORD pcbCSNLength )

试试这个:

CasCLGetSN(ScardHandle hCard, out IntPtr pbCSNBuffer, UInt32 cbCSNBufferSize, out UInt32 pcbCSNLength)

然后,您需要使用重载的Marshal.Copy()来获取pbCSNBuffer的内容。还要检查scardHandle的定义是什么。如果它是一个结构,那么声明它&添加Sequential属性。