(我在Windows上。)
我在Python中有一个从DLL调用的回调函数(我使用ctypes模块)。一个参数的类型为va_list
。有没有办法得到这个的内容?我不知道如何阅读正确的内存位置(here是一个描述)。
如果有一个用于Python的va_list
解析器,那将是最好的。或者包含用于获取va_list
的参数的函数的DLL。
有谁知道解决方案?
您可以使用ctypes调用标准C函数,例如vsprintf,它接受va_list参数。 (格式化打印我希望这样做。)
这是我的代码:
bufferString = ctypes.create_string_buffer(4096)
ctypes.cdll.msvcrt.vsprintf(bufferString, fmt.raw, ctypes.cast(ap, ctypes.c_void_p))
print ctypes.cast(bufferString, ctypes.c_char_p)
fmt.raw
指向格式字符串,ap
是va_list
的地址。