卡斯卡包装器
本文关键字:包装 卡斯 | 更新日期: 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
属性。