IDebugProperty3::GetStringChars
このプロパティに関連付けられている文字列を取得し、ユーザー指定のバッファーに格納します。
構文
パラメーター
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);
}