我需要加载.dll文件中提供的不同硬件驱动程序。问题似乎在于,一个设备的驱动程序是在64位dll中给出的,而另一设备(较旧)显然依赖于32位dll中给出的驱动程序。我想通过用C#编写的程序来控制它们,该程序将通过python包装器运行。
显然,我不能直接从一个程序运行两个设备,但是我需要一种相互依赖的方法来解决它们-例如:设备1等待设备2完成某些工作。有什么办法可以解决这个问题,还是我需要在两个单独的程序中运行它们并通过python包装器相互依赖来管理操作?
问候
在64位Windows上,64位进程不能使用32位DLL,而32位进程不能使用64位DLL。Microsoft已记录以下内容:
在64位Windows上,64位进程无法加载32位动态链接库(DLL)。此外,一个32位进程不能加载64位DLL。
您将需要一个与32位DLL进行通信的32位进程和一个与64位DLL进行通信的64位进程。微软这样说:
但是,64位Windows支持64位和32位进程之间的远程过程调用(RPC)(在同一台计算机上和跨计算机)。
然后问题变成了如何让Python与这些进程通信的问题之一。需要某种形式的进程间通信(IPC)。微软数十年前就发明了一种可以做到这一点的技术-使用Out of Process COM服务器(过程外)的COM接口。
总体思路是:
COM在幕后提供了IPC机制,该机制允许64位客户端访问64位进程外COM服务器,并允许64位客户端访问32位进程外服务器。您甚至可以让32位客户端与32位和64位进程外COM服务器进行通信。
我尚未使用较新的MS语言完成Windows的低级工作。当我不得不做您需要解决的问题时,使编写COM服务器和COM接口变得容易的两种主要技术是:
我比较喜欢ATL,因为它不需要MFC库并且开销较小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句