Python ctypes中未知数组长度
我正在用 ctypes
从 Python 调用一个 C 语言的函数。这个函数返回一个指向结构体的指针,这个结构体的内存是由库分配的(应用程序稍后会调用另一个函数来释放它)。我在调整函数调用以适应 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 的优秀 customresize()
函数,因为我不拥有这块内存(Memory cannot be resized because this object doesn't own it
)。
1 个回答
4
把Scott的回答改了一下,去掉了resize()
这个调用,结果就成功了:
def customresize(array, new_size):
return (array._type_*new_size).from_address(addressof(array))