Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Określa, czy kod pod określonym adresem debugera jest ukryty.
Składnia
Parametry
pAddress
[in] Adres debugowania reprezentowany przez interfejs IDebugAddress .
Wartość zwracana
Jeśli kod jest ukryty, zwraca wartość S_OK; w przeciwnym razie zwraca wartość S_FALSE.
Przykład
W poniższym przykładzie pokazano, jak zaimplementować tę metodę dla obiektu CDebugSymbolProvider, który uwidacznia interfejs IDebugComPlusSymbolProvider.
HRESULT CDebugSymbolProvider::IsHiddenCode(
IDebugAddress* pAddress
)
{
HRESULT hr = S_OK;
CDEBUG_ADDRESS address;
CComPtr<CModule> pModule;
ASSERT(IsValidObjectPtr(this, CDebugSymbolProvider));
ASSERT(IsValidInterfacePtr(pAddress, IDebugAddress));
METHOD_ENTRY( CDebugSymbolProvider::IsHiddenCode );
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->IsHiddenCode( address.addr.addr.addrMethod.tokMethod,
address.addr.addr.addrMethod.dwVersion,
address.addr.addr.addrMethod.dwOffset ))
{
// S_FALSE indicates this sequence point is not hidden
hr = S_FALSE;
}
Error:
METHOD_EXIT( CDebugSymbolProvider::IsHiddenCode, hr );
if (!SUCCEEDED(hr))
{
hr = S_FALSE;
}
return hr;
}