Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизGlobalLock Найти похожие ветки
← →
P@vel © (2004-09-15 15:44) [0]Дело такое. Надо получить начальный адрес блока памяти. Делал так
HWND:=GlobalAlloc(GMEM_MOVEABLE,2);
HWND:=GlobalReAlloc(HWND,FSize,GMEM_MOVEABLE);
Adress:= GlobalLock(HWND);
GlobalUnlock(HWND);
HWND:=GlobalAlloc(GMEM_MOVEABLE,1);
HWND:=GlobalReAlloc(HWND,FSize,GMEM_MOVEABLE);
Adress:= GlobalLock(HWND);
В последней строке Adress становится null. А LastError показывает ошибку N157
ERROR_DISCARDED
The segment is already discarded and cannot be locked.
Можно ли получить начальный адрес не используя GlobalLock ?
← →
inic © (2004-09-15 15:52) [1]Зачем тут первые 4 строки, от них смысла вроде никакого.
ИМХО, плохо работать с адресом анлоканной памяти.
Может FSize = 0 ?
← →
P@vel © (2004-09-15 16:03) [2]Дело в том, что я пишу объект(типа stream). Только, что-бы при чтении, прочитанный кусок памяти удалялся. Ну так вот первые 4 строки выделяют память 10б. А в остальных выделяется память 8б. Ну и потом там соответственно всё копируется за исключением. прочитанного отрезка.
← →
Суслик © (2004-09-15 16:05) [3]Зачем тебе вообще куча нужна?
Чем штатный менеджер памяти (getmem, freemem и пр) не угодил?
← →
P@vel © (2004-09-15 16:10) [4]X3. Но сейчас всё переделывать нет желания.
← →
inic © (2004-09-15 16:13) [5]И все таки, интересно, ты же значения переменных заменяешь, как тогда работать с 1ой памятью, ее даже не освободить.
← →
Суслик © (2004-09-15 16:14) [6]Т.к. ответа я на память не помню, то могу посоветовать сказать первую ссылку с http://irazin.ru/Some.htm (книга Рихтера) и прочесть 18 главу (там ровно 10 страниц).
Может поможет.
Успехов.
← →
P@vel © (2004-09-15 16:27) [7]
HWND:=GlobalAlloc(GMEM_MOVEABLE,2);
HWND:=GlobalReAlloc(HWND,FSize,GMEM_MOVEABLE);
Adress:= GlobalLock(HWND);
GlobalUnlock(HWND);
HWND:=GlobalAlloc(GMEM_MOVEABLE,1);
HWND:=GlobalReAlloc(HWND,FSize,GMEM_MOVEABLE);
NewAdress:= GlobalLock(HWND);
.....
{Copy Commands}
.....
Adress:=NewAdress;
← →
P@vel © (2004-09-15 16:34) [8]
> Суслик
Большое спасибо за ссылку. Книга на шару это очент приятно. :) Сейчас почитаем.
← →
inic © (2004-09-15 16:42) [9]Какое значение у FSize в этот момент ? Что говорит дебуг ?
И все-таки, ИМХО, не стоит пользоваться Address после GlobalUnlock(HWND), адрес может оказаться не актуальным .
← →
P@vel © (2004-09-15 17:07) [10]Da dejstvitel"no. FSize ravnalsa nul"u. No pri etom ja vseravno polu4"al. HWND ne ravnij nil. Sha vse ispravil senx.
← →
Cobalt © (2004-09-15 22:00) [11]2 P@vel © (15.09.04 17:07) [10]
> No pri etom ja vseravno polu4"al. HWND ne ravnij nil.
Любите справку - источник знаний!
dwBytes
Specifies the new size, in bytes, of the memory block. If this parameter is zero and the uFlags parameter specifies the GMEM_MOVEABLE flag, the function returns the handle of a memory object that is marked as discarded. If uFlags specifies the GMEM_MODIFY flag, this parameter is ignored.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c