Ради интереса скомпилировал проект в VS2008 и прогнал под отладчиком.
Все верно, приложение падает в GetData (char *lpszBuffer,DWORD dwSize,DWORD *lpdwBytesRead),
а именно — вот на этой строке: lpszBuffer[*lpdwBytesRead] = 0;
Потому что lpszBuffer = NULL.
Причины, думаю, найдете самостоятельно.