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.
Pobiera wyliczenie, które umożliwia klientowi iterowanie po przesunięciach MSIL w określonym zakresie adresów.
Składnia
HRESULT findILOffsetsByAddr (
DWORD isect,
DWORD offset,
DWORD length,
IDiaEnumLineNumbers** ppResult
);
Parametry
isect
[in] Określa składnik sekcji określonego adresu.
offset
[in] Określa składnik przesunięcia określonego adresu.
length
[in] Określa liczbę bajtów zakresu adresów do pokrycia za pomocą tego zapytania.
ppResult
[out] IDiaEnumLineNumbers Zwraca obiekt zawierający listę wszystkich przesunięć MSIL, które obejmują określony zakres adresów.
Wartość zwracana
Jeśli operacja powiedzie się, zwraca wartość S_OK; w przeciwnym razie zwraca kod błędu.
Przykład
W tym przykładzie pokazano funkcję, która uzyskuje wszystkie przesunięcie MSIL zawarte w funkcji przy użyciu adresu i długości funkcji.
IDiaEnumLineNumbers* GetLineNumbersByAddr(IDiaSymbol *pFunc,
IDiaSession *pSession)
{
IDiaEnumLineNumbers* pEnum = NULL;
DWORD seg;
DWORD offset;
ULONGLONG length;
if (pFunc->get_addressSection ( &seg ) == S_OK &&
pFunc->get_addressOffset ( &offset ) == S_OK)
{
pFunc->get_length ( &length );
pSession->findILOffsetsByAddr( seg, offset, static_cast<DWORD>( length ), &pEnum );
}
return(pEnum);
}