IDebugComPlusSymbolProvider::IsFunctionStaleIDebugComPlusSymbolProvider::IsFunctionStale

Détermine si la fonction à l’adresse de débogage spécifiés est considérée comme obsolète.Determines if the function at the specified debug address is considered stale.

SyntaxeSyntax

HRESULT IsFunctionStale(  
   IDebugAddress* pAddress  
);  
int IsFunctionStale(  
   IDebugAddress pAddress  
);  

ParamètresParameters

pAddress
[in] L’adresse de débogage qui est représenté par un IDebugAddress interface.[in] The debug address that is represented by an IDebugAddress interface. Cette adresse doit être un METHOD_ADDRESS.This address must be a METHOD_ADDRESS.

Valeur de retourReturn Value

Si la fonction est considérée comme obsolète, retourne S_OK.If the function is considered stale, returns S_OK. Si la fonction n’est pas obsolète, retourne S_FALSE.If the function is not stale, returns S_FALSE.

ExempleExample

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

HRESULT CDebugSymbolProvider::IsFunctionStale(  
    IDebugAddress* pAddress  
)  
{  
    HRESULT hr = S_OK;  
    CDEBUG_ADDRESS address;  
    CComPtr<CModule> pModule;  

    ASSERT(IsValidObjectPtr(this, CDebugSymbolProvider));  
    ASSERT(IsValidInterfacePtr(pAddress, IDebugAddress));  

    METHOD_ENTRY( CDebugSymbolProvider::IsFunctionStale );  

    IfFalseGo( pAddress, S_FALSE );  
    IfFailGo( pAddress->GetAddress( &address ) );  

    ASSERT(address.addr.dwKind == ADDRESS_KIND_METADATA_METHOD);  
    IfFalseGo( address.addr.dwKind == ADDRESS_KIND_METADATA_METHOD, S_FALSE );  

    IfFailGo( GetModule( address.GetModule(), &pModule) );  

    if (!pModule->IsFunctionStale( address.addr.addr.addrMethod.tokMethod,  
                                   address.addr.addr.addrMethod.dwVersion ))  
    {  

        // S_FALSE indicates the function is not stale  

        hr = S_FALSE;  
    }  

Error:  

    METHOD_EXIT( CDebugSymbolProvider::IsFunctionStale, hr );  

    if (!SUCCEEDED(hr))  
    {  
        hr = S_FALSE;  
    }  

    return hr;  
}  

Voir aussiSee Also

IDebugComPlusSymbolProviderIDebugComPlusSymbolProvider