учу ассемблер.возник вопрос.вернее просьбочка...объясните кто - нибудь про хэндлы.че эт такое и зачем они?
это вопрос не по assembler'у, а по Windows больше )) Handle - что в переводе значит дескриптор, что по-русски более понятно звучит как описатель.
это указатель на "структуру" или "файл"... короче. это нить которая на чтото указывает. в винде функции API обмениваются собой указывая на ТО с чем чтото надо делать с помощью этих вот HANDLE. target для handle может быть: процесс файл папка ... любой "объект", в том числе окно. HANDLE ~ HWND ~ HFILE ~ HMODULE и др. обычно 4 байта занимает. в MSDN описано подробнее и по русски
Ivan_assm обясню на пальцах что ето... Хендл - ет номер адреса в системной таблице некоторой структуры данных . По етому номеру система находит адрес етой структуры в памяти и роботает с ней, как будто ето определённій обект типа файл или окно и т.д.
Ivan_assm Можно и ещё проще. Handle (дескриптор, описатель, жаргонное "хэндл") -- номер чего-нибудь. Например, номер процесса, номер окна и т.д. Эти номера присваивает Вындовз при создании соответствующего объекта (процесса, окна и т.д.) и передаёт его программе, которая в дальнейшем использует сей номер для манипуляций с объектом (например, чтобы послать сообщение окну). Как именно ОС формирует этот номер и как ищет по нему объект, знать не требуется (более того, этот механизм может теоретически меняться от версии к версии, поэтому полагаться на него не стоит).
редко хендл - указатель. хотя смотря что ты подразумеваешь под словом "указатель" под понятием нить обычно понимается thread либо fiber, которые ни на что не указывают, а сами являются объектами МСДН насколько мне известно не переведен на русский
Это не мир ассемблера - это мир "программирования под виндоуз". В мир ассемблера вошел, когда понял арифметико-логические команды и их влияние на флаги. И научился почти любую сложную операцию раскладывать на простейшие шаги. (Если не понял - то и не вошел, хоть трижды запомни весь MSDN.) Все. Остальное - или зависит от конкретной ос (Windows как частный случай), или от процессоров (IA32 как частный случай), но прямой связи с миром ассемблера уже не имеет.
Ходят слухи, что есть ещё мир микрокода. Микрокод, якобы - ноухау фирм-производители. Битфри придумал определение для хэндла - это ручка от форточки. Когда нам нужно что-то с форточкой сделать - мы берём её за ручку и ....
Veter Есть, есть микрокод, или, пользуясь советской терминологией, "микропрограммное обеспечение". С точки зрения обычного программиста оно намертво зашито в процессор или другое устройство и управляет его работой. Можно такую грубую аналогию провести: в MS DOS человек может ввести команду DIR и в ответ получить список файлов в текущем каталоге -- но выводит этот список не "железо" компьютера, а соответствующий код MS DOS. Точно так же любая команда ассемблера, даже такая простая, как MOV EAX, EBX, выполняется неким микрокодом. Для MOV EAX, EBX, например, фактически нужны три операции: 1) выборка кода команды из памяти и его расшифровка; 2) пересылка содержимого регистра EBX в EAX; 2) увеличение содержимого EIP на длину кода команды. Вот эти действия и выполняет микрокод, используя аппаратуру процессора. Но как конкретно это происходит, можно только догадываться: внутреннее устройство микропроцессоров является большой и страшной тайной. Кстати, возможна реализация команд и без микрокода, а прямо с помощью аппаратуры -- это так называемая "жёсткая логика". Первые вычислительные машины именно так и были построены, хотя в дальнейшем перешли на некий гибрид, где часть операций выполнялась аппаратно, а часть -- микропрограммно, поскольку некоторые команды сложно реализовать чисто аппаратным способом (слишком много логических элементов потребуется).
Не думаю, что С дальше от ООП, чем ассемблер... Но идея с косяком понравилась, давно пора навести порядок в терминологии, а то хэндлы какие-то, виндовсы и уиндоузы непонятные. Можно же сделать намного проще и понятней : хэндл ----------------------------- косяк родительское окно ----------------- корабль операционная система ------------- домна
Veter извините за флуд, но используется плотницкая, судостроительная и металлургическая терминология, IMHO необходимо выбрать что-то одно...
Извините, что не в тему, но тут ссылка на msdn в русском виде была http://msdn.microsoft.com/library/ У меня вызывает переадресацию в никуда. Интересно это особенности местной сети или у Всех так? У кого-нибудь работает? Не поленитесь ответте пожалуйста - больно уж объект заявленный интересен?
Ну вот вроде сюда пересылает - здесь работает, но все равно не чисто по русски- с англоязычными отступлениями. http://msdn2.microsoft.com/ru-ru/default.aspx