windows - Async opkald til CreateFile og ReadFile i c ++

Indlæg af Hanne Mølgaard Plasc

Problem



I min c ++ windows applikation bruger jeg funktionen CreateFile for at få adgang til en fil. Jeg bruger også følgende funktioner til at styre min fil:


DeviceIOControl
ReadFile
SetFilePointer


da jeg vil have, at min ansøgning vil få adgang til mange stillinger i filen på samme tid (fra anmodninger, jeg kommer til min ansøgning) Jeg vil have, at min ansøgning vil blive async. Jeg så, at der er et flag for dette kaldet FILE\_FLAG\_OVERLAPPED, men jeg ved ikke, hvordan man bruger det, og hvornår ved jeg, hvornår den fuldfører sin operation.
Er der nogen tilbagekaldelse, som jeg skal tilmelde mig?
hvis du kan kopiere her en prøve vil det være nyttigt


tak

Bedste reference


Du kan bare gyde en ny tråd og ringe ReadFie () synkront fra den anden tråd. Du skal synkronisere begge tråde ved hjælp af et synkroniseringsobjekt, som f.eks. En begivenhed eller en kritisk sektion.


Hvis du insisterer på den enkelt-trådede asynkroniske tilgang, skal du ringe til ReadFile () eller ReadFileEx () og sende en OVERLAPPED-struktur. Strukturen vil give en tilbagekaldsfunktion, der vil blive kaldt, når filen læses er færdig.


Men for den tilbagekaldelsesfunktion, der skal kaldes, skal opkaldstråden (den, der hedder ReadFile () eller ReadFileEx ()) være i en alarmbar tilstand. [6]


Du bruger kun et af ventetilstandsfunktionerne til at suspendere tråden og vente på læsfunktionen for at ringe til tilbagekaldsfunktionen.

Andre referencer 1


Har du læst denne MSDN-side om synkronisering og overlappede input og output, som beskriver hvordan det fungerer og linker til den navngivne pipeserver ved hjælp af overlappende I/O-prøve? [7] [8]