Что значит dll "сразу закрывается"? Dll не может "сразу закрыться", она выгружается только тогда когда процесс ее сам выгрузит. Вы сразу же получаете DllMain с параметром DLL_PROCESS_DETACH или что? Если вы уже убрали этот корявый цикл то сообщение "return TRUE" вы должны получить сразу, все верно. А до хука с записью данных дело дойдет только когда ваш процесс вызовет HttpOpenRequestW, если конечно все указанные функции по установке хука отработали нормально. DllMain не должна работать в каких либо циклах как WinMain, она вызывается при загрузке - все что надо проинициализировали там, и завершается, и при выгрузке - там освободили все ресурсы, и тоже завершается. Dll со всеми данными и кодом между этими двумя событиями продолжает висеть в памяти процесса.