代码之家  ›  专栏  ›  技术社区  ›  fmark

python ctypes中的数组长度未知

  •  3
  • fmark  · 技术社区  · 14 年前

    我正在使用调用C函数 ctypes 从蟒蛇。它返回一个指向结构的指针,该结构位于库分配的内存中(应用程序稍后调用另一个函数释放它)。我很难弄清楚如何按摩函数调用以适应CTypes。结构如下:

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

    我一直在使用这样的结构子类:

    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 回复  |  直到 14 年前
        1
  •  3
  •   fmark    14 年前

    修改Scott的答案以删除 resize() 呼叫工作:

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