Aracılığıyla paylaş


IDebugProperty3::GetStringCharLength

İlişkili özelliğin dizesindeki karakter sayısını döndürür.

Sözdizimi

int GetStringCharLength(
    out uint pLen
);

Parametreler

Parametre Açıklama
pLen [out] Özelliğin dizesindeki karakter sayısını döndürür.

İade Değeri

Başarılı olursa döndürür S_OK; aksi takdirde hata kodunu döndürür.

Açıklamalar

Bu yöntem genellikle GetStringChars yöntemine yapılan bir çağrı için arabellek ayırmaya yönelik bir ön sürüm olarak kullanılır.

Örnek

Aşağıdaki örnek, IDebugProperty3 arabirimini kullanıma sunan bir CProperty nesnesi için bu yöntemin nasıl uygulandığını gösterir.

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

Ayrıca bkz.