IDebugProperty3::GetStringCharLength
Vrátí počet znaků v řetězci přidružené vlastnosti.
Syntaxe
Parametry
Parametr | Popis |
---|---|
pLen |
[ven] Vrátí počet znaků v řetězci vlastnosti. |
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
Tato metoda se obvykle používá jako předluda přidělení vyrovnávací paměti pro volání GetStringChars metoda.
Příklad
Následující příklad ukazuje, jak implementovat tuto metodu pro CProperty objekt, který zveřejňuje IDebugProperty3 rozhraní.
STDMETHODIMP CProperty::GetStringCharLength(ULONG *pLen)
{
HRESULT hr = E_INVALIDARG;
EVALFLAGS oldEVALFLAGS = m_EVALFLAGS;
m_EVALFLAGS &= ~EVAL_NOFUNCEVAL;
if (pLen)
{
DEBUG_PROPERTY_INFO dpInfo;
dpInfo.bstrValue = NULL;
ULONG ulen = 0;
hr = GetPropertyInfo(DEBUGPROP_INFO_VALUE,10,DEFAULT_TIMEOUT,NULL,0,&dpInfo);
if (hr == S_OK && dpInfo.bstrValue)
{
if (wcscmp(dpInfo.bstrValue,L"Nothing") == 0)
{
ulen = 0; //VSWhidbey#64815
}
else
{
ulen = ::SysStringLen(dpInfo.bstrValue);
if( ulen > 2 &&
dpInfo.bstrValue[0] == L'"' &&
dpInfo.bstrValue[ulen-1] == L'"')
{
ulen = ulen > 2 ? ulen - 2 : ulen; //remove two double quotes
}
}
}
::SysFreeString(dpInfo.bstrValue);
*pLen = ulen;
}
m_EVALFLAGS = oldEVALFLAGS;
return hr;
}