Хотел бы узнать как из драйвера получить доступ к MS-DOS памяти? Например к сегменту 0: и смещению 04C6 в общем 0:04C6h Просто там много чего зарегестрированных данные остлись например количество HDD и м. д. Кто знает?
Под 9x -- как два пальца об асфальт, под NT -- очень и очень непросто. Лучше получить эту информацию другими, официальными способами.
добавить в дескрипторную таблицу новый элемент. или поискать который уже адресует эту память. лично я такого не делал но идея вроде верная.
Хм. В сторону MmMapIoSpace смотреть не пробовали? По крайней мере, до видеопамяти text-mode VGA добраться можно... Хотя, я опять-таки не понимаю, зачем для получения количества HDD (например) нужно лезть в эти дебри, если в 2k+ (и 98+) предусмотрены документированные интерфейсы (см. в сторону SetupDi* ф-ций). PS. Примеры - www.google.com
ABC Для получения количества HDD есть функция GetLogicalDrives которая неплохо описана в MSDN. Хотя если есть желание вырезать гланды через ж..у, то можно и через порты (в драйвере) эту информацию получить (тогда гарантирую тебе кучу проблем с твоей программой). Или как вариант - писать программы для DOS, если под Windows все время возникает желание делать все через ж..у.
Ms Rem GetLogicalDrives, все-таки, немного из другой оперы. Для получения количества физических HDD можно либо пытаться их открывать по очереди (\\.\PhysicalDriveX) и проверять MediaType, либо использовать интерфейсы, предоставляемые Setup API (SetupDi*). Насчет "альтернативных" методов категорически согласен )) "Тупой" перенос "в лоб" методик программирования из DOS в Windows ни к чему хорошему привести не может, даже теоретически.
Тогда уж лучше перечислить с помощью ZwQueryDirectoryFile все обьекты в \DosDevices\ и выбрать среди них PhysicalDrive.
Где-то удобнее использовать Setup API, где-то - ZwQueryDirectoryFile, где-то тупо перебирать номера \\.\PhysicalDrive% по очереди. Можно еще что-нибудь придумать. Но из win32-приложения или драйвера лезть за этой информацией в область данных BIOS/DOS - это IMHO нонсенс.
ABC Дык читай, у меня получалось даже писать. Эффект был интересным, особенно при воздействии на сегмент текстового видеобуфера ($B800.
а VDD для кого придумали ????? смотреть в DDK там примеры есть и кое какое описалово, которого в принципе достаточно. NTVDM.EXE для этого дела содержит специальный экспорт, который мне точно известно позволяет решить именно эту проблему. Ничего не понимаю, в чём загвоздка то (
CARDINAL Нащет физ. дисков это ерунда! Это я так для примера... А вообще в памяти DOS очень много чего содержится интересного... Вот и надо получить доступ!
ABC Получай, тебе уже достаточно четко указали где копать. По правде сказать, будь у меня такая жесткая необходимость к памяти виртуальной DOS-машины получить доступ, я бы использовал приложение реального времени. Поскольку это просто, и не имеет траблов с совместимостью различных версий Windows. P.S. Если ты считаешь, что этот способ хуже чем кулхацкерский прямой доступ посредством VDD, попытайся реализовать тот что лучше самостоятельно. Тогда твое мнени может положительно поменятся.
ABC кароче, доработки закончу, будет статья по теме vdd дос ntvdm и вся прочая хренатень, пока привожу к экспортному виду другую статью для запуливания на сайт.