Autor Thema: eigene api erstellen  (Gelesen 23289 mal)

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« am: 30. May 2005, 22:06 »
Wie kann ich eigentlich eine API für Betriebssysteme erstellen, die bereits existieren (denke da vorläufig an Win). SDL, Allegro und weitere API machen das ja auch. Ist das schwer?

mfg, jeb

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #1 am: 30. May 2005, 22:23 »
Eine Lib halt. Mach ne ASM-File mit den Funktionsnamen, kompilier sie als Lib (geht auch mit C) und mach Headers, die darauf verweisen, fertig.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #2 am: 31. May 2005, 15:58 »
Und wie mach ich, das ich auch Fenster und so öffnen kann? Muss ich da auf die WinAPI zurückgreifen? Wie macht man eine Lib?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 31. May 2005, 16:47 »
Du musst deine Lib (Win: DLL) mit Funktionen ausstatten, was die tun, ist deine Sache. Jedoch wirst du - bei Closed-Source-Systemen - nicht um die schon vorhandene Api herumkommen.
Ein Fenster öffnen ist z.B. eine Sache der MFC bzw. WinApi (die MFC greift auf diese zurueck).

Wenn du fuer ein eigenes OS die grundlegende Api codest, kannst bzw. musst du die Kernelfunktionen und die Treiber (bzw. die API's von Kernel und Treiber) direkt ansprechen.

Svenska

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #4 am: 31. May 2005, 17:06 »
und wie greife ich auf diese funktionen zu bzw. kennst du ein gutes tut dazu?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 31. May 2005, 23:07 »
An die WinAPI kommst du mit C-Funktionen ran, da kann dir wer mit C-Kenntnissen helfen. Ich selbst hab davon keine Ahnung, da ich mich damit nicht wirklich beschäftigt habe.
Ich denke, dass jemand anders hier mehr Ahnung davon haben muesste bzw. Google duerfte auch das eine oder andere anbieten.

Soweit ich weiss, benötigt eine DLL mindestens DLLMain(), um von Windows benutzt werden zu können. Weiter weiss ich aber nichts, tut mir Leid.

Svenska

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #6 am: 01. June 2005, 15:14 »
hab ein tut gefnunden: http://mitglied.lycos.de/b534463/kap19.htm.

Also kann ich bei Windows davon ausgehen das die eigene API zwangsweise langsamer ist als die WinAPI?

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 01. June 2005, 15:40 »
Zitat von: jeb
Also kann ich bei Windows davon ausgehen das die eigene API zwangsweise langsamer ist als die WinAPI?


Nicht zwingend.
Die WinAPI selber besteht auch nur aus einigen *.dll's, diese verwenden dann interrupts bzw. sysenter usw., um mit dem Kern zu kommunizieren, bzw. um diesem Befehle zu geben. Das könntest du also auch selber machen, wenn du die WinAPI umgehen willst.
Außerdem könntest du mit einer eigenen Lib auch ein schöneres Framework zu verfügung stellen, das schon mehr Aufgaben erledigt, als die WinAPI.
Als sinnvoll erachte ich es allerdings nicht, es gibt die WinAPI, nen Aufsatz dafür, die MFC's wenn man sowas macht, dann wahrscheinlich zu Lernzwecken. Außerdem wird .NET von Microsoft gepushed, WinAPI wird vielleicht schon in Longhorn nur noch emuliert (mit drunterliegendem dot net)

MfG
DDR-RAM

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 02. June 2005, 11:45 »
Nope, soweit ich informiert bin, hat Microsoft auch den Plan aufgegeben, Longhorn komplett auf .NET aufzubauen.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #9 am: 02. June 2005, 11:46 »
Die haben doch nicht etwa eingesehn, dass das zu langsam wäre und dass nicht jeder einen 17GHZ Prozessor hat? :lol:  :lol:  :lol:
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 02. June 2005, 11:57 »
Ach, wer weiß, wie das bis zum Release-Datum gewesen wäre? :D Nya, was mich wundert...was genau kommt jetzt neues? WinFS und so ist ja auch schon draußen. Außer der neuen GUI?

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #11 am: 02. June 2005, 12:27 »
Gibbet WinFS auch für XP?
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 02. June 2005, 12:48 »
Zitat von: Roshl
Gibbet WinFS auch für XP?


Noch gibt es kein WinFS, :D
aber soweit ich weiß, wollen se des so machen, das man das für win xp nachrüsten kann.

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #13 am: 02. June 2005, 15:13 »
Wozu denken die sich eigendlich immer neue FSs aus? NTFS geht für Dateien bis zu 16 Exabyte, soweit ich weiß, warum halten die dann nicht daran fest? Machen die's absichtlich inkompatibel? Sollten sich lieber mal um ein gutes System kümmern. ;)
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #14 am: 02. June 2005, 16:10 »
Ich glaub die neue API heisst WinFX.
@.NET: Kann ich mit MSVC++ 6 für .NET verwenden?
@WinAPI: Mein Programm greift auf meine LibDLL zu, welche wiederum auf die WinAPIDLL zugreift. Das ist also ein Umweg.

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #15 am: 02. June 2005, 16:35 »
.NET verwendet ja eine VM! Dann ist die Lib ja noch lahmer! Oder täusch ich mich da irgendwie?
@DDR-RAM: Wie kann ich denn die WinAPI umgehen? Soll ich die DLL decompilieren und mir den Code anschauen?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 02. June 2005, 16:51 »
@jeb: ich glaub du vermischt jetzt WinFX und WinFS. WinFX ist wie du gesagt hast eine API und WinFS ist ein Dateisystem, das auf NTFS und SQL aufbaut. Die haben eigentlich nicht besonders viel miteinander zu tun.

Die Geschwindigkeit von .NET ist vergleichbar von der mit Java unter einer Sun-VM und ich empfinde die beiden jetzt nicht als soooo lahm. Durch optimierte JIT-Compiler haben beide genug Geschwindigkeit für umfangreiche Anwendungen. Eher würde ich mir um den Speicherverbrauch sorgen machen. So ein etwas umfangreicheres Programm beansprucht schon mal

.NET-Compiler gibt es erst ab Visual Studio .NET. Also geht MSVC++ 6 nicht.

Die WinAPI kannst du nur umgehen indem du eigene Treiber schreibst. Oder dich an die NT Native API wendest. Die ist eine Ebene Tiefer als die WinAPI, es gibt es wie der Name es andeutet nur unter NT und Nachfolgern, ist nicht öffentlich dokumentiert und nur unmerklich näher an der Hardware dran als die WinAPI. Also wahrscheinlich nicht das, was du willst ...
Dieser Text wird unter jedem Beitrag angezeigt.

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #17 am: 02. June 2005, 16:52 »
About WinFS: Heißt, die machen jetzt ein FS basierend auf einer SQL-Tabelle, die als Datei in NTFS gespeichert ist? Die haben sie doch nimmer alle! Da können sie auch das alte lassen.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 02. June 2005, 16:56 »
nein die nutzen sicherlich die zugriffrechte von NTFS aus und tun das nicht in eine einzige datei. das wäre sonst äußerst dämlich und außerdem nicht an NTFS gebunden.

schau dir einfach mal ein paar berichte über WinFS an. -> google hat ein paar interessante zu bieten.
Dieser Text wird unter jedem Beitrag angezeigt.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #19 am: 02. June 2005, 17:19 »
NTFS kann ja zu einer Datei beliebiege Attribute speichern, das macht sowas gleich einfacher ...
*post*

 

Einloggen