卡斯卡包装器

本文关键字:包装 卡斯 | 更新日期: 2023-09-27 18:34:55

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

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

未找到卡斯卡.dll包装器。

有什么想法吗?

卡斯卡包装器

听起来你需要深入研究互操作。如果它是一个 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 属性。