Python call DLL pointer parameter

 

#coding=utf-8
import threading
from ctypes import *

class DeviceAttribute(Structure):
    _fields_ = [("vendorId", c_uint16),
                ("productId", c_uint16),
                ("deviceAddress", c_uint32),
                ("serialNumber", c_char * 64),
                ("uri", c_char * 255)]

class Device(Structure):
    pass



deviceAttributeHandle = POINTER(DeviceAttribute)
deviceAttributeHandle_p = POINTER(deviceAttributeHandle)

dll = CDLL("./Nectaf.dll")


a = dll.Initialize()

if a!=0:
    exit(1)

print("init ok")

deviceCount = c_int(0)

GetDeviceList = dll.GetDeviceList
GetDeviceList.argtypes = [deviceAttributeHandle_p,POINTER(c_int)]
GetDeviceList.restype = c_int

# pDeviceAttr = POINTER(POINTER(DeviceAttribute))

# dll.GetDeviceList(deviceAttributeHandle_p,byref(deviceCount))

deviceAttribute = deviceAttributeHandle()
# ret = getDeviceList(byref(self.deviceAttribute), byref(nCount))

dll.GetDeviceList(byref(deviceAttribute),byref(deviceCount))

print(deviceCount.value)

 

Read More: