Si tenes la base de la ruta en lpBuffer, cuando leas el nombre del archivo, debes concatenar esos datos en un solo buffer a la hora de llamar a CreateFile, de lo contrario no tiene mucho sentido tener una base de ruta en un buffer y el nombre del archivo en otro.
También cabe remarcar que lstrlen(lpFilename) va a devolver 0, y ademas uno de los parámetros de ReadConsole es incorrecto, debería ser un LPDWORD (DWORD &charsread por ejemplo) de lo contrario te debería dar un error. No recuerdo si dicho parámetro es opcional o no, revisalo en la MSDN pero creo que no lo es.
Seguramente CreateFile te devuelve ERROR_PATH_NOT_FOUND por lo antes mencionado, así que procura llamar a GetLastError para encontrar el problema.
Algo así:
HANDLE hFile = CreateFile(lpFileName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
if(hFile==INVALID_HANDLE_VALUE)
printf("CreateFile error: %d\n",GetLastError());
Y luego buscas en la MSDN los códigos de error.
Saludos!