IDebugProperty3::GetStringChars
Извлекает строку, связанную с этим свойством и сохраняет ее в пользователь-поставленном буфере.
HRESULT GetStringChars(
ULONG buflen,
WCHAR* rgString,
ULONG* pceltFetched
);
int GetStringChars(
uint buflen,
out string rgString,
out uint pceltFetched
);
Параметры
buflen
[in] максимальное число символов, которые могут храниться в заданный пользователем буфер.rgString
[out] возвращает строку.Только [C++] rgString указатель на буфер, получающий символов юникода в длину строки. Этот буфер должен иметь хотя бы buflen символы (а не в байтах).
pceltFetched
[out] возвращает число символов в действительности, хранящегося в буфере. (Может иметь NULL в C++.)
Возвращаемое значение
В случае успеха возвращает S_OK; в противном случае возвращает код ошибки.
Заметки
В C++, следует соблюдать осторожность для обеспечения, что размер буфера не менее buflen Символ юникода. Обратите внимание, что в юникоде длиной 2 байта.
Примечание
В C++, возвращаемая строка не включает конечный нуль-символ.Если данным, pceltFetched определяет количество символов в строке.
Пример
[cpp]
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);
}