Wskaźniki i tablice w typach Pythona

Mam bibliotekę DLL zawierającą funkcję C z takim prototypem:

int c_read_block(uint32 addr, uint32 *buf, uint32 num);

Chcę to nazwać z Pythona przy użyciu ctypów. Funkcja oczekuje wskaźnika do fragmentu pamięci, w którym zapisze wyniki. Nie wiem, jak skonstruować i przekazać taki kawałek pamięci. Dokumentacja ctypes niewiele pomaga.

Konstruowanie tablicy i przekazywanie jej „byref”, w ten sposób:

    cresult = (c_ulong * num)()
    err = self.c_read_block(addr, byref(cresult), num)

Podaje ten komunikat o błędzie:

ArgumentError: argument 3: <type 'exceptions.TypeError'>: expected LP_c_ulong instance instead of pointer to c_ulong_Array_2

Domyślam się, że to dlatego, że tablica ulong Pythona nie jest niczym tablica c uint32. Powinienem użyćcreate_char_string. Jeśli tak, jak przekonać Pythona, aby „rzucił” ten bufor na LP_c_ulong?

questionAnswers(3)

yourAnswerToTheQuestion