向传递给pythonctypes callb的C缓冲区添加数据

2024-04-24 11:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在DLL中有一个C函数,它通过ctypes调用Python函数。在

C函数使用以下原型调用函数:

void GetData(u8 Buffer[], u16 Length);

请注意,缓冲区指向DLL中保存的静态数据数组。在

我为此生成了一个Python函数类型,如下所示:

^{pr2}$

我的Python回调函数在没有任何明显问题的情况下被调用。在

我的问题是,我不知道如何让ctypes将原始数据添加到Python外部的缓冲区中。有没有办法定义一个ctypes字符串缓冲区并给它一个DLL缓冲区的地址?在


Tags: 函数buffer数组ctypes原型length缓冲区指向
1条回答
网友
1楼 · 发布于 2024-04-24 11:19:24

您可以使用libc中的memcpy。如果您的c_char_pbuffer,而{}是{}:

libc = ctypes.cdll.LoadLibrary('libc.so.6')
content = 'My new content'
bufcontent = ctypes.create_string_buffer(content)
libc.memcpy(buffer. newcontent, min(len(content) + 1, bufferlen))

与您在C中所做的相同(注意,我使用memcpy来表示可能的二进制内容,但是如果您不关心它,请使用strncpy代替

相关问题 更多 >