C#调用C++DLL中 HANDLE *phCard怎么处理

coding008 coding008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
C++原函数声明是
DWORD _stdcall HSListReaders
(
OUT LPSTR pszReaderName,
IN OUT DWORD *pdwReaderNameLen,
OUT DWORD *pdwReaderNum
)
参数说明:
pszReaderName: 输出,多字符串,所有读写器的名称,如果该值为NULL, 由dwReaderNameLen返回读写器名字的长度。
pdwReaderNameLen: 返回读写器名字的长度。输入:缓冲区的长度,输出:读写器名称的长度。
pdwReaderNum: 输出,返回读写器的总个数。


DWORD _stdcall HSConnectDev
(
IN LPCSTR szDevName,
OUT HANDLE *phCard
)
参数说明:
szDevName: 输入,可用设备名。
phCard: 输出,设备的操作句柄。

[DllImport("GEA00001.dll", EntryPoint = "HSListReaders", CharSet = CharSet.Ansi)]
public static extern uint HSListReaders(System.Text.StringBuilder p, ref uint pdwReaderNameLen, ref uint pdwReaderNum);

[DllImport("GEA00001.dll", EntryPoint = "HSConnectDev", CharSet = CharSet.Auto)]
public static extern uint HSConnectDev(String szDevName, ref IntPtr hCard);

调用时这样的,设备名正常输出,但是获取设备的操作句柄,一直都是0,请大家帮忙

uint pdwReaderNum=0;
uint pdwReaderNameLen=0;
IntPtr hCard = IntPtr.Zero;

Class1.HSListReaders(null, ref pdwReaderNameLen, ref pdwReaderNum);

System.Text.StringBuilder pszReaderName = new System.Text.StringBuilder((int)pdwReaderNameLen);

Class1.HSListReaders(pszReaderName, ref pdwReaderNameLen, ref pdwReaderNum);


String szDevName = pszReaderName.ToString();

Class1.HSConnectDev(szDevName, ref hCard);
...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
coding008
C# 111,128 成员 642,537 内容