Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows 64位上与Delphi一起使用libusb?_Windows_Delphi_64 Bit_Driver_Libusb - Fatal编程技术网

在Windows 64位上与Delphi一起使用libusb?

在Windows 64位上与Delphi一起使用libusb?,windows,delphi,64-bit,driver,libusb,Windows,Delphi,64 Bit,Driver,Libusb,读了一点之后,我担心我的32位Delphi应用程序将无法在Windows 7和其他64位Windows系统上使用64位驱动程序,并且它将无法与这些系统上的自定义硬件设备通信。这是真的吗?如果是,是否有解决办法?我在这张照片中遗漏了什么吗?到底是什么让你认为它不会?如果您有64位驱动程序,它可以在64位系统上使用(假设驱动程序工作正常并且签名正确)。32位和64位应用程序都可以通过各种通信机制(如Ioctl或MMF文件)控制驱动程序。问题是,如果代码的所有部分都被正确写入,但是这个问题适用于任何图

读了一点之后,我担心我的32位Delphi应用程序将无法在Windows 7和其他64位Windows系统上使用64位驱动程序,并且它将无法与这些系统上的自定义硬件设备通信。这是真的吗?如果是,是否有解决办法?我在这张照片中遗漏了什么吗?

到底是什么让你认为它不会?如果您有64位驱动程序,它可以在64位系统上使用(假设驱动程序工作正常并且签名正确)。32位和64位应用程序都可以通过各种通信机制(如Ioctl或MMF文件)控制驱动程序。问题是,如果代码的所有部分都被正确写入,但是这个问题适用于任何图书馆,在任何LIPUBB 1上的WiBUSB后端(包括Windows驱动程序的微软)上的任何PropFrm

< P>,我们都没有问题,可以从x86应用程序(C语言应用程序所使用的托管C++库)进行通信。x86和x64平台上的行为相同

我不知道libusb0.1(能够使用libusb-win32内核驱动程序的旧版本),但是当链接指向1.0版本时,您似乎没有使用它

在某些情况下,libusb 1.0将支持libusb-win32内核驱动程序,但除非在特定情况下不需要(WinUSB有一些限制,但我从未遇到过)

我在带有delphi 32位应用程序的Win7 64位笔记本电脑上成功地使用了该驱动程序。到目前为止没有问题。驱动程序也已签名(只有我的.inf文件未签名)


请注意,libusb-win32使用的是“旧”libusb API。

我关心的是使用32位应用程序中的64位usblib dll,因为我不确定在这种情况下是否可以访问其他类型的驱动程序。这就是为什么我请求帮助,可能是为了把自己从一个死胡同中拯救出来。谢谢您的回答。@avra没有可用的32位DLL吗?如果是,就用它。如果写入正确,32位用户模式DLL将与64位驱动程序正常通信。我们所有基于驱动程序的产品都是这样工作的。嗯,与此同时,事情变得有点复杂了。。。我必须使用libusb0.1版本(libusb-win32),其中32位版本的DLL(libusb0_x86.DLL)调用32位libusb0.sys驱动程序,64位版本的DLL(libusb0.DLL)调用64位libusb0.sys驱动程序。这可能意味着调用32位DLL将毫无用处。我想知道是否有人能证实这一点。感谢您对本主题感兴趣。@avra有点奇怪,32位DLL需要32位驱动程序,不能与64位驱动程序一起使用。正确编写的代码不应该关心驱动程序是32位还是64位。如果您有库的源代码,您可以检查,到底是什么原因造成了这种限制-是不同的文件名很简单,还是问题更基本的WinUSB接缝仅适用于WinXP SP2和更新版本,这是不好的,因为我必须支持带有SP1和没有任何SP的Win2K和WinXP。WinUSB不能同时与多个应用程序通信。这对于当前的应用程序来说不是问题,但对于某些未来的硬件来说可能是一个问题,因为需要这样做,我不想重复学习。此外,WinUSB不存在于非Windows操作系统上,这目前不是问题,但将来会是问题。所有这些都让我想到了普通的libusb1.0,或者转向类似CDC类的东西。谢谢你的回答。如我的回答中所述,如果你使用LibUsb 1.0,你实际上是在使用WinUSB驱动程序,因为它是当前代码支持的唯一驱动程序(如果你的设备不是HID,但在这种情况下,除了linux支持,为什么要使用LibUsb?)。正如你问题中的链接所指出的,“受支持的系统都是Windows平台,从Windows XP开始”。@avra因为没有64位版本的Windows 2000或XP SP2,为什么要担心那些平台上的64位版本?@David Heffernan:我想问题在于确保当前在win2000上运行的应用程序在x64版本的vista上运行相同的版本。(但这意味着当前版本在2000上运行,因此设备是HID或使用libusb0.1)@virtual在x64上运行此应用时会发生什么?顺便说一句,x64是vista,它已经在这里很久了。