Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 710
от 03.04.2004, 22:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5135
Отправлено ответов: 14135
Активность: 275.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pawel
Статус: Профессиональный
Общий рейтинг: 160.36
[Подробней >>]
SedHg
Статус: Опытный
Общий рейтинг: 111.91
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 119.1
URL: Эхоконференция по вирмейкингу
[Подробней >>]
 
Foamplast
Статус: Опытный
Общий рейтинг: 151.58
URL: мой личный сайт
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.37
URL: Super Assembler Software
Телефон: Пчёлка +7 905 6601206
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.6
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 117.68
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.9
[Подробней >>]
DoctorSERG
Статус: Начальный
Общий рейтинг: 115
[Подробней >>]
 
Artemy
Статус: Опытный
Общий рейтинг: 113.31
Телефон: 8 905 549 38 66
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.63
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 5115. Здравствуйте! Мне нужно записать данные с com-порта в файл. У меня что-то не так сделано? Спасибо.... (ответов: 1)
Вопрос № 5116. Здравствуйте господа эксперты и читатели рассылки! Прошу прощения за Оффтопик, но не затруднит ли ва... (ответов: 2)
Вопрос № 5117. Уважаемые эксперты! Как определить IP-адрес своего компьютера программно? ... (ответов: 2)
Вопрос № 5118. Здраствуйте. 1)Что такое ядро операцинной системы, из чего состоит и что делает? 2)Что нужно понимат... (ответов: 4)
Вопрос № 5119. физкульт привет! я вот тут ходил туда-сюда и думал (бл@ ну винни-пух прям) короче я думал если SIce... (ответов: 2)
Вопрос № 5120. НЕ ЗНАЮ ,КАК ВСЕ ,НО БОЛЬШИНСТВО ИЗ ВСЕХ ЭКСПЕРТОВ ПРОСТО ЛОХАТРОНЫ .ПОЧЕМУ НА МОЙ ВОПРОС 5112 НЕ КТ... (ответов: 2)
Вопрос № 5121. Здравствуйте…. 1.я тут замучился как в masm компилить exe, а в tasm com(наоборот я знаю)...В смысле ... (ответов: 4)
Вопрос № 5122. Здравствуйте. Спасибо за помощь в прошлый раз. Вопрос немного не по теме, но не знаю где его еще за... (ответов: 1)
Вопрос № 5123. Здравствуйте, уважаемые! Помогите - винда глючит на ноутбуке жестоко. Кажись после виря какого-то. П... (ответов: 2)
Вопрос № 5124. Привет ! Сори за вопрос не в тему(offtopic). Просто это самая многочисленная рассылка. Подскажите са... (ответов: 1)
Вопрос № 5125. Уважаемые эксперты! Допустим, я выделил память и потом закрыл её парой функций GlobalUnlock и Global... (ответов: 4)

Вопросов: 11, ответов: 25


 Вопрос № 5115

Здравствуйте! Мне нужно записать данные с com-порта в файл. У меня что-то не так сделано? Спасибо.


Приложение:


Вопрос отправлен: 26.03.2004, 09:54
Отправитель: volk (spin2@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, volk!
А в чём проблема?
По мойму вы не верно создаёте файл.

Ответ отправлен: 26.03.2004, 19:22
Отправитель: Pawel


 Вопрос № 5116

Здравствуйте господа эксперты и читатели рассылки!
Прошу прощения за Оффтопик, но не затруднит ли вас зайти по адресу http://www.nashe.ru/data/shows/hudsovet.php3?id=20 и проголосовать за группу "Наше"? Очень надо.
Буду крайне признателен!!!
Заранее спасибо и ещё раз извиняюсь.
PS. Отправьте в рассылку, PLZ. :)



