Python中的参考参数

时间:2011-07-29 19:45:37

标签: python sdk ctypes

我正在为WWAN卡使用自定义SDK。我希望能够从python中的dll访问函数。我已阅读有关加载DLL和访问函数的信息。

我坚持使用的部分是使用具有引用参数和数组的函数,并在python中使用它们。

以下是我需要帮助的功能的文档页面:\ http://i.imgur.com/0W20Q.png

我将dll放入system32中,因此我可以在没有直接路径的情况下访问它。

到目前为止,我有:

from ctypes import *
sdk = windll.GobiConnectionMgmt
sdk.QCWWAN2kEnumerateDevice( )

我不确定如何格式化参数和返回类型。任何帮助都会很棒。

2 个答案:

答案 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)