неизвестная длина массива в типах Python - PullRequest
3 голосов
/ 07 июля 2010

Я вызываю функцию C, используя ctypes из Python.Он возвращает указатель на структуру в памяти, выделенной библиотекой (приложение вызывает другую функцию, чтобы освободить ее позже).У меня проблемы с выяснением того, как массировать вызов функции для соответствия 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, чтобы я мог получить доступ к nthэлемент массива InterfaceInfo?

Я не могу использовать Превосходная функция Скотта customresize() , потому что мне не принадлежит память (Memory cannot be resized because this object doesn't own it).

1 Ответ

3 голосов
/ 07 июля 2010

Изменение ответа Скотта для удаления сработавшего вызова resize():

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