我正在为WWAN卡使用自定义SDK。我希望能够从python中的dll访问函数。我已阅读有关加载DLL和访问函数的信息。
我坚持使用的部分是使用具有引用参数和数组的函数,并在python中使用它们。
以下是我需要帮助的功能的文档页面:\ http://i.imgur.com/0W20Q.png
我将dll放入system32中,因此我可以在没有直接路径的情况下访问它。
到目前为止,我有:
from ctypes import *
sdk = windll.GobiConnectionMgmt
sdk.QCWWAN2kEnumerateDevice( )
我不确定如何格式化参数和返回类型。任何帮助都会很棒。
答案 0 :(得分:0)
好吧,我认为 pDevicesSize 应该是整数, pDevices 应该是一个对象列表,其类的 deviceId (str)和 deviceKey (str)作为属性。
答案 1 :(得分:0)
以适当的设备格式声明结构并传递它将使返回时更容易处理设备。这是一个例子:
from ctypes import *
class Device(Structure):
_fields_ = [
('id',c_ubyte * 256),
('key',c_ubyte * 16)]
sdk = windll.GobiConnectionMgmt
enumerate_device = sdk.QCWWAN2kEnumerateDevices
enumerate_device.restype = c_ulong
enumerate_device.argtypes = [POINTER(c_ubyte),POINTER(Device)]
max_devices = 3
# create a c_ubyte object that can be passed by reference to get the out value.
c = c_ubyte(max_devices)
# create an array of devices
s = (Device * max_devices)()
enumerate_device(byref(c),s)