Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2011, 09:08   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Получение цепочки блоков основной памяти

Здравствуйте, хм, возник вопрос, как мне получить информацию о текущей цепочки блоков памяти? т.е. в основной цепочке блоков храниться информация о MCB, окрежние,тот кто запустил процесс, тип блока,состав блока.....
Я просто не знаю куда копать)
CodeNOT вне форума Ответить с цитированием
Старый 25.03.2011, 10:35   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> просто не знаю куда копать

Не знаешь куда смотреть — смотри в гугл )

Вторая ссылка сверху по запросу "memory control block":

http://dmtsoft.ru/bn/253/as/oneaticleshablon/
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.03.2011, 10:49   #3
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

хм, спасибо) но я это и сам нашел, и зная что такое memory control block, но есть одно большая загвостка - я не знаю асм)
По-этому хочу спросить с помощью каких функция можно его получить.
Пробовал черем MK_FP, и пробовал получить указатель на первый блок через прерывание 52h но, я что-то "мудак"
CodeNOT вне форума Ответить с цитированием
Старый 25.03.2011, 11:52   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Да тут асм особо и не нужен. Нужно любым доступным способом вызвать функцию 52h прерывания 21h, которая в ES:BX вернет указатель на такую структуру:

PHP код:
Offset Size              Description

        
-12   word   sharing retry count (DOS 3.1-3.3)
        -
10   word   sharing retry delay  (DOS 3.1-3.3)
         -
8   dword  pointer to current disk buffer (DOS 3.x)
         -
4   word   pointer in DOS code segment of unread CON input;
                     
0 indicates no unread input (DOS 3.x)
         -
2   word   segment of first Memory Control Block (MCB)
         
00   dword  pointer to first DRIVE PARAMETER TABLE (A:) in chain
         04   dword  pointer to DOS System File Table 
(SFT)
         
08   dword  pointer to $CLOCK device driver
         0C   dword  pointer to CON device driver
         10   byte   number of logical drives in system
         11   word   maximum bytes
/block of any block device
         13   dword  pointer to DOS cache buffer header
         17 18bytes  NUL device header
first 4 bytes of device header
                     point to the next device in device chain 
Как видно, за 2 байта байта до структуры, указатель на которую вернулся в ES:BX, хранится сегмент первого mcb. Смещение у него всегда 0. Ну а структуру mcb мы знаем. Осталось пройтись по ним, пока не встретим 'Z' в первом байте.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.03.2011, 12:07   #5
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Хм, в том -то и вопрос, какими средствами мне вызвать перерывание, какая функция в с++ есть, а может и расширение языка, я например в среде visual пишу
CodeNOT вне форума Ответить с цитированием
Старый 25.03.2011, 13:07   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

этого не знаю, а кто мешает сделать ассемблерную вставку на 2 строчки..
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.03.2011, 15:02   #7
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

просто у меня visual ultimate 2010 выпендривается, но может я нет что-то делаю, ближе к вечеру выложу, может получиться!
CodeNOT вне форума Ответить с цитированием
Старый 25.03.2011, 16:11   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

хм, может я чего-то упустил, но 2010 компилит только виндовые программы, в которых ни прерываний, ни mcb, ни прочего тяжелого наследия ДОС нет.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(Asm) Поиск символьной цепочки в памяти Lawliet32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 19.05.2012 13:20
Цепочки _Val_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.12.2010 16:29
Сортировка в основной памяти Twinkle Помощь студентам 1 30.05.2010 13:49
Сортировка в основной памяти (Си++) Twinkle Помощь студентам 4 18.05.2010 16:12
ВОПРОС на счет блоков памяти и отслеживание за перемещением потока. Big Zee Свободное общение 7 21.04.2008 14:38