Встречал ли кто юзермод Вин32 АПИ функу в которой бы выделся/удалялся/ресайзился некий буфер памяти, причем ссылка на него бы была в другом буфере переданом в функу через параметр (без учета объектов ядра и гуя)? (см пример ниже) Если да, то какие это функи? Пример: ?
_basmp_ Каждая программа(вернее компилятор) по свойму реализует GetMam, так что формат указателя у всех разный. Поэтому Win API не может создавать указатели. Иначе менеджер памяти программы перестанет работать так как надо.
Velheart Где? Я имел ввиду изменение памяти с вложеной (порядка >1) ссылкой в буфере ссыль на который передается через параметры. Pavia Что-то я сегодня торможу. Меня интересуют только юзермод винапи (дх, огл (хотя огл - надстройка над дх, те можно отбросить) тоже. но с ними потом), внутрипроговские менеджеры - не важны.
_basmp_ Я тебе написал причину, по которой так не делают. Хотя тут есть один нюанс. Все-таки это возможно. Но не в юзер моде. Нужна другая память. Две кучи в одном адрестном пространстве быть не могут. Зато у нас есть видео память вот в ней выделять освобождать память можно. Но этим должно заведовать ядро ОС. На данный момент до висты это было дано на откуп драйверам. В висте есть DX 10. Собственно там надо искать.
Pavia Почему не может быть две кучи? Придется заводить дескриптор кучи и передавать его при работе с памятью, но это не такая уж проблема. _basmp_ Речь, случайно, идет не об указателе на указатель?
_basmp_ Бредово конечно, но наверно есть, что-то типо специфическое, для инициализации какой-нибудь структуры. Только почему именно WinApi? И самому такой бред можно сделать.
Pavia Я сам понимаю, что умные люди так не сделают, тк вероятность утечки или ошибки при такой неявности начинает -> 100%. Но а вдруг. Может встречал кто. Mika0x65 типа того. да. особенно интересны неявные случаи. Booster Не. мне ничего делать не надо. Только найти такие функи в юзермод апях или не найти, но с гарантией.
_basmp_ Чего то я недопонимаю чего ты хочешь... Например CreateCompatibleDC и т.п. создаёт в памяти контекст который по сути своей и есть буфер памяти, затем рисовальные api используют этот буфер узнавая о нём, через параметр handle контекста. Это нужно?
Y_Mur это объект gdi. Нет. Пока нет. Вопрос: существуют ли апи функи меняющие (выделяющие/ресайзящие/удаляющие) вложенные мем буфера (те не по ссылке первого уровня, те ссыль на ссыль итд). Сам таких не знаю или не помню или не знаю как найти/проверить или.. Вот и спрашиваю для страховки.
Типа создаётся буфер памяти для списка объектов, затем выделяются блоки памяти для самих объектов и ссылки на них заносятся в этот список? Наверняка такое используется в api. Логично было бы это например в toolbar затем заполняемом кнопками, хотя такой там подход или нет не знаю.
Код (Text): SERVER_INFO_100* psi100; DWORD entrRead, totEntr; NetServerEnum(NULL, 100, (LPBYTE*)&psi100, MAX_PREFERRED_LENGTH, &entrRead, &totEntr, SV_TYPE_ALL, NULL, NULL); оно?
Все ф-ии из NETAPI32.dll работают с буфером по такой схеме, они вызывают NetApiBufferAllocate из этой же либы; "заблочивание" этой функи в explorer-е(или в total-е, кто что юзает) ввергает типичного юзверя в шок при его попытке подконнектиться к какому-либо компу по сети