Re[2]: как сохранить содержимое регистра GS
От: Ivan Korotkov Россия  
Дата: 10.10.04 17:54
Оценка:
Здравствуйте, Murr, Вы писали:

A>>В моей программе, используется некая библиотека.

A>>Эта библиотека использует регистр gs. причем gs она сама устанавливает равным 7.
A>>Я создаю ldt c одной записью, затем библиотека заносит в gs 7.
A>>во время выполнения программы gs сбрасывается в 0.
A>>с помощью softice установил, что в tss gs = 0.
A>>Скорее всего gs сбрасывается при переключении задач.

M>А разве в Win нити переключаются через TSS?

M>Вряд ли Win — настолько корявая поделка индусов, что там про gs забыли.
M>Может gs неявно изменяется кодом вашей программы?

TSS тут не при чем. Просто где-то в ядре gs, похоже используется, а при переключении на более низкий уровень привилегий, все сег. регистры, указывающие на более привилегированные сегменты, проц обнуляет. Поэтому при возврате из любого системного вызова gs=0. Обойти это можно, наверное, только пропатчив ядро.
--
Ivan
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.