Ændringer af filsystemet og lagerstakken, der skal begrænse direkte adgang til disken og direkte adgang til diskenheden i Windows Vista og i Windows Server 2008

Oversættelser af artikler Oversættelser af artikler
Artikel-id: 942448 - Få vist de produkter, som denne artikel refererer til.
Udvid alle | Skjul alle

På denne side

INTRODUKTION

I artiklen beskrives de ændringer, der er foretaget af filsystemet og af lagerstakken, der skal begrænse den direkte adgang til disken og den direkte adgang til diskenheden i Windows Server 2008 og i Windows Vista.

Yderligere Information

Baggrund

Når der åbnes en eksklusiv filhandle i et program, antages det, at indholdet af filen ikke længere kan ændres. Indholdet af filen kan dog ændres, hvis følgende betingelser er til stede:
  • Et andet program åbner filhandlen på den underliggende diskenhed eller den underliggende disk.
  • Der foretages ændringer af den placering, hvor filen er gemt.
Systemet kan blive beskadiget eller ustabilt, når der skrives direkte til en diskenhed, der er tilsluttet via et filsystem, og der ikke først opnås udelt adgang til diskenheden. Det skyldes, at skrivning til diskenheden kan kollidere med skrivninger til filsystemet. Når der opstår sådanne kollisioner, vil indholdet af diskenheden måske blive inkonsistent.

For at reducere effekten ved dette problem blev der foretaget ændringer af filsystemet og af lagerstakken for at begrænse den direkte adgang til disken og diskenheden.

Detaljer om ændringen af filsystemet og af lagerstakken

  • Et filsystem kan kun skrive til en diskenhedshandle, hvis følgende betingelser er til stede:
    • Betingelse 1: De sektorer, der skrives til, er startsektorer.

      Bemærk! Denne betingelse findes for at understøtte programmer, f.eks. antivirusprogrammer, installationsprogrammer og andre programmer, der skal opdatere startkoden for systemdiskenheden. Systemdiskenheden kan ikke låses.
    • Betingelse 2: De sektorer, der skrives til, findes uden for filsystemets område.

      Bemærk! Området mellem slutningen af filsystemets område og slutningen af diskenhedens område styres ikke af filsystemet. Der er derfor ingen grund til at kræve, at diskenheden låses for at skrive til den.
    • Betingelse 3: Diskenheden er blevet låst implicit, idet der er anmodet om udelt skriveadgang.
    • Betingelse 4: Diskenheden er blevet låst eksplicit, idet der er anmodet om låsning eller afbrydelse af forbindelsen.
    • Betingelse 5: Skriveanmodningen har flaget SL_FORCE_DIRECT_WRITE, der angiver, at betingelse 2 skal ignoreres.

      Bemærk! Der findes filtre for filsystemer, som skriver til det ledige område i en diskenhed uden først at låse diskenheden. Hvis filtrene for filsystemet skal gøre det, kan filtrene for filsystemet angive et flag ved skriveanmodningen, der giver filsystemet besked om at tillade skrivningen. Dette flag kan kun angives inde fra kerneniveau.
  • Ændringerne af filsystemet og lagerstakken gælder ikke, hvis diskenheden ikke er tilsluttet, eller hvis diskenheden ikke har et filsystem.
  • UDFS-filsystemet og FASTFAT-filsystemet begrænser de ændringer, der foretages af filsystemet og lagerstakken. Disse ændringer er begrænset til diskmedier.

    Bemærk! De fleste cd-aktiverede programmer skriver direkte til diskenheden uden først at låse diskenheden. Visse cd-aktiverede programmer ignorerer endda filsystemlaget. I disse tilfælde skriver sådanne programmer direkte til lagerlaget. Da sidefilen kun kan placeres på diskdrev, er der ingen grund til at anvende de ændringer, som blev foretaget af filsystemet og lagerstakken på optiske drev.
  • Lagerdriverne kan skrive til en diskhandle, hvis følgende betingelser er til stede:
    • Betingelse 1: De sektorer, der skrives til, ligger ikke inden for en diskenhed.

      Bemærk! Programmer bruger de sektorer, der ligger uden for diskenheder, til at lagre metadata. Partitionstabellerne findes også i de sektorer, der ligger uden for diskenhederne. Da disse sektorer ikke styres af et filsystem, er der ingen grund til at blokere adgang til sektorerne.
    • Betingelse 2: De sektorer, der skrives til, ligger inden for en tilsluttet diskenhed, der er låst eksplicit.
    • Betingelse 3: De sektorer, der skrives til, ligger inden for en diskenhed, der ikke er tilsluttet, eller de ligger inden for en diskenhed, der ikke har et filsystem.
  • Ændringerne af filsystemet og lagerstakken gælder også for paritetsblokkene i en diskenhed.
  • Ændringerne af filsystemet og lagerstakken gælder for 32-bit systemer og 64-bit systemer.
