Share via


Ausführbare Images

Ausführbare Dateien werden mithilfe einer speicherzuordnungen Imagedatei in den Adressraum eines Prozesses geladen. Die Datei selbst muss weder geöffnet werden, noch muss ein Handle erstellt werden, da die Zuordnung mithilfe eines Abschnitts erfolgt. Dateisysteme müssen überprüfen, ob sie diese spezielle Semantik erzwingen, vorausgesetzt, sie unterstützen Speicherzuordnungsdateien. Der für diesen Fall zu überprüfende FASTFAT-Dateisystemcode befindet sich beispielsweise in der FatOpenExistingFCB-Funktion in der Quelldatei Create.c aus den fastfat-Beispielen, die das WDK enthält:

    //
    //  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 );
        }
    }

Daher stellt das Dateisystem sicher, dass eine Speicherzuordnungsdatei, einschließlich eines ausführbaren Images, nicht gelöscht werden kann, obwohl die Datei nicht geöffnet ist.