Форум: "WinAPI";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизРабота с физической памятью Найти похожие ветки
← →
Izyum © (2006-05-17 14:01) [0]Есть необходимость работы с физической памятью из своей программы. Нужно выделить 64К непрерывной, неперемещаемой, некэшируемой памяти, ну и есно после завершения ее освободить. Есть ли возможность сделать это средствами ВинАПИ из Ринг3? Или это прерагатива Ринг0?
Заранее спасибо!
← →
Сергей М. © (2006-05-17 14:08) [1]
> Есть ли возможность сделать это средствами ВинАПИ из Ринг3?
Есть.
см. GlobalAlloc()
> необходимость работы с физической памятью
В Ring3 нет такой необходимости.
← →
Игорь Шевченко © (2006-05-17 14:33) [2]Не уверен, но посмотри в сторону VirtualAlloc + VirtualLock
← →
Izyum © (2006-05-17 14:39) [3]Такая необходимость есть!;)
Функции типа Virtual**** на скоко я понял работают не с физической памятью, а с плоскими 4ГБ, или я ошибаюсь?
← →
Сергей М. © (2006-05-17 14:55) [4]
> Izyum © (17.05.06 14:39) [3]
Ты справку к GlobalAlloc() прочитал ? Вник ?
← →
Izyum © (2006-05-17 15:51) [5]конечно прочитал:
GlobalAlloc
Функция GlobalAlloc выделяет из кучи указанное число байт. В Win32 менеджер памяти не выполняет различия между локальной и глобальной кучей.
Где в ней написано, что она работает с _физической_ памятью, а не с кучей???
← →
Игорь Шевченко © (2006-05-17 16:13) [6]Izyum © (17.05.06 14:39) [3]
> Функции типа Virtual**** на скоко я понял работают не с
> физической памятью, а с плоскими 4ГБ, или я ошибаюсь?
Функции работают с вирутальным адресным простанством процесса, страницы которого отображаются на физическую память.
Если ты скажешь, в связи с чем возникла задача, может найтись другой, более оптимальный способ.
← →
Izyum © (2006-05-17 16:25) [7]Хорошо, уточняю:
необходимо осуществить из программы обмен с дисковой подсистемой в ДМА-режиме, а не в ПИО. Т.е. в дыух словах - программирование БасМастеринга. В общем с проблемой разобрался, но для этого нужно выделить в _физической_ памяти буфер, который будет последовательным (нефрагментированым), неперемещаемым, некэшируемым, выровняным по границе 8 байт. Как сказали умные люди - правильным способом является написание драйвера, который будет это делать в Ринг0. Но хотелось бы выяснить - это только правильный способ или еще и единственный?
← →
Игорь Шевченко © (2006-05-17 16:27) [8]
> или еще и единственный?
Единственный.
← →
Izyum © (2006-05-17 16:30) [9]Ясно...
По каместь еще и печально...
Спасибо за внимание!
ЗЫ: все это нужно для развития пректа http://dalas.hardw.net
← →
Игорь Шевченко © (2006-05-17 16:33) [10]Izyum © (17.05.06 16:30) [9]
> все это нужно для развития пректа http://dalas.hardw.net
Интересно. А способ какой-нибудь MHDD не проще ? (Загружаться в DOS и делать свое дело)
← →
Izyum © (2006-05-17 16:41) [11]MHDD только под ДОСом, что не всегда удобно, а для меня так и воще не удобно, и не умеет прога Димы Постриганя работать в ДМА, только ПИО.
Это же относитс я и к Викории Сергея Казанского. А идти путем Артема Рубцова и его HDDScan (использование ДевайсИОКонтрол) по некотрым соображениям не хочется.
← →
Сергей М. © (2006-05-17 16:43) [12]
> казали умные люди - правильным способом является написание
> драйвера, который будет это делать в Ринг0
И они были, imho, правы..
← →
Izyum © (2006-05-17 16:45) [13]Я же и не говорю, что это неправильно... Просто хотелось проанализировать _все_ возможные варианты:)
← →
Сергей М. © (2006-05-18 08:25) [14]
> Я же и не говорю, что это неправильно
Нет, это правильно как раз правильно.
А неправильно будет работа в Ринг0 вне контекста драйвера.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c