WCHAR** を期待するメソッドがあります。このメソッドからデータを取得する必要があります。配列 WCHAR[100] を宣言して関数に渡しています。コンパイラは次のエラーをスローします。
WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);
エラー C2664: 'XXXX': パラメーター 3 を 'WCHAR [100]' から 'WCHAR **' に変換できません
一般的に言えば、関数がポインターへのポインターを受け取る場合 (WCHAR**
この場合)、関数は独自のメモリを割り当て、ポイント先のポインターをそのメモリに設定します。のドキュメントはSomeFunc
、これが実際に起こるかどうかを説明する必要があります。
その場合、次のようなものが必要になる可能性があります。
WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);
そして、result
成功した場合は利用します。
もちろん、その場合、result
指し示すように設定されたメモリの割り当て解除についても心配する必要があるでしょう。のドキュメントにSomeFunc
は、それを行うために必要なことも明示的に記載されている必要があります。