Вопрос отправлен: 26.03.2004, 19:45
Отправитель: Lynx (lynx@vlink.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает SedHg

Доброе время суток, Lynx!
А это "Наше" - это что такое вообще?


Ответ отправлен: 26.03.2004, 23:30
Отправитель: SedHg


Отвечает Maverick

Здравствуйте, Lynx!
Ну раз уж ответили....
Вот это не просто оффтопик, это спам, блин...
Не нужно рассылку использывать для своих меркантильных целей...
А то мне может номер wmz закинуть и попросить с каждого по баксу? Типа вы не много потеряете, а мне кайф...
охренеть....


Ответ отправлен: 28.03.2004, 07:12
Отправитель: Maverick


 Вопрос № 5117

Уважаемые эксперты! Как определить IP-адрес своего компьютера программно?



Вопрос отправлен: 26.03.2004, 21:17
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Доброе время суток, Alex!
push offset wsadata
push 101h
call WSAStartup
test eax,eax
jnz Error
push 100h
push offset Buffer
call gethostname
push offset Buffer
call gethostbyname
test eax,eax
jz Error
mov eax,[eax+10h]
mov eax,[eax]
push eax
call inet_ntoa
test eax,eax
jz Error
На выходе в eax поинтер на твой ип...
Описания структур и сами структуры возьми на wasm.ru в разделе "сеть".

Ответ отправлен: 28.03.2004, 07:08
Отправитель: Maverick


Отвечает Foamplast

Доброе время суток, Alex!
Этим занимаются функции IP Helper. Так как компьютер в целом не может иметь ip-адреса, то его определить нельзя. Ip-адрес присваивается ИНТЕРФЕЙСАМ компьютера. Советую воспользоваться функцией GetIpAddrTable(), которая выдаёт таблицу соответствий между интерфейсами компьютера и их ip. Получив таблицу, можно выбрать то, что нужно.


Ответ отправлен: 29.03.2004, 19:12
Отправитель: Foamplast


 Вопрос № 5118

Здраствуйте.
1)Что такое ядро операцинной системы, из чего состоит и что делает?
2)Что нужно понимать под словом Архитектура процессора?



Вопрос отправлен: 27.03.2004, 13:16
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, Семен!
1)Ядро ОС распределяет ресурсы, предоставляет набор стандартных функций для управления процессами, и т.п.
Состоит обычно из одного фаила, загружаемого после конфигурации системы.
2)Строение процессора, структуру команд.

Ответ отправлен: 28.03.2004, 13:14
Отправитель: Pawel


Отвечает Евгений Иванов

Приветствую Вас, Семен!
Отвечает за переключение задач.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 27.03.2004, 21:22
Отправитель: Евгений Иванов


Отвечает Ayl

Приветствую Вас, Семен!
Позволю себе дополнить ответ эксперта Foamplast в отношении RISC и CISC архитектур.
Основное отличие этих архитектур - это даже не наличии или отсутсвие регистров, общей памяти и т.п., а алгоритм выполнения команд в процессоре. Для RISC архитектуры характерно именно одинаковая длина команд (это важно для упрощения блока дешифрации команды) и отсутствие микропрограммного интерпретатора. Фактически, в RISC архитектуре нет разделения на микропрограммный уровень и уровень макрокоманд процессора. Что дает огромный выйгрыш в скорости выполнения.
Для CISC архитектуры как раз главным является микропрограммый уровень. Т.е. все команды процессора выполняются с помощью интерпретации. Каждая команда разбивается на отдельные команды микропрограммного уровня. Что и позволяет в общем случае расширение набора команд.
В настоящее время даже нельзя четко провести разделение процессоров на RISC и CISC архитектуры, впору говорить о комбинировании этих архитектур. Первые процессоры Intel были CISC. Современные IA-32 - фифти-фифти. Сохранен расширенный набор команд, малое число регистров общего назначения, но в плане реализации сделана попытка "гибридизации" технологий проектирования.

Если интересно, могу порекомендовать книги:
Э.Таненбаум "Архитектура компьютера"
К.Хамахер, З.Вранешич, С.Заки "Организация ЭВМ"
из серии "Классика Computer Science", в которых очень подробно описаны эти вопросы.

Кстати, по поводу организации операционных систем в этой же серии вышла книга Э.Таненбаума "Современные операционные системы".



Ответ отправлен: 30.03.2004, 14:16
Отправитель: Ayl


Отвечает Foamplast

