INFO: FILE_FLAG_WRITE_THROUGH a FILE_FLAG_NO_BUFFERING

Preklady článku Preklady článku
ID článku: 99794 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

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 údaje skô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't návrat do údajov je napísané v súbore. Toto sa vzťahuje na vzdialený píše ako aj--siete Presmerovač prechádza príznak FILE_FLAG_WRITE_THROUGH server 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 a odstraňuje všetky čítanie dopredu súbor do medzipamäte a disku caching rovnako, takže všetkých čitateľov sú zaručené prísť zo súboru, a nie z akéhokoľvek systému Medzipamäť alebo disk cache. Pri použití FILE_FLAG_NO_BUFFERING disku číta a píš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 procesor a médiá zarovnanie obmedzenia hardvéru používate.

DALSIE INFORMACIE

Windows 95 CDFS (CD-ROM File System) nepodporuje Príznak FILE_FLAG_NO_BUFFERING na CreateFile(). Kým Windows 95 FSD, takéto ako VFAT, môže zaviesť, FILE_FLAG_NO_BUFFERING nie je požadovaný príznak pre 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 a Prejsť 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 na súč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äte urobiť nič iné ako systému nie je ovplyvnená touto splachovacími; akékoľvek možné súbor do medzipamäte, že C Run-time robí na súbory otvorené s c Run-time rutiny je ovplyvnený.

Pri otváraní vzdialeného súboru v sieti, server vždy cache a nezohľadňuje žiadne medzipamäť vlajkou špecifikované klienta. To je zámerné. Presmerovač a server nemôže správne vykonať úplný sémantiku FILE_FLAG_NO_BUFFERING cez sieť. Najmä požiadavku na veľ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č a Server zaobchádzať ako žiadosť pre FILE_FLAG_WRITE_THROUGH. Súbor nie je vo vyrovnávacej pamäti u klienta, píše ísť priamo na server a na disk na server a čítať a zapisovať veľkostí v sieti sú presne to, čo apliká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 typu z 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, je dobrý nápad cache na klientovi. Malé, náhodný prístup I/O, často je najlepšie nie do vyrovnávacej pamäte.

Vlastnosti

ID článku: 99794 - Posledná kontrola: 10. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
Kľúčové slová: 
kbapi kbfileio kbinfo kbkernbase kbmt KB99794 KbMtsk
Strojovo preložené
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

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com