Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.044 c
3-1095388041
Medik
2004-09-17 06:27
2004.10.17
ADO и BDE


14-1096427283
080D:07BBh
2004-09-29 07:08
2004.10.17
Регулярные выражения


8-1090432990
beatles_bntu
2004-07-21 22:03
2004.10.17
Качественная оброботка текстуры в OpenGL


9-1086894437
Огромное Кулясище
2004-06-10 23:07
2004.10.17
Странная видеокарта....


14-1096139602
Knight
2004-09-25 23:13
2004.10.17
Где искать прозрачность надписей в WindowsXP?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский