Programmieren unter MS-Windows

Kapitel 18: Spezielle Entwicklerthemen für Windows NT

Letzte Änderung: 2.11.97 von B. Tritsch

Überblick

Zurück zum Index "PC- und MS-Windows-Support"

Zurück zum Inhalt


Warum Windows NT?

Windows NT unterscheidet sich sowohl für den Anwender als auch für den Entwickler drastisch von Windows for Workgroups oder Windows 95 - obwohl dies oftmals nicht auf den ersten Blick ersichtlich ist. Windows NT benutzt zwar wie Windows 95 preemptive Multitasking, lange Dateinamen, Threads, virtuellen Speicher, strukturiertes Exception Handling und eine Reihe anderer "Features", diese werden jedoch von den beiden Betriebssystemen nicht unbedingt in genau der gleichen Form zur Verfügung gestellt.

Während bei Windows 95 noch aus Gründen der Abwärtskompatibilität an vielen Stellen 16-Bit-Code verwendet wird, ist Windows NT ein reines 32-Bit-System. Dies zeigt sich insbesondere beim Multitasking, das bei Windows 95 mit vielen Kompromissen "preemptive" gemacht wurde, während die Implementation von Windows NT der "reinen" Lehre folgt. Weiterhin ist der Kernel von Windows NT auf andere CPU-Plattformen portierbar und eine Reihe von Subsystemen bauen auf diesen Kernel auf. Das Konzept der Subsysteme (auch die Laufzeitumgebung von 16-Bit-Windows-Programmen unter NT ist ein Subsystem) macht das Gesamtsystem durch strikt getrennte Speicherbereiche robuster. Dagegen ist Windows NT durch diese konzeptionellen Gegebenheiten oftmals langsamer als Windows 95.

Weitere Vorzüge von Windows NT sind dessen Integration von OpenGL in den Systemkern und die Unterstützung von UNICODE. Dazu kommt das leistungsfähigere Dateisystem NTFS mit seinen Sicherheitsoptionen sowie die Möglichkeit Hintergrundprozesse (Services, Daemons) ablaufen zu lassen, ohne daß sich jemand am System angemeldet hat. Nicht zuletzt sind die breite Verwendung von Client/Server-Mechanismen und die Unterstützung verschiedener Netzwerkprotokolle Argumente für die Verwendung von Windows NT - zumindest als Entwicklungsplattform.

Die folgenden Kapitel beschäftigen sich mit speziellen Windows NT-Entwicklerthemen. Diese sind die Verwendung von Threads, das Erzeugen von 3D-Graphiken mit OpenGL, der Zugriff auf die Windows NT Systemdatenbank - die Registry und die Programmierung mit Remote Procedure Calls.

Prozeßprioritäten unter Windows NT

Der start-Befehl in der DOS-Shell ermöglicht die Modifikation der Prioritätsstufe einer Applikation oder eines Prozesses. Die Syntax für den start-Befehl ist die folgende:

START: Startet ein eigenes Fenster, um das Programm oder den Befehl auszuführen.

START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME] [/WAIT] [/B] [Befehl/Programm]
      [Parameter]

  "Titel"   Der Titel des neuen Fensters.
  Pfad      Startverzeichnis
  I         Die neue Umgebung soll die dem CMD.EXE beim Aufruf übergebene
            sein und nicht die aktuelle Umgebung.
  MIN       Startet das Fenster minimiert.
  MAX       Startet das Fenster maximiert.
  SEPARATE  Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
  SHARED    Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
  LOW       Startet Anwendung in IDLE-Prioritätsklasse.
  NORMAL    Startet Anwendung in der NORMAL-Prioritätsklasse.
  HIGH      Startet Anwendung in der HIGH-Prioritätsklasse.
  REALTIME  Startet Anwendung in der REALTIME-Prioritätsklasse
  WAIT      Startet die Anwendung und wartet auf das Ende
  B         Startet Anwendung ohne ein neues Fenster zu öffnen. Die Anwendung
            ignoriert STRG+C. Wenn die Anwendung nicht selbständig STRG+C
            überprüft, ist STRG+UNTBR die einzige Möglichkeit, um die
            Anwendung abzubrechen.
  Befehl/Programm
            Wenn ein interner Befehl oder eine Batch-Datei verwendet wird,
            wird das neue CMD-Fenster mit Parameter /K gestartet.
            Das bedeutet, daß das Fenster erhalten bleibt, nachdem der
            Befehl abgearbeitet wurde.
            Wenn dies nicht der Fall ist, wird das Programm entweder
            als Anwendung in einem Fenster oder als Konsolenanwendung
            gestartet.
  Parameter Parameter, die an den Befehl oder das Programm übergeben werden
            sollen.


Wenn die Befehlserweiterungen aktiviert sind, wird der Aufruf von externen
Befehlen durch die Befehlszeile oder den START-Befehl folgendermaáen verändert:

Nichtausführbare Dateien können durch ihre Zuordnung zu einem Dateityp
    einfach durch Eingabe des Namens als Befehl aufgerufen werden (z.B. würde
    WORD.DOC die Anwendung starten, die der .DOC-Erweiterung zugeordnet ist).
    Weitere Informationen, wie Sie diese Zuordnungen innerhalb eines Befehls-
    skripts ändern, finden Sie beim ASSOC- bzw. FTYPE-Befehl.

Wird eine grafische 32-Bit-Anwendung aufgerufen, wartet CMD.EXE nicht auf
    das Beenden dieser Anwendung, sondern kehrt sofort zur Eingabeauforderung
    zurück. Das gilt NICHT, wenn diese Anwendung aus einem Befehlsskript
    heraus aufgerufen wird.

Wenn eine Befehlszeile ausgeführt wird, die mit den Zeichen CMD ohne
    Erweiterung oder Pfadname beginnt, wird CMD durch den Wert der
    COMSPEC-Variablen ersetzt. Damit wird es vermieden, daá man aus Versehen
    eine andere, ggf. zufällige Version der CMD.EXE verwendet.

Wenn eine Befehlszeile ausgeführt wird, die mit Zeichen beginnt, die keine
    Dateierweiterung enthalten, dann verwendet CMD.EXE den Wert der Umgebungs-
    variablen PATHEXT, um zu bestimmen, welche Erweiterungen in welcher
    Reihenfolge verwendet werden. Der Standardwert für die PATHEXT-Variable
    ist:

        .COM;.EXE;.BAT;.CMD

    Dabei ist die Syntax dieselbe wie in der PATH-Variablen, das heißt, die 
    einzelnen Einträge werden durch Semikolon getrennt.

Wenn mit dem START-Befehl ein Programm bzw. Befehl aufgerufen wird und keine
entsprechende Dateierweiterung gefunden wird, aber der Name ohne Erweiterung
einem Verzeichnisnamen entspricht, wird der Explorer mit diesem Pfad
aufgerufen. Von der Befehlszeile ausgeführt entspricht das einem CD /D mit
diesem Pfad.

Zum nächsten Kapitel