Autor: David Strutz (---.dip0.t-ipconnect.de)
Datum: 27.04.16 19:20
UserMessages dürften leider für wm_copydata garnicht verwendet
werden weil die Adresse hinter dem Speicher nicht mehr sicher ist,
weil UserMessages längst empfangen wurden bevor sie (asynchron)
aus WaitInput heraus leiten und der Sender den allozierten Speicher
(lparam) nicht unmöglich mittlerweile anderweitig verwendet.
Danach bleibt dann datensicherer Empfang in einer subclassproc,
die wiederum kann jedoch Aussetzer haben und es könnten darüber
wm_copydata Nachrichten übersehen werden.
Danach bleibt dann also nur eine eigene wProc, diese wiederum
müsste dann aber auch eine nProc sein da die App sonst jederzeit
abstürzen könnte weil ProcAddr auf eine XProfan-Proc leider nur für
Enumeration statt auch für APCs verwendet werden darf.
IMHO geht sicheres wm_copydata-Empfangen mit XProfan dann in
Verbindung mit einer nProc als wndProc.
@Roland: Ich bin nicht sicher ob ich Dich bereits gefragt hatte, ob
Du bei der wm_copydata-Nachricht in Deiner "default" wProc
(sei es die für hWnd) nicht eine Ausnahme regeln könntest
sodass der Speicher hinter lParam auch wirklich zur Verfügung
steht und sicher zu empfangen ist auch ohne nProcs-Workaround.
Es wäre auch ganz einfach zu realisieren rein nur mit 1 weiterem
Speicher zur Laufzeit da nur 1 Thread: Kommt wm_copydata,
dann wird der Speicher (re-)dimensioniert und der Inhalt aus
lparam kopiert, und zuletzt, lparam auf die Adresse des
eigenen Speichers setzen.
wm_copydata ist eine der wertvollsten Messages.

XProfan & FreeProfan rox: http://xprofan.net/

Nachricht bearbeitet (27.04.16 19:27)
|
|