forse il problema è che la tua variabile FileDesc la pardi quando termina la funzione OpenLogFile .

Una soluzione puo essere

FILE* OpenLogFile (char* mioFile )
{
return FileDesc = fopen( "miofile" , "w");
}


fp=OpenLogFile(path);//una chiamata