TraceMessageは可変個の引数を持つWinAPI関数です。これは、Windowsトレースでトレースメッセージを生成するprintfに似た表記法を持つトレース機能です。奇妙な部分は、専用の引数ではなく省略記号の一部として書式文字列を受け取ることです。 この関数を自分自身の関数で 'オーバーライド'することができます。これはTraceMessageVa(これはTraceMessageと同じですが、省略記号ではなくva_argsを使用します)を呼び出す必要があります。省略記号とva_argsトリックが必要です
これまでのところとても良いです。今は、sprintf
のような関数を使用してトレースされたメッセージにアクセスしたいとします。この関数は、省略記号の外に書式文字列を持ちます。だから私は
する必要があります - 省略形の書式文字列引数を取得します。
- 最初の引数なしで新しいva_listを作成します。
どうすればいいですか? Visual Studioコンパイラ固有のソリューションも使用できます。ありがとう!
TraceMessageのドキュメントでは、あなたが言うことはしません。 –
それは正しいですが、あなたは私を信じるか、またはこれをトレースコンテキストに関係なく、省略記号とva_argsに関する質問として扱うべきです... –