Я понял в чем дело. Досадная описка, незамеченная ни мной, ни Вами:
A>> hal->df.fNC=sizeof(DROPFILES);
вместо hal->df.pFiles=sizeof(DROPFILES);
А с остальным — memset лишнее, согласен, а вот GlobalUnlock надо наверно все же до DragQueryFile делать.
Потом, после DragQueryFile я делаю GlobalFree.
И такой вопрос — DragFinish что освободит? Я к тому, что если приложение куда я WM_DROPFILES пошлю сделает DragFinish, мне уже GlobalFree не надо будет делать?