2

(私はWindowsを使用しています。)

DLL から呼び出される Python のコールバック関数があります ( ctypesモジュールを使用します)。1 つのパラメーターの型はva_listです。これの内容を取得する方法はありますか?正しいメモリ位置を読み取る方法がわかりません (ここに説明があります)。

va_listPython 用のパーサーがあれば最高です。または、 の引数を取得するための関数を含む 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

4

0 に答える 0