Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

INFO: FILE_FLAG_WRITE_THROUGH a FILE_FLAG_NO_BUFFERING

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:99794
SUHRN
Príznak FILE_FLAG_WRITE_THROUGH na CreateFile() spôsobuje akékoľvek píše naže zvládnuť zapisujú priamo do súboru bez pričom pufrovaný. Vúdaje uložené (uložené vo vyrovnávacej pamäti disku); Avšak, je to stále napísanépriamo do súboru. Táto metóda umožňuje operáciu čítania na tieto údajeskôr uspokojil žiadosť o prečítať z vyrovnávacej pamäte údaje (ak je to ešte existuje),ako majú robiť súbor čítať na získanie údajov. Zápis volanie doesn'tnávrat do údajov je napísané v súbore. Toto sa vzťahuje na vzdialený píšeako aj--siete Presmerovač prechádza príznak FILE_FLAG_WRITE_THROUGHserver tak, že server vie, aby uspokojil žiadosť o zápis doúdaje sa zapíše do súboru.

FILE_FLAG_NO_BUFFERING berie tento koncept jeden krok ďalej aodstraňuje všetky čítanie dopredu súbor do medzipamäte a disku caching rovnako, takževšetkých čitateľov sú zaručené prísť zo súboru, a nie z akéhokoľvek systémuMedzipamäť alebo disk cache. Pri použití FILE_FLAG_NO_BUFFERING disku číta apíše sa musí vykonať na sektor hranice a medzipamäte adresy musia byťzosúladiť hranice sektora disku do pamäte.

Tieto obmedzenia sú potrebné pretože medzipamäť, ktorá prechádza načítať alebo zapisovať API použije priamo na I/O na úrovni zariadenia; v tomúrovni, rezervných adries a veľkosti sektorov musia spĺňať všetky procesora médiá zarovnanie obmedzenia hardvéru používate.
DALSIE INFORMACIE
Windows 95 CDFS (CD-ROM File System) nepodporujePríznak FILE_FLAG_NO_BUFFERING na CreateFile(). Kým Windows 95 FSD, takétoako VFAT, môže zaviesť, FILE_FLAG_NO_BUFFERING nie je požadovaný príznakpre systém súborov ovládače, a to nie je podporovaný CDFS.

Tento fragment kódu demonštruje, ako údaje v tlmivom roztoku zarovnajte sektora aPrejsť na CreateFile():
  char buf[2 * SECTOR_SIZE - 1], *p;  p = (char *) ((DWORD) (buf + SECTOR_SIZE - 1) & ~(SECTOR_SIZE - 1));  h = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE,      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,      FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING, NULL);  WriteFile(h, p, SECTOR_SIZE, &dwWritten, NULL);				
Ukazovateľ p je zarovnaný sektora a bodov v medzipamäti.

Ak máte situácia, kam chcete vyprázdniť všetky otvorené súbory nasúčasné logickú jednotku, to môžete urobiť:
   hFile = CreateFile("\\\\.\\c:", ....);   FlushFileBuffers(hFile);				
Táto metóda spôsobuje všetky nárazníkový zapísať údaje pre všetky otvorené súbory na C:oblasť spláchnuť a zapísané na disk. Všimnite si, že akékoľvek do medzipamäteurobiť nič iné ako systému nie je ovplyvnená touto splachovacími; akékoľvekmožné súbor do medzipamäte, že C Run-time robí na súbory otvorené s cRun-time rutiny je ovplyvnený.

Pri otváraní vzdialeného súboru v sieti, server vždy cache anezohľadňuje žiadne medzipamäť vlajkou špecifikované klienta. To je zámerné.Presmerovač a server nemôže správne vykonať úplný sémantikuFILE_FLAG_NO_BUFFERING cez sieť. Najmä požiadavku naveľkosti sektora, sektora zarovnaný I/O nemôže byť splnená. Preto, keď Win32 -založené aplikácia opýta na FILE_FLAG_NO_BUFFERING, Presmerovač aServer zaobchádzať ako žiadosť pre FILE_FLAG_WRITE_THROUGH. Súbor nie jevo vyrovnávacej pamäti u klienta, píše ísť priamo na server a na disk naserver a čítať a zapisovať veľkostí v sieti sú presne to, čoaplikácia opýta. Avšak, súbor vyrovnávacej pamäte na serveri.

Nie caching klient môže mať rôzne účinok, v závislosti od typuz i /. Odstránenie hity vyrovnávacej pamäte alebo čítať dopredu, ale tiež môže znížiťveľkosť vysiela a prijíma. Vo všeobecnosti sa pre poradové I/O, jedobrý nápad cache na klientovi. Malé, náhodný prístup I/O, často jenajlepšie nie do vyrovnávacej pamäte.

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 99794 – Posledná kontrola: 10/10/2011 11:26:00 – Revízia: 2.0


  • kbapi kbfileio kbinfo kbkernbase kbmt KB99794 KbMtsk
Pripomienky