Добрый день, Семен!
Классные вопросы.
1. Как и следует из названия, ядро ОС - самая основная её часть. Как правило, ОС состоит из ядра и дополнительных компонент, которые в некоторых случаях могут отсутствовать.
Чем занимается ядро, сильно зависит от типа ОС. Различают ОС с монолитными ядрами, с микро- и экзоядрами.
Монолитные ядра занимаются управлением процессами (иногда и потоками), памятью, работой с аппаратурой, для чего включают непосредственно в себя многослойные драйверы. Занимаются также вопросами общения процессов и их синхронизации. В общем, монолитные ядра выполняют основные задачи ОС: распределение ресурсов машины и представление удобного интерфейса к аппаратуре.
Микроядра занимаются распределением ресурсов между серверами и обеспечивают межсерверную связь. Остальным занимаются служебные процессы - серверы. Например, сервер процессов, сервер памяти, сервер файлов и т.п.
Экзоядра занимаются распределением ресурсов компьютера между виртуальными машинами. И всё.
Есть ещё слоёные системы, где кольцо 0 отвечает за распределение процессорного времени и многозадачность, кольцо 1 - за управление памятью, кольцо 3 - за управление воодом-выводом и т.п. Нельзя с уверенностью утверждать, что такие системы ввобще имеют ядро.
Примеры:
Монолитные системы: Windows, FreeBSD, Linux.
Микроядерные системы: QNX.
Экзоядерные системы: VM/370.
Слоёные системы: THE, MULTICS.
2. Архитектура процессора - набор основных принципов его реализации, которые определяют, какие блоки будут входить в процессор, в каком порядке они будут соединяться и т.п.
В настоящее время можно часто слышать о процессорах с полным и усечённым наборами команд.
Для процессора с полным набором команд характерны:
1. Небольшое количество регистров общего назначения (< 10).
2. Общая память для программ и данных.
3. Огромное количество команд разной длины.
Для процессоров с усечённым набором команд (т.н. RISC-архитектура) характерны:
1. Большое количество регистров общего назначения (например, 64).
2. Отдельная память для программ, отдельная для данных, бывают ещё дополнительные разделы (энергонезависимая, ПЗУ).
3. Небольшое количество команд одинаковой длины.
Примеры:
Процессоры с полным набором команд: Intel, AMD 80x86 (т.е. Pentium, Athlon, Duron и т.п.).
Процессоры с усечённым набором команд: Analog Devices SHARC ADSP-21065L.


Ответ отправлен: 29.03.2004, 19:12
Отправитель: Foamplast


 Вопрос № 5119

физкульт привет!
я вот тут ходил туда-сюда и думал (бл@ ну винни-пух прям)
короче я думал если SIce загружать в ручную из меню "пуск"
(т.е. как я понимаю после того как ОС начнет контролировать проц), то как же Ice имеет доступ к ядру операционки, это же в 3-м кольце происходит (:0) или я чего-то еще не знаю что мне надо знать??
рахмат сразу



Вопрос отправлен: 29.03.2004, 11:17
Отправитель: очень хочу научиться

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Доброе время суток, очень хочу научиться!
Способы получить ring-0 ис под ОС есть.
1)Можно написать драйвер уровня ядра.(на WASM32 достаточно просто)Более вероятный.
2)Можно использовать баги в win9*, и незащищённую таблицу вектаров прерываний.
3)Можно модифицирвать загрузчик и ядро ОС :)
4)Возможно в SIce есть модуль, загружаемый вместе с ОС.
Возможны и другие варианты.

Ответ отправлен: 29.03.2004, 20:45
Отправитель: Pawel


Отвечает _vt

Приветствую Вас, очень хочу научиться!
Что ты подразумеваешь под "имеет доступ к ядру"??? В любом случае, Sice работает в ring0.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 29.03.2004, 21:53
Отправитель: _vt


 Вопрос № 5120

НЕ ЗНАЮ ,КАК ВСЕ ,НО БОЛЬШИНСТВО ИЗ ВСЕХ ЭКСПЕРТОВ
ПРОСТО ЛОХАТРОНЫ .ПОЧЕМУ НА МОЙ ВОПРОС 5112 НЕ КТО
НЕ ОТВЕТИЛ ,ИЛИ ЧТО ЯЗЫК В ЖОПЕ ??????????????????
ДОКАЖИТЕ ,ЧТО У ВАС ОН НЕТАМ !!!!!!!!!!!!!!!!!!
НО ВЕРНЁМСЯ К НЕОТВЕЧЕННОМУ ВОПРОСУ
{здрвствуйте экперты , подскажите почему в стандартных директи
вах :segment, assume и т.д есть тип выравнивания byte, word,
dword ведь ведь начальный адрес сегмента
xxxxxxxxxxxxxxxx0000 (в двоичном виде на шине адреса), а соот-
ветствующие типы выравниваний говорят ,что начальный адрес
может быть xxxxxxxxxxxxxxxxxxxx. }



