python ctypes中未知的数组长度

时间:2010-07-07 07:16:52

标签: python arrays pointers ctypes winapi

我正在使用Python中的ctypes调用C函数。它返回一个指向结构的指针,在由库分配的内存中(应用程序调用另一个函数以便稍后释放它)。我无法弄清楚如何按摩函数调用以适应ctypes。结构看起来像:

struct WLAN_INTERFACE_INFO_LIST {
  DWORD               dwNumberOfItems;
[...]
  WLAN_INTERFACE_INFO InterfaceInfo[];
}

我一直在使用看起来像这样的Structure子类:

class WLAN_INTERFACE_INFO_LIST(Structure):
    _fields_ = [
        ("NumberOfItems", DWORD),
        [...]
        ("InterfaceInfo", WLAN_INTERFACE_INFO * 1)
        ]

如何告诉ctypes让我访问InterfaceInfo数组的第n项?

我无法使用Scott's excellent customresize() function,因为我没有内存(Memory cannot be resized because this object doesn't own it)。

1 个答案:

答案 0 :(得分:3)

修改Scott的答案以删除resize()来电:

def customresize(array, new_size):
    return (array._type_*new_size).from_address(addressof(array))