NOOO, you are using a NULL pointer there:
lpFindFileData = {0};
You either (probably) need to do
lpFindFileData = new WIN32_FIND_DATA
(I didn't try this personally), OR declare a WIN32_FIND_DATA structure and use its address in the call for FindFirstFile(), like this:
WIN32_FILE_DATA fdata;
FindFirstFile(lpFileName, &fdata);
The rest remains the same.
Hope you understand my english :)