Вопрос отправлен: 29.03.2004, 21:19
Отправитель: DoctorSERG

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Здравствуйте, DoctorSERG!
Во-первых, после такого начала вопроса начисто пропадает желание отвечать. Во-вторых, кто вам сказал, что эксперты должны что-то кому-то доказывать? Ответы на вопросы - дело исключительно доброй воли каждого человека.

Теперь по сути вопроса.
Начнем с того, что вы путаете физическую организацию памяти в реальном режиме (вида сегмент:смещение, где полный адрес начала сегмента в действительности кратен 16) и организацию сегментов в исполняемом файле. То, что оба этих понятия называются одинаково совсем не означает, что они представляют собой одно и тоже! Для компилятора сегмент - это просто некая именованая область памяти, которая может начинаться по любому физическому адресу в ОП! Например, скажем, в программе, приведенной в приложении, сегмент данных занимает 14 байт и начинается с адреса 0. Сегмент кода занимает 7 байт и начинается адреса 100h (используется модель TINY!). При выполнении операции сборки модулей (для получения исполняемого файла) линковщик последовательно добавляет программные сегменты друг за другом с учетом параметра выравнивания, указанного в описаниях сегментов (явно или неявно). В приведенном примере директива .Data подразумевает в качестве параметра выравнивания сегмента значение WORD, т.е. по первому четному адресу. Для модели TINY первым размещается сегмент кода с нулевого адреса в файле и со смещения 100h в памяти. Т.е. адрес первой исполняемой команды равен cs:100h. После того, как будут записаны 7 байт кода, линковщик пытается разместить сегмент данных. Так как указан параметр выравнивания WORD, то первый байт области данных будет помещен не со смещения 107h (сразу же за кодом), а со смещения 108h (а байт по смещению 107h будет заполнен 0). В результате программа вместо 21 байта занимает 22 байта. Вторая программа в приложении генерирует код ровно в 21 байт.

Всего в качестве значений параметра выравнивания могут использоваться следующие элементы:
BYTE - выравнивания не производится
WORD - выравнивание на границу слова (2 байта)
DWORD - выравнивание на границу двойного слова (4 байта)
PARA - выравнивание на границу параграфа (16 байт)
PAGE - выравнивание на границу страницы (256 байт)
MEMPAGE - выравнивание на границу памяти (4096 байт)

Соотвественно, максимальное число нулевых байт, которые могут быть добавлены в программу для выравнивания, равно числу в скобках минус 1.

Приложение:

Ответ отправлен: 30.03.2004, 13:56
Отправитель: Ayl


Отвечает Dark_Lord

Добрый день, DoctorSERG!
Ну во-первых ругаться не надо(бы)!
Во-вторых ворос должен быть объективен, а не высказывать то, что вы уже всё давно знаете, просто наткнулись на какую-то глупость со стороны языка.
Далее, не знаю, что значать ваши 20 х-ов, но постараюсь ответить... В Реальном режиме (что вы наверно назвали-бы досом, но о чём вы совершенно не упомянули!!) начальный адрес сегмента (это что-то вообще странное, так как имеет значение только в защищённом режиме!! буду думать, что вы имели виду линейный адрес сегмента в физичесской памяти) действительно должен быть кратен 16, но логичесский сегмент (в реальном режиме или просто сегмент в защищённом) может находиться в любом месте этого сегмента. В связи с этим компилятор донжен решить по какому адресу выравнивать сегмент. Наиболее часто используется Paragraph и page. Остальные выравнивания используются в основном для выравнивания многобайтных данных, для более легкого доступа!

Ответ отправлен: 29.03.2004, 22:46
Отправитель: Dark_Lord


 Вопрос № 5121

Здравствуйте….
1.я тут замучился как в masm компилить exe, а в tasm com(наоборот я знаю)...В смысле - что в командной строке писать?
2.Тут на уроке мы открывали проги в hex и учились восстанавливать исходный текст проги…. Препод очень бегло объяснил, надавал таблиц … может у кого из вас есть инфа по этому поводу,чтобы поподробнее понять?



