Sdílet prostřednictvím


IDebugProperty3::GetStringChars

Načte řetězec přidružený k této vlastnosti a uloží ho do vyrovnávací paměti zadané uživatelem.

Syntaxe

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

Parametry

buflen
[v] Maximální početznakůch

rgString
[ven] Vrátí řetězec.

[Pouze C++] rgString je ukazatel na vyrovnávací paměť, která přijímá znaky Unicode řetězce. Tato vyrovnávací paměť musí mít velikost alespoň buflen znaků (nikoli bajtů).

pceltFetched
[ven] Kde se vrátí počet znaků skutečně uložených v vyrovnávací paměti. (Může být NULL v jazyce C++.)

Vrácená hodnota

V případě úspěchu vrátí hodnotu S_OK; v opačném případě vrátí kód chyby.

Poznámky

V jazyce C++ je potřeba dbát na to, aby vyrovnávací paměť byla alespoň buflen dlouhá znaky Unicode. Všimněte si, že znak Unicode je dlouhý 2 bajty.

Poznámka:

Vrácený řetězec v jazyce C++ neobsahuje ukončující znak null. V případě zadání pceltFetched zadá počet znaků v řetězci.

Příklad

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);
}

Viz také