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

Программирование. Форум !!!

Проблема с указателями в WinAPI

Hello Subscribe.Ru,

Sunday, May 31, 2004, 5:18:21 PM, you wrote:

-

Вопрос 1: hSomeListView - хендл, принадлежащий чужому процессу.
Если я работаю с чужим хендлом, разве COMCTL32.dll будет падать?
Почему???

Вопрос 2: Почему с указателем на выделенную память с magic аттрибутом
работает, а с указателем на статическую переменную не идет?

Все писал под WinME на VS 6.0

Ответить   Cyberbob Sun, 13 Jun 2004 18:41:07 +0400 (#169189)

 

Ответы:

Не спорю, дескрипторы окон разделяются между процессами.
И до тех пор, пока в параметрах сообщений нет указателей, все будет работать.
Но если в сообщении есть указатель на область памяти в одном процессе,
а окно создано в другом - при попытке обработать сообщение будет
ошибка, поскольку адресные пространства процессов в Win32
раздельные и обращение будет выполнено не поймешь куда.
Из этого правила есть исключения, например WM_COPY.
В других случаях, чтобы передать сообщения с указателями
между процессами, идут на различные ухищрения,
одно из которых и было в примере.

Чтобы послать сообщение с указателем в приведенном примере пытаются
добиться, чтобы адрес области памяти в вызывающем процессе был
одинаковым с адресом в вызываемом и доступ к этой памяти был
у обоих процессов. Для этого создается область разделяемой
памяти, хотя такого способа, повторюсь, я в документации
не видел. С обычной переменной это не
пройдет - смотри выше.

Под Win9x/WinME такой финт ушами проходит, а вот на WinNT,
насколько я помню, не гарантируется, что адреса разделяемой
памяти в разных процессах будут одинаковы.
Можно будет уточнить у Рихтера.

--
Номер выпуска : 3260
Возраст листа : 267 (дней)
Количество подписчиков : 419
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/170075
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Tue, 15 Jun 2004 13:03:43 +0400 (#170075)