Я сейчас пользуюсь
NtQueryInformationThread(.., ThreadQuerySetWin32StartAddress, addr, ..)
для получения адреса потока в addr
,
MSDN док говорит
NtQueryInformationThread может быть изменен или недоступен в будущих версиях Windows
Также,
Обратите внимание, что в версиях Windows до Windows Vista возвращенный начальный адрес является надежным только до запуска потока.
Каков предлагаемый метод получения адреса потока?
Группа функций NtQueryXxxx — это внутренние функции ядра Windows, которые не были документированы. Пока Microsoft не была вынуждена документировать их в соглашении с министерством юстиции США. Они сделали это, но зарезервировали за собой право изменять свою реализацию в любой будущей версии Windows, что необходимо для того, чтобы они могли вводить новшества в Windows. И оставил за собой право не делать функцию действительно полезной за пределами ее предполагаемого использования в ядре.
Предупреждение очень точное, вы не получите полезный начальный адрес потока из этой функции после запуска потока. Это будет указывать на реальный начальный адрес, внутренняя вспомогательная функция с именем __RtlUserThreadStart () в ntdll.dll. Вы можете увидеть это в любой трассировке стека, когда у вас есть символы отладки для Windows. Тот же начальный адрес для каждый началось обсуждение
Надпись на стене. Не используйте это.
Других решений пока нет …