[c++ & boost] save copy of file to USB

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb wat code die een file kopieert naar een USB stick mbt boost filesystem.
Daarna kopiëer ik nog een file naar een andere partitie van de HDD en geef ik op het UI aan dat ik klaar ben.

Als je dan de USB er snel uit trekt, staat de file er niet, gedeeltelijk en soms helemaal op.
(sommige sticks zijn gevoeliger hier voor dan anderen).
Natuurlijk is dit normaal, bekent en geaccepteerd van USB, maar ik wil het niet.
Ik zou de usb netjes kunnen ejecten, maar soms moet er nog meer gebeuren op de USB stick en ik wil de gebruiker niet opzadelen met eruit en erin stoppen van de stick. Ook zijn sommige gebruikers haastig en die doen dan niet netjes eject, maar ondanks dat wil ik gewoon zeker zijn dat mijn file erop staat.

ik heb geprobeerd:
code:
1
2
3
4
5
BOOSTFS::copy_file(ori, dest)
if(BOOSTFS::exist(dest))
{
    print("Gelukt");
}


Ondanks dat ie "Gelukt" printte, stond de file niet op de stick.
Zelfs het linken met commode.obj (zie: Force-bestanden naar de schijf worden gewist) en het toevoegen van een _flushall() hielp niet.

_commit heb ik niet gebruikt omdat ik van BOOSTFS geen windows file handle kreeg. Ook staat er: "_commit will only function on 16-bit operating systesm." terwijl ik op windows XP embedded draai.

Heeft iemand goede ideeën hoe ik de USB-stick kan flushen zonder een eject uit te voeren?

[ Voor 4% gewijzigd door Verwijderd op 02-03-2011 21:12 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik ken boost FS niet goed genoeg, maar als je geen OS-specifieke handle kunt krijgen dan zit er weinig anders op dan geen boost FS gebruiken en het via de functionaliteit van het OS zelf te doen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 15:58

LauPro

Prof Mierenneuke®

Sowieso vraag ik mij af of die _commit() überhaupt iets van zin heeft bij USB devices. Dit omdat als het druk is op de bus de Mass Storage Device driver best wel eens kan besluiten om het eea te cachen. Ik geloof dat je bij apparaatbeheer ook een aantal instellingen kan maken of er een disk cache moet worden gebruikt. Zou daar eens gaan zoeken.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-09 14:31
USB Mass Storage is het kleinste probleem. Dat lijkt genoeg op SCSI om flushes te verwerken. Ik zou me eerder zorgen maken over de flash controller. Een write duurt onder water serieus lang.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Door het linken met commode.obj, een CreateFile met FILE_FLAG_WRITE_THROUGH en een FlushFileBuffers heb ik het voor elkaar gekregen om snel genoeg te zijn.

Erg bedankt

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
Er zit nogal wat verschil in snelheid tussen (USB) flash drives, dus als je nu 'snel genoeg' bent, hoeft dat niet zo te zijn bij een ander merk/type stick/card/controller.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 18:36

Ventieldopje

I'm not your pal, mate!

Maar hij heeft write-through aan staan, dan gebruik je de tijdelijke buffer niet, schrijven zal dus wat langzamer gaan maar het staat er wel meteen helemaal op ;) FlushFileBuffers zal dan misschien nog niet eens nodig zijn maar dat weet ik niet ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

schrijven zal dus wat langzamer gaan maar het staat er wel meteen helemaal op
Dat is dus een contradictie. Maar waar het om gaat is dat als de schrijffunctie retourneert, dat je er dan nog steeds niet verzekerd van bent dat de bits daadwerkelijk zijn weggeschreven naar flash.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1