(私はWindowsを使用しています。)
DLL から呼び出される Python のコールバック関数があります ( ctypesモジュールを使用します)。1 つのパラメーターの型はva_list
です。これの内容を取得する方法はありますか?正しいメモリ位置を読み取る方法がわかりません (ここに説明があります)。
va_list
Python 用のパーサーがあれば最高です。または、 の引数を取得するための関数を含む DLL va_list
。
誰かが解決策を知っていますか?
私は解決策を見つけました:
ctypes を使用して、va_list パラメーターを受け入れる vsprintf などの標準 C 関数を呼び出すことができます。(フォーマットされた印刷は、私が意図したものです)。
これはそれを呼び出すための私のコードです:
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
。