Что такое поддерживаемый Microsoft API для получения адреса потока

Я сейчас пользуюсь
NtQueryInformationThread(.., ThreadQuerySetWin32StartAddress, addr, ..) для получения адреса потока в addr,
MSDN док говорит

NtQueryInformationThread может быть изменен или недоступен в будущих версиях Windows

Также,

Обратите внимание, что в версиях Windows до Windows Vista возвращенный начальный адрес является надежным только до запуска потока.

Каков предлагаемый метод получения адреса потока?

1

Решение

Группа функций NtQueryXxxx — это внутренние функции ядра Windows, которые не были документированы. Пока Microsoft не была вынуждена документировать их в соглашении с министерством юстиции США. Они сделали это, но зарезервировали за собой право изменять свою реализацию в любой будущей версии Windows, что необходимо для того, чтобы они могли вводить новшества в Windows. И оставил за собой право не делать функцию действительно полезной за пределами ее предполагаемого использования в ядре.

Предупреждение очень точное, вы не получите полезный начальный адрес потока из этой функции после запуска потока. Это будет указывать на реальный начальный адрес, внутренняя вспомогательная функция с именем __RtlUserThreadStart () в ntdll.dll. Вы можете увидеть это в любой трассировке стека, когда у вас есть символы отладки для Windows. Тот же начальный адрес для каждый началось обсуждение

Надпись на стене. Не используйте это.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]