Вопрос отправлен: 30.03.2004, 01:09
Отправитель: xxx (mudvayne@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает DoctorSERG

Здравствуйте, xxx!
Ну во-первых вы должны правильно задать модельпамяти
,не tiny, а во вторых
tasm.exe /zi xxx.asm ,,,
tlink.exe /v xxx.obj


Ответ отправлен: 30.03.2004, 12:48
Отправитель: DoctorSERG


Отвечает _vt

Приветствую Вас, xxx!
1.
ml.exe prog.asm - для MASM-exe,

tasm prog.asm
tlink /t prog.obj
-
для TASM-com.
2. Наверное, по шестнадцатиричным кодам инструкций вы представляли текст программы на ассемблере, т.е. брали таблицу кодов инструкций процессора и сопоставляли данной программе. А что нужно "понять поподробнее"?
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 31.03.2004, 17:14
Отправитель: _vt


Отвечает SedHg

Здравствуйте, xxx!
MASM (.exe)
==ассемблирование==
ml /с hello-2.asm
==компановка==
link hello-2.obj
TASM (.com)
==Ассемблирование==
tasm hello-1.asm
==компановка==
tasm /t /x hello-1.obj
====Опции компановщика=====
/x Не создавать файл карты (map)
/t Создать файл типа .com (по умолчанию .exe)


Ответ отправлен: 01.04.2004, 14:45
Отправитель: SedHg


Отвечает Евгений Иванов

Доброе время суток, xxx!
1. tasm /Tdc
2. используй IDA и не заморачивай голову! :)


* EMan: -=- Любовь существует! =-=


Ответ отправлен: 02.04.2004, 17:04
Отправитель: Евгений Иванов


 Вопрос № 5122

Здравствуйте. Спасибо за помощь в прошлый раз.
Вопрос немного не по теме, но не знаю где его еще задать.
По поводу MASM32 и SoftIce, т.е. загрузки моего файла
(собранного в MASM32) в SoftIce используя Symbol Loader.
Сначала я ассемблирую файл in.asm используя ml.exe с такими параметрами: /c /coff /Zi
Затем линкую, используя link.exe с ключами /subsystem:console /debug /debugtype:cv
Создаются файлы in.ilk, in.pdb, in.exe.
Теперь когда я в Symbol Loader открываю in.exe и нажимаю load,
выскакивает ошибка "An error occured during symbol translation/load"
А в рабочем окне Can't find Visual C++ MSPDBXX.DLL in path.
Настройки в Loadere: Load Executable (и везде Stop) и
Symbols only (include.. и т.д.)
Почему Loader не видит файлы с нужной отладочной информацией (пути к ним верны).
Пока не смог загрузить ни один свой файл!
Стоит SoftIce 4.05, пропатченный под WinXP.
Всем спасибо.



Вопрос отправлен: 30.03.2004, 13:41
Отправитель: Xander

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Доброе время суток, Xander!
Так ответ тебе и даёт Symbol Loader! Нужно прописать в переменной %PATH% путь к каталогу с файлом mspdb50.dll - он имеется в составе MASM32.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 31.03.2004, 17:14
Отправитель: _vt


 Вопрос № 5123

Здравствуйте, уважаемые!
Помогите - винда глючит на ноутбуке жестоко. Кажись после виря какого-то. Половина клавы работает а правая часть - там вместо половины букв печатаются цифры или просто всё смешанно. Проблема не аппаратная - на том же компе всё под линуксом замечательно (кроме поддержки сетевухи :-) Ещё главное, что программа для system restore тоже полетела, какой-то библиотеки не хватает, и ещё что-то в каше по _restore_session заклинило и антивирус не может там половину просканировать. Пытался удалять и добавлять языки, удалять клаву как устройство и восстанавливать, даже жестокими ресетами (что раньше при подобных случаях помогало), всё равно (в сейф-моде - тоже самое) Может кто знает как это дело можно продиагностировать? Что бы понять что это хоть такое. Такое просто ощущение, что что-то там подвешено и перехватывает api клавы. Резидентиков нету, все сервисы лишние посносил, вирь один тока был - убил, всю спайверю тоже выгнал. А реинсталить жалко, этот XP прожил целых 2 года, и до сих пор работает как часы.



