Io ho risolto usando:
codice:
for (int i = 0; i < source_length; i++)
{
     HANDLE    hIOMutex= CreateMutex (NULL, FALSE, NULL);
     WaitForSingleObject( hIOMutex, INFINITE );
     //copia dei dati
     ReleaseMutex( hIOMutex);
     percent = (int) (write* 100 / size);
     SendMessage(ProgBar, PBM_SETPOS, percent, 0);
}
E pare funzionare, non so perchè dato che non ho letto molto la documentazione ma per ora mi basta, tornerò a sbatterci la testa più avanti