bocha: Если быть абсолютно точным, то меня в первую очередь интересует адреса 0000:0408h и 0000:0409h (это адресное пространство BIOS, насколько я понял). Как я понимаю, на С это будет выглядеть так: 0х00000408 и 0х00000409 (если я ошибаюсь, прошу пояснить мне и этот момент). У меня установлена Win XP, а также Turbo Pascal 7.1 и MS Visual C++ 6.0 (в последнем я пока использовал Win32 Console Application). Итак, если на я на своем TP 7.1 использую одну из следующих строк: lpt1:=memw [$40:$08]; lpt1:=memw [$0000:$0408]; то в lpt1 получу базовый адрес LPT1 (как в первом, так и во втором случае). Ах да, также еще есть Turbo Pascal for Windows, в нем аналогично все работает. В MS Visual C++ 6.0 я использовал следующую строку: int *pLptAddress = reinterpret_cast (0x00000408); далее, моя ХР позволяла сделать это: cout <но не позволяла этого: cout <<*pLptAddress; (я получал «обнаружена ошибка. Приложение будет закрыто» Конечная цель - программа с использованием MFC для Win 2000, для разработки будет использоваться вышеупомянутый MS Visual C++ 6.0. Вроде бы на все контрвопросы ответил.
Доброе время суток, Михаил! "В MS Visual C++ 6.0 я использовал следующую строку: int *pLptAddress = reinterpret_cast (0x00000408); далее, моя ХР позволяла сделать это: cout < но не позволяла этого: cout <<*pLptAddress; " что же XP позволяет?? возможно происходит некорретное обращение к памяти когда вы разименовываете *pLptAddress Ответ отправлен: 25.07.2004, 16:43 Отправитель: makaveli_lcf Отвечает bocha
Доброе время суток, Михаил! В VC6 к этим адресам ты не сможешь обратится, почему, я уже отвечал, в паскале, только если пишешь для 16-разрядного режима, для пользовательских приложений эти адреса в винде закрыты, если не веришь мне, почитай MSDN : 0K - ~64K (0xFFFF) Not writable. This boundary is approximate due to the way the system loads some features of Microsoft® MS-DOS®. This memory is private to the process. ~64K (0x10000) - 4 MB (0x3FFFFF) Reserved for MS-DOS compatibility. This memory is fully readable and writable by the process. However, this range of memory may have some MS-DOS–related structures or code in it, so processes should not arbitrarily read from or write to it. This memory is private to the process. 4MB (0x400000) - 2GB (0x7FFFFFFF) Available for code and user data. User data is readable and writable by the process.
Code is execute-only. This memory is private to the process. 2GB (0x80000000) - 3GB (0xBFFFFFFF) Shared area, readable and writable by all processes. A number of system DLLs and other data are loaded into this space. 3GB (0xC0000000) - 4GB (0xFFFFFFFF) System memory, readable or writable by any process. However, this is where low-level system code resides, so writing to this region may corrupt the system, with potentially catastrophic consequences. ЗЫ: используй CreateFile, DeviceIoControl Ответ отправлен: 25.07.2004, 21:40 Отправитель: bocha
Вопрос № 1774
Приветствую Вас! Меня интересует такой вопрос: всеп кодят на MFC в Visual C; а существуют ли другие IDE для написания и компиляции MFC-кода. Какие? С уважением, Ole!
Добрый день, Ole! Возможно в Borland C++ Builder есть поддержка MFC Ответ отправлен: 25.07.2004, 16:45 Отправитель: makaveli_lcf
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.