Windows Management Instrumentation (4-2)

処理結果の中に漢字が含まれていたケース("SELECT * FROM Win32_LogicalDisk")の実行時に文字化けしてしまったので、
String WmiResult::getString(VARIANT *value);
メソッドを以下のように修正しました。
wmi.cpp

/*
 *  VARIANTデータを文字列値に変換し取得する
 *  param   : データ(VARIANTポインター)
 *
 *  return  : String
 */
String WmiResult::getString(VARIANT *value) {
    String result;
    if (value != NULL) {
        if (isArray(value)) {
            string_vector list = getStringArray(value);
            if (!list.empty())
                result = list.at(0);
        }
        else {
            basic_stringstream<_TCHAR> buf;
            if (getType(value) == VT_BOOL) {
                BSTR bool_str;
                /*
                 *  VT_BOOL型のデータをVT_BSTR型のデータに変換
                 *  return : S_OK = 正常に変換できた(ここでは結果はチェックしない)
                 *           その他 = エラー
                 *  参照:http://msdn.microsoft.com/en-us/library/ms221338.aspx
                 */
                VarBstrFromBool(((isByRef(value)) ? *value->pboolVal : value->boolVal), 0, LOCALE_NOUSEROVERRIDE, &bool_str);
                buf << _bstr_t(bool_str);
            }
            else {
                buf << _bstr_t(*value);
            }
            result = buf.str();
        }
    }
    return result;
}

これで、漢字も問題なく表示できました。