关于C#64位程序调用Windows API 问题

花花11世界 2017-07-27 12:17:23
由于程序需要使用大量内存,然后程序必须是64 位的 ,然而64位程序调用API 好像有问题 比如我程序是64 位的 想用setupapi.dll 中 这个 SetupDiEnumDeviceInterfaces 函数 找HID设备 则找不到设备,
[DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr deviceInfoSet, IntPtr deviceInfoData, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData);
这个是不是调用的是system64种的setupapi 还是 system32 中的setupapi
是64 位程序调用64 位API 是有另外的方法吗?
DllImport 导入的 DLL 是全面默认32 位的DLL 吗
求能让指点
...全文
846 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilanse 2018-03-05
  • 打赏
  • 举报
回复
将编译器的配置管理器里面平台改成X86
happy0423 2018-02-08
  • 打赏
  • 举报
回复
楼主,问题如何解决了啊?
花花11世界 2017-10-31
  • 打赏
  • 举报
回复
还是不行 64位程序 [DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = false)] private static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr deviceInfoSet, IntPtr deviceInfoData, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData); 64位程序下这个函数返回 false 找HID 设备失败,要工程改生产32 位程序不行 我想要64位程序用HID 还不知道怎么弄
xingfen3397 2017-09-06
  • 打赏
  • 举报
回复
[DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = false)] 把true改为false就可以了,我刚遇到一模一样的问题,现在解决了,希望可以帮到你,哈哈
sky79 2017-07-30
  • 打赏
  • 举报
回复
楼上,正好说反了,sysWoW64里放的是32位,system32放的才是64位
apuiq 2017-07-28
  • 打赏
  • 举报
回复
32位的工程会调用System32里的dll,64位的工程会调SysWOW64里的。自动选的。如果你发现32位的dll正常运行的功能,用64位的dll却出错,先仔细检查一下int32和int64转换对了没有,dll的位数变了,要对应更改。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