Ud over de forskellige WriteFile-API'er findes der anmodninger om enheds-IO-kontrol, der kan bruges til at skrive til en diskenhed eller en disk. Ændringerne af filsystemet og lagerstakken gælder også for anmodninger om enheds-IO-kontrol. Anmodningerne om enheds-IO-kontrol omfatter følgende kommandoer:
  • IOCTL_DISK_COPY_DATA
  • IOCTL_SCSI_PASS_THROUGH
  • IOCTL_SCSI_PASS_THROUGH_DIRECT
  • SCSIOP_WRITE6
  • SCSIOP_WRITE
  • SCSIOP_WRITE_VERIFY
  • SCSIOP_WRITE_SAME
  • SCSIOP_WRITE_LONG
  • SCSIOP_XDWRITE
  • SCSIOP_XPWRITE
  • SCSIOP_XDWRITE_READ
  • SCSIOP_WRITE12
  • SCSIOP_WRITE_VERIFY12
  • SCSIOP_WRITE16
  • SCSIOP_WRITE_VERIFY16
  • SCSIOP_WRITE_SAME16
  • SCSIOP_WRITE_LONG16
  • SCSIOP_WRITE_XDWRITE_EXTENDED16
  • SCSIOP_WRITE_COPY
  • SCSIOP_WRITE_COPY_COMPARE
I forbindelse med disse kommandoer bliver LBA-bitten bedt om at afgøre, om forskydningen er angivet i CHS-format eller LBA-format. Da systemet ikke kan opnå den reelle geometri, mislykkes alle forespørgsler, der sendes i CHS-format. Det burde ikke være et problem, da alle moderne diske forventer, at forskydningen er i LBA-format.

32-byte skrivekommandoerne af typen SCSI er ikke filtreret, da der kun er 16 byte i CDB'en. Den udvidede kopieringskommando filtreres heller ikke. Overførselslængden er i byte for de lange skrivekommandoer. Men alle andre kommandoer er i sektorer.

Følgende grupper af kommandoer lykkes ikke, fordi de er forældet:
  • IOCTL_ATA_PASS_THROUGH
  • IOCTL_ATA_PASS_THROUGH_DIRECT
  • IDE_COMMAND_WRITE
  • IDE_COMMAND_WRITE_DMA
  • IDE_COMMAND_WRITE_DMA_QUEUED
  • IDE_COMMAND_WRITE_MULTIPLE
  • IDE_COMMAND_WRITE_EXT
  • IDE_COMMAND_WRITE_DMA_EXT
  • IDE_COMMAND_WRITE_DMA_FUA_EXT
  • IDE_COMMAND_WRITE_DMA_QUEUED_EXT
  • IDE_COMMAND_WRITE_DMA_QUEUED_FUA_EXT
  • IDE_COMMAND_WRITE_MULTIPLE_EXT
  • IDE_COMMAND_WRITE_MULTIPLE_FUA_EXT

Problemer med programkompatibilitet, og hvordan de afhjælpes

Ændringerne af filsystemet og lagerstakken kan medføre, at visse programmer ikke kan køre. Disse programmer kan ikke køre, fordi de bruger direkte adgang til disken eller diskenheden.

Effekten af programkompatibilitet vil være minimal af følgende årsager:
  • Sikkerhedskopieringsprogrammers tilslutning til diskenheden skal afbrydes, før de skriver til diskenheden. Ellers vil programmets skrivninger kollidere med filsystemets skrivninger. Sådanne kollideringer vil medføre, at systemet beskadiges eller bliver ustabilt.
  • Partitioneringsprogrammer retter sig mod partitionstabeller, der findes i sektorer uden for diskenhedens områder. Filsystemer styrer ikke sådanne sektorer. Da adgangen til disse sektorer er aktiveret, påvirkes partitioneringsprogrammerne ikke.
  • Genoprettelsesprogrammer kører højst sandsynligt på diskenheder, som ikke kan sluttes til filsystemet. Da adgangen til RAW-diskenheder er aktiveret, påvirkes sådanne genoprettelsesprogrammer ikke.
  • Programmer til kryptering på blokniveau har som regel en filterdriver, der er gemt i diskstakken, som findes under driveren for partitionsstyring. Filterdriveren filtrerer I/O (Input Output), som driveren for partitionsstyring udsender. Ændringerne af filsystemet og lagerstakken påvirker derfor ikke programmerne til kryptering på blokniveau. Hvis filterdriveren er gemt i diskenhedsstakken, findes filterdriveren under filsystemerne. Ændringerne af filsystemet og lagerstakken påvirker derfor ikke programmerne til kryptering på blokniveau.
  • Programmer til håndtering af cd'er påvirkes ikke, da UDFS-filsystemet og FAT32-filsystemet ikke udfører kontroller, når filsystemet er sluttet til optiske drev. Men programmer til håndtering af cd'er kan påvirkes i følgende scenario:
    • Et program låser filen.
    • Programmet forespørger om filens omfang.
    • Programmet bruger en diskenhedshandle til at skrive direkte til filen.
    Vi opfordrer dog ikke til dette scenario, da dette scenario kan medføre, at filens metadata ikke længere er synkroniseret. Når filens metadata ikke er synkroniseret, kan filen beskadiges.

Egenskaber

Artikel-id: 942448 - Seneste redigering: 25. april 2008 - Redigering: 2.0
Oplysningerne i denne artikel gælder:
  • Windows Vista Ultimate
  • Windows Vista Enterprise
  • Windows Vista Business
  • Windows Vista Home Premium
  • Windows Vista Home Basic
  • Windows Vista Starter
  • Windows Server 2008 Datacenter without Hyper-V
  • Windows Server 2008 Enterprise without Hyper-V
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 Standard without Hyper-V
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Windows Web Server 2008
Nøgleord: 
kbexpertiseadvanced kbhowto kbinfo KB942448

Send feedback

 

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