次の方法で共有


IDebugProperty3::GetStringChars

このプロパティに関連付けられている文字列を取得し、ユーザー指定のバッファーに格納します。

構文

int GetStringChars(
    uint       buflen,
    out string rgString,
    out uint   pceltFetched
);

パラメーター

buflen
[入力] ユーザー指定のバッファーで保持できる最大文字数。

rgString
[出力] 文字列を返します。

[C++ のみ]、rgString は、文字列の Unicode 文字を受け取るバッファーへのポインターです。 このバッファーのサイズは、少なくとも buflen 文字 (バイトではない) である必要があります。

pceltFetched
[出力] バッファーに実際に格納されている文字数が返されます。 (C++ では NULL を指定できます)。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、エラー コードを返します。

解説

C++ では、バッファーの長さが buflen Unicode 文字以上であることを保証するために注意する必要があります。 Unicode 文字は 2 バイト長であることに注意してください。

Note

C++ では、返される文字列に終端の null 文字は含まれません。 指定されている場合、pceltFetched では文字列の文字数を指定します。

CStringW RetrievePropertyString(IDebugProperty2 *pPropInfo)
{
    CStringW returnString = L"";
    CComQIPtr<IDebugProperty3> pProp3 = pPropInfo->pProperty;
    If (pProp3 != NULL) {
        ULONG dwStrLen = 0;
        HRESULT hr;
        hr = pProp3->GetStringCharLength(&dwStrLen);
        if (SUCCEEDED(hr) && dwStrLen > 0) {
            ULONG dwRead;
            CStrBufW buf(returnString,dwStrLen,CStrBuf::SET_LENGTH);
            hr = pProp3->GetStringChars(dwStrLen,
                                        reinterpret_cast<WCHAR*>(static_cast<CStringW::PXSTR>(buf)),
                                        &dwRead);
        }
    }
    return(returnString);
}

関連項目