home *** CD-ROM | disk | FTP | other *** search
-
- Eine EXEC Funktion mit Speicherauslagerung
- Version 3.3a, Freigegeben 93-06-22
-
- Public Domain Software von
- Thomas Wagner
- Ferrari electronic GmbH
- (Achtung Adressänderung, siehe unten!)
-
-
- Dieses Archiv enthält die Quellen für eine 'EXEC'-Funktion die den
- Aufruf externer Programme erlaubt, wobei der Programmspeicher
- optional auf EMS, XMS, oder Datei ausgelagert wird. Bei Auslagerung
- des Speichers werden nur noch wenige K des Hauptspeichers belegt
- während das externe Programm ausgeführt wird. Der Code/Daten-Bereich
- beträgt etwa 1k, der benötigte Speicherplatz ist abhängig von der
- Speicherfragmentierung, sowie besonders von der Größe des
- Umgebungsvariablenblocks. Üblicherweise werden zwischen 2K und 7K
- belegt.
-
- Die Routinen sind kompatibel mit
- Turbo C (Versionen 1.x, 2.x, sowie C++ 1.0)
- Borland C++ (Version 2.0 und höher),
- Microsoft C (Versionen 5.1 und höher),
- Watcom C (Version 8.0),
- Turbo Pascal (Versionen 4.x bis 6.x).
-
- EMS (LIM 3.0 und spätere Versionen) oder XMS werden benutzt sofern
- ausreichend Platz zur Verfügung steht. Wenn nicht, wird eine
- temporäre Plattendatei angelegt. Diese Datei wird in dem durch die
- Umgebungsvariablen TEMP= oder TMP= gegebenen Pfad angelegt. Ist kein
- solcher Pfad angegeben, wird der aktuelle Pfad benutzt.
-
- Aufruf und Parameterversorgung sind in der Datei "exec.h" (C) bzw.
- "exec.pas" (Pascal) detailliert dokumentiert.
-
- Das allgemeine Format ist
-
- retcode = do_exec (Name des auszuführenden Programms,
- Programm-Parameter und Redirection String,
- Spawn-Optionen,
- Benötigter Speicher (0xffff lagert stets aus, 0 nie),
- Umgebungsvariablen-Zeiger/Flag)
-
- zum Beispiel:
-
- rc = do_exec ("cl", "-c -Od exec.c >&errout", USE_ALL, 0xffff, NULL);
-
- oder, für Pascal:
-
- rc := do_exec ('tpc', '/$D+ exec >&errout', USE_ALL, $ffff, false);
-
- Redirection für Standard Input, Standard Output, und Standard Error
- wird optional behandelt indem der Parameter-String nach den folgenden
- Kombinationen durchsucht wird:
-
- stdin: <file
- stdout: >file oder >>file zum Anfügen
- stderr: >&file oder >&>file zum Anfügen
-
- Redirection wird standardmäßig unterstützt. Um sie auszuschalten,
- müssen Sie die Definitionen sowohl in spawn.asm als auch in
- exec.c/exec.pas ändern.
-
- Wenn das auszuführende Kommando eine Batch-Datei ist, wird
- automatisch der Kommando-Prozessor aufgerufen. Der Kommandoprozessor
- wird auch aufgerufen wenn das Kommando leer ist. Dabei wird die
- COMSPEC-Umgebungsvariable benutzt um den Kommandoprozessor zu finden,
- zusätzliche Parameter in der COMSPEC-Zeile werden in die
- Kommandoparameter eingefügt.
-
- Zum Beispiel:
-
- Es sei COMSPEC=C:\DOS\COMMAND.COM /E:960
- PATH=C:\DOS;C:\CMD
- Datei B.BAT existiert in C:\CMD
- do_exec wird aufgerufen mit ('b', 'eins zwei >out', ...)
-
- Dann ist das aufgerufene Kommando
- C:\DOS\COMMAND.COM
- mit dem Parameter-String
- /E:720 /C C:\CMD\B.BAT eins zwei
- und Standard Output wird umgeleitet auf die Datei 'out'.
-
-
-
- INHALT
- ======
-
- Dieses Archiv enthält die folgenden Dateien:
-
- LIESMICH.DOC Diese Datei
- README.DOC Englische Version dieser Datei
-
- GETLANG.EXE Ein Hilfsprogramm zur Extraktion einer ein-
- sprachigen Version aus der zweisprachigen
- Quelle.
- Alle C- und Assembler-Quellen (die Pascal-Quellen
- leider nur teilweise) sind sowohl in Deutsch als
- auch in Englisch dokumentiert, was die Quellen
- schwer lesbar macht. Für bessere Lesbarkeit
- können Sie mit GETLANG eine der Sprachen
- eliminieren.
-
- Benutzung: GETLANG Sprache Compiler <Eingabe >Ausgabe
- wobei Sprache 'E' für Englisch oder 'D' für Deutsch
- Compiler 'C' für C Dateien, 'A' für Assembler,
- 'P' für Pascal.
-
- Beispiele: GETLANG d a <spawn.asm >spawnd.asm
- GETLANG d c <extest.c >extestd.c
-
- DEUTSCH.BAT Batch-File zur Ausführung von GETLANG für alle
- Quelldateien, deutsche Version
- ENGLISH.BAT Batch-File zur Ausführung von GETLANG für alle
- Quelldateien, englische Version
-
- SPAWN.ASM Die Hauptfunktion für exec.
-
- Diese Datei ist für die C und Pascal Versionen gleich.
- Für Benutzung mit Turbo Pascal muß mit dem Turbo-Assembler
- assembliert werden. Die C Version kann mit TASM (geben Sie
- /JMASM51 an) oder MASM 5.1 übersetzt werden.
-
- Assemblieren mit:
- tasm /DPASCAL spawn,spawnp; Für Turbo Pascal, near calls
- tasm /DPASCAL /DFARCALL spawn,spawnp;
- Für Turbo Pascal, far calls
- ?asm spawn; Für C (Default small model)
- ?asm /DMODL=xxx spawn; For C (model 'xxx')
- Beispiel:
- masm /DMODL=large spawn; Large model C
- tasm /DMODL=medium /JMASM51 spawn; Medium model C
-
- SPAWNP.OBJ SPAWN assembliert für Pascal, near calls
- SPAWNCS.OBJ SPAWN assembliert für C (small model)
- SPAWNCL.OBJ SPAWN assembliert für C (large model)
-
- Die C Dateien wurden mit dem /MX-Schalter übersetzt um
- Groß-/Kleinschreibung beim Linken zu berücksichtigen.
-
- Hinweis für Turbo Pascal: Sie können die "near call" Version
- von SPAWN auch dann nutzen wenn Sie mit "force far calls"
- kompilieren, indem Sie die "external"-Definitionen von
- do_spawn und prep_swap in Datei exec.pas in {$F-} und {$F+}
- einschließen.
- Um Konfusion bei der Verwendung mehrerer Compiler zu
- vermeiden, wurde das Pascal-Object "spawnp.obj" benannt.
-
- CHECKPAT.ASM Hilfsfunktion zur Prüfung und Auflösung eines Pfades
-
- Diese Datei ist für die C und Pascal Versionen gleich.
- Für Benutzung mit Turbo Pascal muß mit dem Turbo-Assembler
- assembliert werden. Die C Version kann mit TASM (geben Sie
- /JMASM51 an) oder MASM 5.1 übersetzt werden.
-
- Assemblieren mit:
- tasm /DPASCAL checkpat,checkpap; Für Turbo Pascal, near calls
- tasm /DPASCAL /DFARCALL checkpat,checkpap;
- Für Turbo Pascal, far calls
- ?asm checkpat; Für C (Default small model)
- ?asm /DMODL=xxx checkpat; Für C (model 'xxx')
- Beispiel:
- masm /DMODL=large checkpat; Large model C
- tasm /DMODL=medium /JMASM51 checkpat; Medium model C
-
- CHECKPAP.OBJ CHECKPAT assembliert für Pascal, far calls
- CHECKPCS.OBJ CHECKPAT assembliert für C (small model)
- CHECKPCL.OBJ CHECKPAT assembliert für C (large model)
- CHECKPAT.PAS Einbindungs-Unit für checkpat (Nur Pascal)
-
- Die C Dateien wurden mit dem /MX-Schalter übersetzt um
- Groß-/Kleinschreibung beim Linken zu berücksichtigen.
- Die Pascal-Version muß mit dem FARCALL-Schalter assembliert
- werden wenn Sie sie mit der Einbindungs-Unit CHECKPAT.PAS
- zusammen benutzen. Zumindest Turbo Pascal Version 5.5
- verwendet offenbar stets einen Far Call wenn eine externe
- Routine im Interface-Teil einer Unit definiert wird.
-
- EXEC.PAS Interface Routinen und Dokumentation für Turbo Pascal
- EXEC.C Interface Routinen für C
- EXEC.H Interface Definitionen und Dokumentation für C
- COMPAT.H MS-C/TC Kompatibilitäts-Definitionen für C
-
- Diese Dateien bereiten die Parameter für die Hauptfunktion
- vor und bearbeiten die Datei-Suche und Umgebungsvariablen.
-
- EXTEST.C C Test-Programm für EXEC
- EXTEST.PAS Turbo Pascal Test-Programm für EXEC
-
- Das EXTEST Programm testet die Funktionalität der do_exec
- Funktion. Es erwartet die Eingabe eines DOS-Kommandos und,
- durch Komma getrennt, seiner Parameter. Die Eingabe einer
- Leerzeile startet COMMAND.COM ohne Parameter.
-
- MAKEPAS Make-Datei für Turbo Pascal (Borland Make)
- MAKETC Make-Datei für Borland C++ (Borland Make)
- MAKEMS Make-Datei für Microsoft C (MS NMAKE)
-
-
- Die Turbo Pascal Version von EXEC.PAS enthält Ersatzfunktionen für
- die Umgebungsvariablen-Zugriffsfunktionen 'envcount', 'envstr', und
- 'getenv', sowie eine zusätzliche Funktion 'putenv'. Diese Funktion
- erlaubt Ihnen, zur Umgebung des gerufenen Programms Strings
- hinzuzufügen. Die Definition ist
-
- procedure putenv (envvar: string);
-
- wobei 'envstr' einen String der Form 'ENVVAR=wert' enthält. Das '='
- ist notwendig. Um einen Umgebungsvariablenstring zu löschen geben Sie
- 'ENVVAR=' an. Bitte nutzen Sie nur die Funktionen aus der EXEC Unit,
- mischen Sie sie nicht mit Aufrufen der Funktionen der DOS Unit.
-
-
- SUPPORT
- =======
-
- Diese Software ist "Public Domain", das heißt es gibt keinerlei
- Einschränkungen bezüglich ihrer Nutzung, ob privat oder in
- kommerziellen Produkten. Es ist weder eine Registrierungsgebühr zu
- zahlen, noch sind zur Nutzung irgendwelche Lizenzen erforderlich.
-
- Dies heißt allerdings auch, daß der Autor zu keiner Leistung
- gegenüber dem Nutzer verpflichtet ist. Jegliche Ansprüche auf
- Schadenersatz bei Fehlfunktionen sind ausgeschlossen. Sie haben die
- Quellen, bitte prüfen Sie sie vor Nutzung.
-
- Ich möchte auch um Verständnis bitten, daß ich nicht in der Lage bin,
- kostenlose Programmierberatung zu erteilen, Spezialversionen für
- exotische Compiler zu erstellen, oder neue Versionen dieses Programms
- kostenlos zu versenden.
-
- Fehlermeldungen, Verbesserungsvorschläge und ähnliches senden Sie
- bitte an meine Firmen-Adresse:
-
- Ferrari electronic GmbH
- Ruhlsdorfer Strasse 138
- D-14513 Teltow
-
- Tel.: (+49 3328) 474 626
- Fax: (+49 3328) 438 04-0
-
- BBS: (+49 3328) 438 04-8 (ab 15.8.93)
- Bitte versuchen Sie nicht, vor dem 15.8. anzurufen!
-
- Internet: twagner@bix.com
- BIX: twagner
- Compuserve: 100023,2042
-
- Ein eingeschränkter Support ist über BIX, das Teleconferencing System
- von McGraw-Hill, möglich. Falls Sie Fragen oder Fehlermeldungen
- haben, senden sie BIXmail an 'twagner'. Details über BIX finden Sie
- in der Englischsprachigen Version dieser Dokumentation.
-
-
-
- EINSCHRÄNKUNGEN
- ===============
-
- Der "keine Rückkehr"-Modus von do_exec ist nur der Vollständigkeit
- halber verfügbar. Er hat einige Nachteile gegenüber den
- Standard-Funktionen der Compiler-Bibliotheken. Insbesondere werden
- offene Dateien nicht abgeschlossen, und durch die Laufzeitbibliothek
- belegte Interrupt-Vektoren werden nicht auf den DOS-Standardwert
- zurückgesetzt. Wenn möglich, benutzen Sie für diesen Modus die
- Standardfunktionen.
-
- Das Assembler-Modul "spawn" darf nicht das erste Modul beim Linken
- sein. Fügen Sie es in eine Bibliothek ein, oder geben Sie spawn.obj
- als eine der letzten zu linkenden Dateien an. Das spawn-Modul
- überschreibt etwa 1k am Anfang des Programmspeichers. Dieser Speicher
- wird zwar gesichert, er darf aber nicht Teile des Moduls selbst
- enthalten, da der Programmcode dabei zerstört würde. Die
- do_exec-Funktion überprüft diese Bedingung, und kehrt mit einem
- entsprechenden Fehlercode zurück falls der Code in Gefahr wäre.
-
- Bei Aufruf von do_exec dürfen keine Interrupt-Handler installiert
- sein. Dies schließt Handler für Control-C und Critical Errors ein.
- Sofern Sie Interrupts bearbeiten wollen während Ihr Programm
- ausgelagert ist, müssen Sie das spawn-Modul modifizieren, sodaß die
- Handler in den residenten Teil übernommen werden.
-
- Offene Dateien bleiben während der do_exec-Funktion geöffnet. Dies
- reduziert die Zahl der möglichen offenen Dateien für das
- Kind-Programm. Die Umgebungsvariable "C_FILE_INFO", die von einigen
- C-Compilern bei Aufruf der Standard-Funktionen für spawn erzeugt
- wird, wird nicht unterstützt. Wenn NO_INHERIT in spawn.asm gesetzt
- ist (Standard), werden alle offenen Dateien außer den ersten fünf
- Standard-Dateien vor dem Kindprozess "versteckt" und damit nicht
- vererbt. Dies erlaubt dem Kindprozess, mehr Dateien zu öffnen, wobei
- allerdings das Systemweite Limit (FILES= in config.sys) hoch genug
- sein muß um alle offenen Dateien zu unterstützen.
-
- Interne Kommandos (CD, DIR usw.) werden nicht automatisch bearbeitet.
- Sie können diese ausführen indem Sie den Kommandointerpreter laden
- (durch Übergabe eines leeren Strings für das auszuführende Programm).
- Zum Beispiel:
-
- (C) retcode = do_exec ("dir", "*.*", USE_ALL, 0xffff, environ);
- if (retcode == RC_NOFILE)
- retcode = do_exec ("", "/c dir *.*", USE_ALL, 0xffff, environ);
-
- (P) retcode := do_exec ('dir', '*.*', USE_ALL, $ffff, true);
- if (retcode = RC_NOFILE)
- retcode := do_exec ('', '/c dir *.*', USE_ALL, $ffff, true);
-
-
-
- HINWEISE
- ========
-
- Die Funktion sollte mit DOS bis herunter zu Version 2.11 kompatibel
- sein. Getestet wurde jedoch nur unter DOS 3.3, DOS 4.0, DOS 5.0,
- DOS 6.0 und DR-DOS 5.0.
-
- Kompatibilität zu Compiler-Versionen wurde nur getestet mit Borland
- C++ 3.1, Microsoft Visual C 1.0, und Turbo Pascal 5.5. Auf andere Compiler
- habe ich leider keinen Zugriff. Turbo Pascal 6.0 scheint nach
- Benutzerberichten keine Probleme mit EXEC zu haben. Eine Benutzung
- mit dem DOS-Extender von Turbo Pascal 7.0 (oder anderen
- DOS-Extendern) ist nicht möglich.
-
- Wird ein Kommando aufgerufen das resident bleibt (TSR), zum Beispiel
- PRINT oder Sidekick, ist eine Rückkehr in das rufende Programm nicht
- möglich. Das Programm wird beendet, belegter Speicher in EMS/XMS wird
- freigegeben, eine Auslagerungsdatei wird gelöscht.
-
- Wenn der Programmspeicher aus mehreren DOS-Speicherblöcken besteht,
- benutzt die Auslagerungsfunktion undokumentierte DOS-Interna.
- Insbesondere werden Speicherkontrollblöcke direkt modifiziert. Dies
- kann theoretisch zu Inkompatibilitäten mit späteren DOS-Versionen,
- oder mit DOS-Clones oder Emulatoren führen. Im praktischen Betrieb
- wurden bisher noch keine Probleme mit irgendwelchen DOS-Versionen,
- einschließlich DOS 6.0 und der DR-DOS Versionen, festgestellt.
-
- Wenn NO_INHERIT in spawn.asm auf TRUE gesetzt ist, werden einige
- undokumentierte Felder im PSP benutzt und modifiziert. Auch dies
- sollte mit allen DOS-Versionen und Clones funktionieren. Sollten Sie
- jedoch Probleme befürchten, können Sie NO_INHERIT auf FALSE setzen
- (nicht jedoch, wenn Sie die Handle-Tabelle erweitern).
-
-
- Änderungsgeschichte
- ===================
-
- Änderungen von Version 3.3 auf 3.3a:
-
- Außer der Adressänderung ist die einzige signifikante Änderung eine
- verbesserte Behandlung der Redirection. Wie unter DOS kann die
- Redirection jetzt auch gemischt mit sonstigen Parametern angegeben
- werden.
-
- In der Pascal-Version wurde die Redirection nicht korrekt behandelt,
- sofern mehr als eine Redirection angegeben war. Ebenso wurden
- Parameter in der COMSPEC-Zeile nicht erkannt. Dies wurde korrigiert.
-
-
- Änderungen von Version 3.2a auf 3.3:
-
- Neu ist die Berücksichtigung des unbenutzten Heap-Bereichs für Turbo
- Pascal. Dieser Bereich wird optional nicht ausgelagert, was in vielen
- Fällen sowohl die Auslagerungsgeschwindigkeit erhöht, als auch den
- Speicherbedarf auf dem Auslagerungsmedium reduziert. Da dies
- Versionsabhängig ist (Turbo Pascal Version 6 hat eine andere
- Heap-Verwaltung als frühere Versionen), ist dieses Feature in der
- vorübersetzten Version nicht eingeschaltet. Bitte setzen Sie PAS_FREE
- in SPAWN.ASM auf TRUE, und setzen sie TPAS_6 je nach Ihrer
- Turbo-Pascal-Version auf TRUE oder FALSE, um es zu nutzen.
-
- Die Pascal "putenv" Funktion war fehlerhaft. Wenn eine Variable
- gesetzt wurde, die bereits im Environment vorhanden war, wurde ein
- doppelter Eintrag erzeugt statt den alten Eintrag zu löschen.
- Fehlermeldung und Korrektur von A. Bailey.
-
- Bei der Bestimmung von Programmname und Pfad wurden Programme, deren
- Basis-Name (ohne Extension) gleich dem Namen einer Subdirectory war,
- unter Umständen nicht gefunden. Die checkpath Funktion wurde
- modifiziert um diesen Fall korrekt zu behandeln. Fehlermeldung von H.
- Lembke.
-
- Bei Auslagerung auf Datei mit NO_INHERIT true und einer erweiterten
- Handle-Tabelle war eine Rückkehr nicht möglich. Dies lag daran, daß
- der Tabellen-Zeiger im PSP wiederhergestellt wurde bevor der
- dazugehörige MCB-Block alloziert und wiederhergestellt war. Der
- PSP-Eintrag wird jetzt erst nach dem Zurückladen gesetzt.
- Fehlermeldung von H. Lembke.
-
- EXEC konnte nicht auslagern wenn eine erweiterte Handle-Tabelle mit
- NO_INHERIT false verwendet wurde. Der MCB der die Handle-Tabelle
- enthält wird jetzt nicht mehr ausgelagert. Dies führt allerdings
- dazu, daß der Speicher fragmentiert wird, sodaß NO_INHERIT stets TRUE
- sein sollte wenn die Handle-Tabelle erweitert werden soll.
-
- Die C do_exec-Funktion verarbeitet jetzt auch NULL-Zeiger auf
- Kommandozeile und Parameterstring korrekt.
-
-
- Änderungen von Version 3.2 auf 3.2a:
-
- Ein Fehler in checkpat.asm, der zu nicht vollständigen Pfadangaben
- führte, wurde behoben.
-
- Ein Fehler in spawn.asm, der dazu führte, daß die Dateiumleitungs-
- Dateien selbst nach Programmende nicht geschlossen wurden, wurde
- behoben.
-
- Änderungen von Version 3.1 auf 3.2:
-
- Neu ist der Aufruf einer benutzerdefinierbaren Funktion (über einen
- Funktions-Pointer bzw. eine Prozedurvariable) aus do_exec vor
- Ausführung des Programmaufrufs. Diese Funktion kann z.B. Meldungen
- ausgeben und zusätzliche Prüfungen durchführen. Die bisher interne
- Struktur mit den Auslagerungs-Parametern wurde zugänglich gemacht
- um der Benutzerfunktion den Zugriff zu erlauben. Für Details siehe
- exec.h bzw. exec.pas, sowie das Beispiel in extest.c/extest.pas.
-
- Ein Fehler in checkpat.asm, der bei Verwendung mit Turbo Pascal
- zu Problemen mit der "exists"-Funktion führte, wurde behoben.
-
- Die Pascal-Version von extest wurde (endlich) auf den gleichen
- Stand wie die C-Version gebracht, ein Beispiel für die Nutzung
- der Benutzerfunktion wurde in beide Versionen eingefügt.
-
- In exec.c wurde die Definition der internen Routinen auf "static"
- geändert, die Initialisierung einiger Variablen in do_exec wurde
- korrigiert.
-
-
- Änderungen von Version 3.0a auf 3.1:
-
- Neu sind vor allem die automatische Behandlung von .BAT-Dateien und
- die Unterstützung der I/O-Dateiumleitung. Die Suchreihenfolge für
- Kommandos entspricht jetzt exakt der DOS-Reihenfolge, bis auf die
- Bearbeitung interner Kommandos (es gibt keinen sicheren Weg für die
- Erkennung, ob ein Kommando intern oder extern ist). Dateiumleitung
- ist optional. Das Interface zu do_exec hat sich nicht geändert,
- do_spawn benötigt drei neue Parameter wenn Redirection eingeschaltet
- ist.
-
- Eine Routine (checkpat.asm) die einen Pfad prüft und auflöst sowie in
- seine Bestandteile aufteilt wurde hinzugefügt. Diese Routine führt
- einige Prüfungen des Pfades und des Dateinamens durch und behandelt
- Critical Errors (ungültiges Laufwerk, Laufwerk nicht bereit) ohne
- Benutzereingriff. Die Routine wird zur Bearbeitung des
- Programm-Dateinamens, des Kommandoprozessor-Dateinamens und des
- temporären Dateipfades verwendet. Die Routine ist unabhängig von den
- anderen EXEC/SPAWN-Funktionen, sie kann daher auch in anderen
- Applikationen nützlich sein.
-
- Einige neue Fehlercodes erlauben eine bessere Analyse von
- Fehlerursachen.
-
- Der Pfad der temporären Datei ist jetzt stets ein vollständiger Pfad.
- Ein Wechsel von Laufwerk oder Pfad während der Auslagerung kann daher
- jetzt nicht mehr zum Verlust der Auslagerungsdatei führen.
-
- Die Prüfung auf Existenz einer Datei wurde in checkpat.asm verlagert,
- und von der 'find first'-Funktion auf 'get file attributes'
- umgestellt. Dies scheint geringfügig schneller und vermeidet
- Compiler-Abhängigkeiten.
-
- Das Programm GETLANG wurde korrigiert, die Hilfs-Meldungen werden
- jetzt auf stderr ausgegeben.
-
-
- Änderungen von Version 3.0 auf 3.0a:
-
- Ein kleiner Fehler in EXEC.C wurde korrigiert: ein '<' fehlte in
- einem deutschen Kommentar, sodaß bei GETLANG E ein großer Teil der
- Datei verschluckt wurde.
-
- Ein Problem (Fehler? Feature?) bei der Turbo C/Borland C "stat"
- Funktion, die für Directories stets "read-only" liefern, verhinderte
- die Benutzung der TEMP Directory beim Auslagern. Die Schreib-
- Erlaubnis wird jetzt nicht mehr geprüft.
-
- Die Präallozierung der Auslagerungsdatei, die mit Version 3.0
- eingeführt wurde um sicherzustellen daß das Laufwerk den kompletten
- Speicher fassen kann, führte zu starken Verzögerungen wenn die
- Auslagerungsdatei auf einem Novell-Netzwerk Laufwerk lag. Um dieses
- Problem zu umgehen wurden zwei neue Flags für den "method" Parameter
- eingeführt:
-
- NO_PREALLOC - Nie Präallozieren
- CHECK_NET - Nicht Präallozieren wenn Datei auf Netzwerk
-
- Wenn die Datei nicht präalloziert wird, wird das Laufwerk nicht auf
- ausreichenden Platz geprüft. Die Alternative, der "get disk free
- space" Aufruf, dauert im allgemeinen noch wesentlich länger als ein
- Präallozieren. Dies ist allerdings kein großes Problem, die
- Auslagerung liefert lediglich den Fehlercode 0x502 wenn der
- Speicherplatz nicht ausreicht.
-
-
- Änderungen für Version 3.0:
-
- Dies ist die erste Version mit Deutscher Dokumentation. Falls Sie mit
- früheren Versionen gearbeitet haben, können Sie die Änderungen in der
- Englischen Beschreibung nachlesen - denn dann können Sie doch
- Englisch, oder? :)
-