Delen via


Uitvoerbare bestanden

Uitvoerbare bestanden worden geladen in de adresruimte van een proces met behulp van een geheugentoewijzingsbestand. Het bestand zelf hoeft niet te worden geopend en er hoeft ook geen handle te worden gemaakt, omdat de toewijzing wordt uitgevoerd met behulp van een deel. Bestandssystemen moeten controleren om deze speciale semantiek af te dwingen, ervan uitgaande dat ze ondersteuning bieden voor geheugen toegewezen bestanden. De code van het FASTFAT-bestandssysteem om te controleren op dit geval vindt u bijvoorbeeld in de functie FatOpenExistingFCB in het bronbestand Create.c uit de fastfat-voorbeelden die de WDK bevat:

    //
    //  If the user wants write access to the file, make sure there
    //  is not a process mapping this file as an image. Any attempt to
    //  delete the file will be stopped in fileinfo.c
    //
    //  If the user wants to delete on close, check at this
    //  point though.
    //

    if (FlagOn(*DesiredAccess, FILE_WRITE_DATA) || DeleteOnClose) {

        Fcb->OpenCount += 1;
        DecrementFcbOpenCount = TRUE;

        if (!MmFlushImageSection( &Fcb->NonPaged->SectionObjectPointers,
                                  MmFlushForWrite )) {

            Iosb.Status = DeleteOnClose ? STATUS_CANNOT_DELETE :STATUS_SHARING_VIOLATION;
            try_return( Iosb );
        }
    }

Dus zorgt het bestandssysteem ervoor dat een geheugentoegankelijk bestand, inclusief een uitvoerbaar bestand, niet kan worden verwijderd, ook al is het bestand niet geopend.