Hallo, ich arbeite mich gerade in den Aufbau und die Funktion eines Betriebssystems ein und bin nun bei einer Frage stecken geblieben: Der Kernel von z.B. Windows stellt ja viele Funktionen zur verfügung. Sind diese Funktionen die in den API des Betriebssystems vorhandenen Funktionen? Oder sind das verschiedene Interfaces? Würde mich über Hilfe freuen! Gruß Tobias
Windows bietet verschiedene APIs. Die für normale Usermode-Programme übliche Win32-API (die in einigen Fällen Aufrufe mehr oder weniger direkt an den Kernel "durchreicht") und unter anderem auch die Kernel-API, die für Programme zur Verfügung steht, die im Kernelmode laufen. Das sind in der Regel Devicetreiber, die wiederum nicht auf die Win32-API zugreifen können. Der Aufruf von Kernel-APIs durch Usermode-Programme ist nicht vorgesehen. Literaturhinweis: "Inside Windows NT" von Helen Custer Link: www.sysinternals.com mit vielen interessanten Aufsätzen unter anderem von Mark Russinovich Noch'n Link: www.osr.com - da gibt es den "OSR Insider", eine sehr anspruchsvolle Publikation, die sich mit den Aspekten der Devicetreiberprogrammierung beschäftigt, aber auch auf den generellen Aufbau von Windows NT eingeht. Achja: Windows 2000 und XP sind Windows NT und haben mit Windows 95 und seinen Aufgüssen 98 und Me nichts gemein.
Danke für die schnelle Antowrt! Dann ist die Win32-API also ein Interface, das wiederum Funktionen aus dem Kernel aufruft, die das Kernel-API bilden. Wenn ich nun ein Programm mit z.B. C oder ähnlichem schreibe, dann greift dieses Programm nie direkt auf den Kernel zu, sondern über das Win32 Interface? Ich hoffe ich habs richtig verstanden! Gruß Tobias
Rufus:
>Windows 2000 und XP sind Windows NT und haben mit Windows 95 und
seinen Aufgüssen 98 und Me nichts gemein.
Das betrifft doch sicher nur die Innereien der BS. Ein API-Aufruf mit
einer bestimmten Funktion in W95, wird in XP die gleiche Funktion
ausführen, oder liege ich falsch?
Marillion
Ganz oberflächlich gesehen führen die gleichen Win32-API-Funktionen auf beiden Windows-Varianten dasselbe aus. Im Detail aber eben gar nicht, da sich große Teile der Implementierung massiv unterscheiden. Windows 95 & Konsorten unterstützt nur einen Bruchteil der Funktionen von NT, und das teilweise auch nur mit erheblichen Einschränkungen, die vielen Programmierern schon so oder so die Finger gebrochen haben. Du musst Dir nur mal die Kommentare zu etlichen API-Funktionen ansehen; MS beschreibt da (mittlerweile) ganz gut die jeweiligen Einschränkungen. Beispiele: - nur sehr unvollständige Unicode-Implementierung in Windows 95 etc. Auszug aus der Dokumentation von CreateFile: lpFileName [in] Pointer to a null-terminated string that specifies the name of the object to create or open. Windows NT/2000/XP: In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to nearly 32,000 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. Windows 95/98/Me: This string must not exceed MAX_PATH characters. Das bedeutet also, daß a) CreateFile unter Windows95 keine Unicode-Dateinamen kennt und b) entsprechend keine sehr langen Pfade verwendet werden können (MAX_PATH ist 255). - Beschränkung vieler API-Parameter auf 16-Bit-Int-Werte (Scrollbars, Länge des Textes, der von Edit-Controls verarbeitet werden kann) Auszug aus der Dokumentation von EM_LIMITTEXT: Edit controls on Windows 95/98/Me: For single-line edit controls, the text limit is either 0x7FFE bytes or the value of the wParam parameter, whichever is smaller. For multiline edit controls, this value is either 0xFFFF bytes or the value of the wParam parameter, whichever is smaller. Dazu kommt, daß gerade im Bereich der Benutzerkonten, Berechtigungsverwaltung etc. Windows 95 etc. sehr viele Funktionen gar nicht aufweist; so gibt es keine Dienste und auch keine Impersonation. Letzteres ist der Grund für viele ärgerliche Probleme, wenn Windows 95 etc. in einem Netzwerk verwendet werden sollen.
Wobei ich gut 32000 Zeichen in einem einzeiligen Eingabefeld nicht wirklich für eine Beschränkung halte. Da ist das 64k Problem bei mehrzeiligen Editfeldern schon deutlich unangenehmer. Leider begegnet einem diese 64k-Grenze bisweilen auch heute noch an anderen Stellen, und nicht nur unter Windows 95/98/ME. Dabei sollte man meinen, das im Zeitalter des Übergangs von 32 nach 64 Bit derartige Dinge der Vergangenheit angehören. Ich habe erst kürzlich seltsame Dinge bei VBA in Word erlebt, weil ein Modul (von einem Dritthersteller) grad knapp unter der ominösen 64k-Grenze lag und ich dieses erweitern sollte... Gruß Ingo
Leider scheint die Limitierung auch bei mehrzeiligen Eingabefeldern zu existieren. Dort kommt es allerdings auf die Version (rich edit 1/2, plain/rich usw..) an, die man benutzt. Ich weiss leider nicht, welche Versionen welche Win-Version unterstützt
Ok, wieder was dazugelernt. wx differenziert da nicht, deshalb meine falsche Vermutung
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.