Вопрос отправлен: 30.03.2004, 17:59
Отправитель: Эдик (edsam@spidernet.com.cy)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Доброе время суток, Эдик!
Может это страшный макро(гиго)-вирус WinXP? :)
Проше всего переинсталировать.
Возможно повреждюн(или покотсан ЖУТКИМ вирусом) винт.
Попробуёте из под другой ОС (Win совместимой) проверить всё антивирём, проверить винт на наличее повреждений.
Возможно много вариантов, попробуйте спросить в рассылке по
WinXP.

Ответ отправлен: 30.03.2004, 20:09
Отправитель: Pawel


Отвечает DoctorSERG

Приветствую Вас, Эдик!
Помоему ,как это не бонально ,но вам просто нужно обновить
свои анти-вирусные базы ,что-то подобное писали на сайте
КАсперского.


Ответ отправлен: 30.03.2004, 20:32
Отправитель: DoctorSERG


 Вопрос № 5124

Привет !
Сори за вопрос не в тему(offtopic). Просто это самая многочисленная рассылка.
Подскажите сайты подобный этому. Чтобы также можно было бы задавать вопросы и получать ответы на них. Можно на других языках. Хочется посмотреть как у других сделонно.
С Уважением alexneta



Вопрос отправлен: 30.03.2004, 20:34
Отправитель: alexneta

[Следующий вопрос >>] [Список вопросов]

Отвечает DoctorSERG

Добрый день, alexneta!
Слушай сюда чел ,вот тебе ответ не по теме :
это лучший форум ,но если ты хочешь найти
лучше на набери на поисковике 'рассылка faq'
,а лучше не ищи а задавай вопросы по теме!!!



Ответ отправлен: 31.03.2004, 00:03
Отправитель: DoctorSERG


 Вопрос № 5125

Уважаемые эксперты! Допустим, я выделил память и потом закрыл её парой функций GlobalUnlock и GlobalFree, и, если у меня в проге через некоторое время ещё раз вызовутся эти функции с прежними хэндлами, то, возможна ли такая итуация, что моя прога закроет память какой-либо другой проги, которой система выделила память и дала прежний хэндл? Нужно ли делать в таком случае обход повторного закрытия памяти?
Касается ли эта проблема функции CloseHandle?



Вопрос отправлен: 30.03.2004, 22:07
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Добрый день, Alex!
Если ты еще раз будешь закрывать уже закрытый хэндл, то
GetLastError должен вернуть ERROR_INVALID_HANDLE (6).


Ответ отправлен: 31.03.2004, 09:55
Отправитель: Artemy


Отвечает Pawel

Приветствую Вас, Alex!
Память другой проги закрыта не будет, но ты получишь сообшение об ошибке типа ERROR_INVALID_HANDLE

Ответ отправлен: 31.03.2004, 10:07
Отправитель: Pawel


Отвечает Gibbel

Приветствую Вас, Alex!
Для начала, хочется отметить, что хэндлы твоего процесса действительны только в твоем процессе, и никак не связаны с хэндлами других процессов.
Внутри твоего процесса возможна ситуация, когда значение хэндла вновь выделенного ресурса будет совпадать с твоим. Для избежания такой ситуации, храните хэндлы в глобальных переменных и обнуляйте их, в случае, если они не используются. Функции CloseHandle это также касается. И вообще, это касается всех ресурсов, выделяемых и освобождаемых системой.
P.S.: А при чем тут Ассемблер???

Ответ отправлен: 31.03.2004, 10:09
Отправитель: Gibbel


Отвечает Евгений Иванов

Здравствуйте, Alex!
Всё будет нормально, эти функции хранят свою таблицу и проверяют с ней.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 02.04.2004, 17:05
Отправитель: Евгений Иванов



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (15)
Perl (1)
Builder / Delphi (17)
Pascal (19)
Basic / VBA (3)
Java / JavaScript (4)
PHP (8)
Криптография (6)
WinAPI (12)
Радиоэлектроника (8)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (52)
"Железо" (27)
Поиск информации (18)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (9)
Юристу
Гражданское право (11)
Семейное право (10)
Трудовое право (10)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное