Поделиться через


IDebugProperty3::GetStringChars

Извлекает строку, связанную с этим свойством, и сохраняет ее в буфере, предоставленном пользователем.

Синтаксис

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++возвращаемая строка не включает завершающий символ 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);
}

См. также