IDebugProperty3::GetStringCharLengthIDebugProperty3::GetStringCharLength

Retourne le nombre de caractères dans la chaîne de la propriété associée.Returns the number of characters in the associated property's string.

SyntaxeSyntax

HRESULT GetStringCharLength(  
   ULONG *pLen  
);  
int GetStringCharLength(  
   out uint pLen  
);  

ParamètresParameters

ParamètreParameter DescriptionDescription
pLen [out] Retourne le nombre de caractères dans la chaîne de propriété.[out] Returns the number of characters in the property's string.

Valeur de retourReturn Value

En cas de réussite, retourne S_OK; sinon retourne le code d’erreur.If successful, returns S_OK; otherwise returns error code.

NotesRemarks

En règle générale, cette méthode est utilisée comme une étape préliminaire à allouer une mémoire tampon pour un appel à la GetStringChars (méthode).Typically, this method is used as a prelude to allocating a buffer for a call to the GetStringChars method.

ExempleExample

L’exemple suivant montre comment implémenter cette méthode pour un CProperty objet qui expose la IDebugProperty3 interface.The following example shows how to implement this method for a CProperty object that exposes the IDebugProperty3 interface.

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

Voir aussiSee Also

GetStringChars GetStringChars
IDebugProperty3IDebugProperty3