Здравствуйте ув. экстерты... Ответьте ПОЖАЛУЙСТА на вопрос: как выделяется память в Windows? особенно GlobalAlloc или LocalAlloc(кратна ли выделяемая память 64к) т.е. если нам надо 200 байт GlobalAlloc выдаст нам 64к или 200?? Спасибо за внимание...
Приветствую Вас, varyag! GlobalAlloc выделяет вам именно то количество памяти, которое вы запросили. Попытка обратиться за границы выделеного блока вызовет ошибку. Другое дело, как работает механизм распределения памяти Windows. Скорее всего, выделяется память блоками по 4Кб, при этом, неиспользуемая часть этой памяти резервируется. Стоит отметить, что функция GlobalAlloc работает нестабильно при попытке выделить меньше 64 байт памяти. Ответ отправлен: 01.07.2004, 16:39 Отправитель: Gibbel
Вопрос № 202
Привет всем! Делаю ХР-ишную иконку в трэе, заполняю структуру NOTIFYICONDATA таким образом - см. приложение. Сперва делал в BC++B 5 - с использованием VCL, затем решил перенести на WinAPI, в результате чего получил такую вот C++ Error: [C++ Error] Unit1.cpp(201): E2451 Undefined symbol 'NIF_INFO' [C++ Error] Unit1.cpp(204): E2316 'uVersion' is not a member of '_NOTIFYICONDATAA' [C++ Error] Unit1.cpp(204): E2451 Undefined symbol 'NOTIFYICON_VERSION' [C++ Error] Unit1.cpp(207): E2316 'szInfo' is not a member of '_NOTIFYICONDATAA' [C++ Error] Unit1.cpp(208): E2316 'szInfoTitle' is not a member of '_NOTIFYICONDATAA' [C++ Error] Unit1.cpp(209): E2316 'dwInfoFlags' is not a member of '_NOTIFYICONDATAA' [C++ Error] Unit1.cpp(209): E2451 Undefined symbol 'NIIF_INFO' - я сам смотрел специально: в shellapi.h все нормально, при чем как
я уже говорил на VCL все компилилось! Система WinXP. #define _WIN32_IE 0x0600 не помогает. Подскажите, в чем дело?
Доброе время суток, Alexey! Если пишут "Undefined symbol 'NIF_INFO'" - значит, надо искать определение этого символа и смотреть, при каких условиях он определяется. Я пишу на асме, переделывая файлы определений под себя и всё ништяк. То есть я убираю нафиг все условия и получается файл определений для Win2000 - IE4. Если надо файлы - давай адрес, пришлю. Так же могу прислать исходник приложения, сидящего в системном лотке.
Ответ отправлен: 08.07.2004, 09:02 Отправитель: Foamplast
Вопрос № 204
А дело было так: когда у меня был P2 тв тюнер AverMedia на нем работал только если в биосе поставить System - Not PNP. Т.е. если биос устройства не искал. Теперь у меня P4 (отключить определение устройств нет возможности) и возникла необходимость в тюнере. Родной софт работает, но мне нравится JTV. А он не находит тюнер (на P2 работал, работает и сейчас, но только под XP, а я в основном работаю на 98SE). Теперь к делу: Выяснил, что проблема в том, что JTV ищет устройства с помощью DeviceIOControl. Все (4) устройства возвращают код 8086, а надо 109e. Причем биос (в табличке перед загрузкой) показывает 8 устройств где vendor=8086 (IDE,serial,SMbus...), vendor=10de (GeForce4), и наконец 2 штуки vendor=109e(вероятно звук и видео тюнера). Кстати PowerStrip видит тоже все устройства. Вопрос: почему DeviceIOcontrol не видит ВСЕ устройства? Как
заставить JTV работать?
Приветствую Вас, НС! DeviceIoControl() всего лишь посылает сообщение драйверу устройства. Это как SendMessage(). То есть он ничего и не может видеть, всё дело в драйвере, загруженном в данный момент. Возможно, что разные программы активизируют различные драйверы. Либо сторонние программы не рассчитаны на конкретный драйвер. Попробуйте отладить эти программы и посмотреть, чего они грузят и как общаются с устройствами. P.S. У меня ATI All-in-Wonder и никакие программы, кроме родных не идут.
Ответ отправлен: 08.07.2004, 09:03 Отправитель: Foamplast
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.