Ich schreibe Framework in Python 2.7, die Funktionalität zum Testen von C geschrieben APIs bieten würde. Ich habe die DLL und den C-Quellcode selbst. Das Problem ist, dass einige der C-API-Funktionen als Eingabe-Struktur eines Callback-Funktionen benötigen und Ich kann nicht finden, wie Sie in Python Struktur erstellen, welche Felder sind die C-Funktionszeiger. Ich weiß, wie man Callback-Funktion in Python mit ctypes erstellen, aber ich muss diese Callbacks in C-Struktur packen, um an C API übergeben. All dies in Code wie folgt aussieht:C-Funktion Pointer-Struktur in Python erstellen
Die C Funktionszeiger und die C-Struktur:
#define DRIVERCALLAPI
typedef void*(DRIVERCALLAPI *fn_DRV_COMM_Open)(void*);
typedef void(DRIVERCALLAPI *fn_DRV_COMM_Close)(void*);
typedef int(DRIVERCALLAPI *fn_DRV_COMM_Transfer)(void *, unsigned char *, int);
typedef struct DriverCallbacks_t
{
fn_DRV_COMM_Open drvcomm_Open;
fn_DRV_COMM_Close drvcomm_Close;
fn_DRV_COMM_Transfer drvcomm_Transfer;
} DriverCallbacks;
typedef struct InitDataEntry_t
{
char iface[64];
void* handle;
} InitDataEntry;
Wo Griff auf ein Objekt von DriverCallbacks.
typedef struct InitDataContainer_t
{
uint32_t size;
uint32_t id;
InitDataEntry* data;
} InitDataContainer;
Der Zeiger eines InitDataContainer sollte auf die API-Funktion übergeben werden.
void* dev_Create(void* args)
Die API initialisiert die Callback-Funktionen mit entsprechenden Funktionen, um sie später zu verwenden. Ich muss irgendwie Python-Strukturen von DriverCallbacksInitDataEntry und InitDataContainer erstellen. Irgendein Hinweis darauf, wie es erreicht werden kann? Danke im Voraus !