IDebugComPlusSymbolProvider::IsFunctionStale
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Determines if the function at the specified debug address is considered stale.
Syntax
HRESULT IsFunctionStale(
IDebugAddress* pAddress
);
int IsFunctionStale(
IDebugAddress pAddress
);
Parameters
pAddress
[in] The debug address that is represented by an IDebugAddress interface. This address must be a METHOD_ADDRESS.
Return Value
If the function is considered stale, returns S_OK
. If the function is not stale, returns S_FALSE
.
Example
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;
}