(Interrupt) Теоретический можно, а физический? Я вот что, думаю и хотел бы, что бы вы потвердели Я если я из пользовательского режима получу доступ к физической Памяти, а затем запущу программу (DOS) реального режима Что бы она мне возвращала, нужны вектор приревание То есть я хочу, обменивается данными между реальным режимом И физическим, но при этом хочу вызвать приревание из защищенного режима А затем получу адрес вектора, например Int 21 и вызову её С параметрами. Интересно это возможно?
Из пользовательского режима доступ только к виртуальной памяти, либо к \Device\PhisycalMemory Про дос проги забудь, если из кернелмода запустить, то только синий экран получишь. Если тебе они так сильно надо, то пиши под дос, не переходи на винду. А если надо под винду, то учи апи, и не лезь в ядро пока не поймеш как оно работает.
\Device\PhisycalMemory Я это и имел введу! Если я получу доступ к физической памяти а затем узнаю вектор приревание и обращюсь к нему как это делали под MS-DOS Вообщем думаю ясно ==================================================== Вообще можно ли обмениватся данными между DOS/WIN32?
Идея абсолютно глупая. В виндовс нету доса и нет его прерываний. Есть NTVDM - виртуальные дос машины которые эмулируют среду дос. Вот и все. УЧИ API! и забудь про дос прерывания раз и навсегда!
Вообще можно ли обмениватся данными между DOS/WIN32? Можно. Сформулируй задачу на более общем уровне. Скорее всего тебе может подойти менее сложное решение, нежели "прямой обмен данными" и т.п. Ты что, хочешь из вин32 запустить старую программу и т.п.
Ms Rem Кстати, даже при эмуляции среды дос, все равно вызываются теже CreateFile и тп. Так что, я думаю, тут надо сформулировать задачу по точнее (правильно сказал Chingachguk) может можно будет обойти прямое обращение к памяти и тп.
MSKZ Правильные вопросы задает, как ни странно )) В свое время, в бытность ВЫНЬ 95, я с товарищем делал "клавиатурного шпиона" Ничего в голову не пришло как написать под ДОС резидента, оставить его в памяти и запустить win.exe кажется он так назывался )) Винда запускалась и самое поразительное, что резидент сидел в памяти и откликался 8-( ) Вот сидели мы, чесали свои черепы и бормотали "все-таки она вертится" Однако времена эти прошли сегодня в основной массе стоят оси линейки NT и такие фокусы не прокатывают. MSKZ Предлагаю тебе почитать книжки...
Ничего удивительного, ведь 95 винда - это только надстройка над дос. NT кардинальным образом от нее отличается.
MSKZ Где ? Если в 98, то смотри свзяь доса с vxd через int 2F, если в nt, то например это: http://www.wasm.ru/forum/index.php?action=vthread&forum=3&topic=7025
SteelRat конечно вертится, потому как системная виртуадльная машина над дос и крутится, MSKZ и свое прерывание ты получишь, исполняешь какую нить незаконную инструкцию внутри ntvdm машины и получаешь закооное #GP(только оно прозрачно для тебя и никаких окон и и крашов не вызывает) ) или к примеру #UD чем тебе не прерывание защищённого режима ?? Вопрос твой понятен, и механизмы такие есть, точнее, существуют столько, сколько существует и сама NTVDM. Делается это с помощью драйверов VDD, собсно они и следят за тем, что происходит внутри машины. На этот счёт читать DDK
Да фиг его знает, что так долго думалось. Просто када я туды полез, понял всё через доли секунды, потому как и ёжику понятно было, что 0хС4С4 это #UD, то есь способ выпрыгнуть из v86, единственно возможный метод наряду с #GP. После дизасминга обработчиков ядра , всё стало понятно. А свосем хорошо понятнобыло после заглядывания в сорцы вынь. Блин, а вот параметры стандартные этого сервиса я так и не нашёл, абыдна