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