+WM_GETTEXT +'no memory violation' +why

7 отговора 195 прегледа
#1

+WM_GETTEXT +'no memory violation' +why

ползвал съм WM_GETTEXT за да взема текста от контрола в друг процес

1 става въпрос за различни процеси всеки със собствена памет
2 на WM_GETTEXT му се подава указател кам буфер в твоя процес
3 е как така другият процес успява да запише каквото и да е в паметта на твоя без да предизвика memory violatoin

явно има някаква шашма която не знам
много ше се изкефя ако някой ме светне

Отговор
в отговор на KpyM #2

Re: +WM_GETTEXT +'no memory violation' +why

Ами той protection-а се регулира от операционната система. Ако кодът се изпълнява в kernel mode, няма проблеми да вижда и да пипа в цялата памет, нали така

Отговор
в отговор на KpyM #3

Re: +WM_GETTEXT +'no memory violation' +why

При точно това съобщение се използва memory-mapped file. Когато го пратиш на джам от друг процес онзи прави такъв файл, копира си в него данните, а твоя SendMessage ти попълва буфера от файла.
P.S. Поне това е мнението на Jeffrey Richter

Отговор
в отговор на Teляka #4

Re: +WM_GETTEXT +'no memory violation' +why

Да, логично звучи. Така или иначе не беше достатъчно рационално да се минава в kernel mode при такова съобщение...

Отговор
в отговор на Teляka #5

Re: +WM_GETTEXT +'no memory violation' +why

Tova li e edinstvenoto takova ili ima i drugi?

Отговор
в отговор на Teляka #6

Re: +WM_GETTEXT +'no memory violation' +why

а да знаеш някакав link кам мнението на този Jeffrey Richter
или към нещо подобно за SendMessage

Отговор
в отговор на KpyM #7

Re: +WM_GETTEXT +'no memory violation' +why

Това съм го чел в една книга "Programming Applications for Microsoft Windows " - много добра книга според мен. Покрива win32 рхитектурата ( в частност
windows 2000) - що е процес, синхронизационни обекти, нишки, съобщения. рябва да я има на някой free.*.*

Отговор
в отговор на Teляka #8

Re: +WM_GETTEXT +'no memory violation' +why

Ако е на Jeffrey Richter я имам в .chm формат, мога да я кача на някой български сървър.

My blade can cut through armor, and still cut a tomato
Отговор