VCALL0.386: Hilfstreiber zur Ausfhrung von privilegiertem 16-bit-Code
- Ermglicht das Laufenlassen von vorhandenen Code-Abschnitten im
privilegierten Kernel-Modus unter Windows
- Untersttzt Real-Mode-DOS-Anwendungen (genauer: V86) ebenso wie DPMI
und 16bit-Windows-Programme
- Um mindestens 200% schnellere Portzugriffe mglich, auf geschtzte Ports
(von Windows-VxD's gesperrte oder emulierte) mehr als 1000% Geschwindig-
keitszunahme! Auch CLI/STI ist maximal schnell (3 statt viele 1000 Takte)
- Leider ist Windows erforderlich; eine Lsung, die unter EMM386 "kriecht",
wre zweifelsohne ebenso interessant
- Extra-Untersttzung von Windows 95: Dynamisches Gertetreiber-Laden
und Entladen erspart Modifikation an der SYSTEM.INI und sichert
sofortige Einsatzbereitschaft seiner Programme an fremden Rechnern
(ohne zu booten)
- NEU: Aufruf einer periodischen Routine im Ring0 bis ca. 50 kHz (!),
um die lstige Timer-Programmierung kmmert sich das VxD
(die erreichbare Frequenz hngt stark vom Rechner und [mglicherweise]
der Anzahl der DOS-Boxen ab. Ein 486/66 schaffte nur 10 kHz absturzfrei.
- geplant: API fr Win32 (Kopfzerbrechen wegen Kontextumschaltung)
- geplant: VxD-API fr LPTDAC2 und andere VxDs
- geplant: dito fr Windows NT
Dateiliste:
VCALL0.386 Der Virtuelle Gertetreiber fr Windows
VCALL0.ASM Quelldatei fr Turbo Assembler 3.2
VCALL0.DEF Modul-Definitions-Datei fr den Linker LINK386.EXE
(Weitere Quellen und bersetzungstools auf Anfrage)
VCALL0.TXT Diese Dokumentation
VCALL0.TPU Pascal-Unit, Version 7, Zielplattform DOS
VCALL0.PAS Unit-Quelldatei (z.B. zur Generierung anderer Units)
VCALL0T.PAS Einfaches Beispiel zur Benutzung von VCALL0.TPU
VCALL0.C Quelldatei fr Borland C (ungetestet, OHNE Windows-95-Zeug)
VCALL0.H Header-Datei fr Borland-C-Programme
VCALL0TC.C Beispiel in C
Erforderlich:
- 386SX oder hher
- MS-Windows Enhanced Mode oder Windows95
- Dein Programm, um dort eine kleine nderung vorzunehmen
Garantien:
- Ich bernehme keine Garantie, weder fr Hard- noch Softwareschden
Installation (Nur Windows 3.1):
- Das VxD VCALL0.386 ins Windows-Verzeichnis kopieren (oder sonstwohin)
- in die [386enh]-Sektion der SYSTEM.INI folgende Zeile eintragen:
device=VCALL0.386 ;Pfad mit angeben, falls "sonstwo"
- Windows neustarten, um nderung wirksam werden zu lassen
Gebrauch:
- Die Pascal-Unit, die fr alle 3 Borland-Pascal-Plattformen bersetzbar
ist, wird in das Zielprogramm eingebunden
- Die zeitkritische Routine, die keine verschachtelte Prozedur sein darf
und FAR kodiert sein mu, wird nicht direkt, sondern mittels der Funktion
Call0() aufgerufen. Diese Hilfsfunktion bekommt den Prozedurzeiger
bergeben. Ist VCALL0 gerade nicht prsent: Macht nichts. Call0() ruft
in diesem Falle die Zielprozedur direkt, also im nicht privilegierten
Modus
- Wichtig: FAR-Calls sind in dieser Prozedur nicht erlaubt. Range- und
Stack-Checking ist auszuschalten, da diese Optionen FAR-Calls einstreuen
- Nhere Hinweise befinden sich in den deutsch kommentierten Quelltexten
Probleme:
- Windows strzt sofort ab, wenn obige Prmisse (FAR-Call) verletzt wird,
und man landet unverzglich auf dem DOS-Prompt (Windows 3.1).
- Der kritische Code ist undebugbar, der Versuch, ein Breakpoint in den
Code zu setzen, fhrt ebenfalls zum fatalen Windows-Ausstieg. Ausnahme:
Man benutzt SoftICE fr Windows zum Debuggen (vielleicht auch WDEB, aber
wer das benutzt, ist selbst schuld:-)
Autor
haftmann#software
Henrik Haftmann, Reichenhainer Str. 51 Zimmer 105
email: henrik.haftmann@e-technik.tu-chemnitz.de
Neueste Version unter
http://www.tu-chemnitz.de/~heha/hs_freeware/vcall0.zip
Gendertes seit letzter Version:
Hinzugefgte Untersttzung des dynamischen Gerteladens unter Windows95
Periodischer Aufruf (bis 20 kHz)
Vorgefundene Kodierung: UTF-8 | 0
|