Beiträge von Wakely

    Und wie macht die hal.dll das?:D

    Es gibt einige Quelloffene Implementierungen von Hardwareabstraktionsschichten, wie systemd. Windows ist aber nicht Quelloffen, aber das Quelloffene Betriebssystem React-OS kommt sehr nah an die original Implementierung der hal.dll dran.

    Windows laeuft ja im protected mode , eigentlich koennte dann auch die hal.dll doch nicht viel machen
    Dann kann ich das ja eigentlich knicken mit den BIOS Interrupts und der hardwarenahen Programmierung unter Windows ,

    BIOS Funktionen werden nur beim Boot Vorgang verwendet. Danach soll das Betriebssystem im Nativen (32bit/64bit) Modus die Funktionen bereitstellen, die das BIOS bereitstellt. Das bedeutet nicht, dass man BIOS Interrupts danach nicht mehr verwenden kann. Man kann von Protected in Real-Mode wechseln: http://wiki.osdev.org/Real_Mod…otected_Mode_to_Real_Mode
    Ausserdem gibt es noch den Virtuellen 8086 Modus: http://de.wikipedia.org/wiki/Virtual_8086_Mode
    Die Existenz einer Hardwareabstraktionsschicht bedeutet nicht, dass die Systemtreiber nur diese nutzen und keine Erlaubnis haben auf die niederen Hardwareschichten zuzugreifen. Ein Treiber kann unter Windows im Ring0 laufen und somit die selbe Handlungsfreiheit haben, wie das Betriebssystem, oder die hal.dll.


    da Win ja schon meckert wenn ein Treiber nicht signiert ist <.<
    Gibts da andere Moeglichkeiten ?

    Google?
    http://www.deskmodder.de/wiki/…_installieren_-_Windows_8
    http://msdn.microsoft.com/en-u…re/ff544865(v=vs.85).aspx
    http://msdn.microsoft.com/en-u…re/ff552275(v=vs.85).aspx
    http://social.msdn.microsoft.c…ning-discussion?forum=wdk

    Wie meinst du das, mit "relativ zur PHP datei"? ^^

    Relative Dateipfade. Beispiel: '../../bild.png' ist ein relativer Dateipfad. Ohne Ausgangsposition ist der relative Pfad bedeutungslos. In PHP wird die Ausgangsposition auf den Dateipfad der PHP Datei gesetzt. Bei dem Script C:/Scripts/PHP/index.php zeigt die Ausgangsposition auf den 'C:/Scripts/PHP/' Ordner. Dem zufolge ist '../../bild.png' ausgehend von dem Script unter 'C:/bild.png' zu finden, da zwei mal in der Ordnerstruktur mit '../' hoch gegangen wurde. Liegt das Script nun in 'C:/Scripts/PHP/Unterordner', so zeigt der Beispiel Pfad auf 'C:/Scripts/bild.png'.


    PHP
    socket_connect($socket, $host , $port);
    	$buf = socket_read($socket, 5000, PHP_NORMAL_READ);

    Sicher, dass der Server der dort ist die Daten sofort nach Verbindungsaufbau sendet und nicht erst auf eine Anfrage vom Client wartet? Probier das mal mit TELNET aus. Wenn nicht direkt nach Verbindungsaufbau die Nachricht erscheint muss erst eine Anfrage vom Client gesendet werden. Telnet HTTP Beispiel (Unter Windows Versionen nach Vista, muss man Telnet meist erst in den Systemeinstellungen aktivieren und um die eigenen Eingaben zu sehen, die dem Server gesendet werden sobald man verbunden ist, muss erst localecho aktiviert werden. Aber da hier vermutet wird, dass der Client keine Daten senden muss, sondern nur verbinden muss, braucht man auch nach dem Verbindungsaufbau nichts einzugeben.)
    Vermutlich wird der Server aber auf eine Anfrage warten und weil beide auf eine Antwort/Anfrage des anderen warten sendet auch keiner eine Antwort.


    Wie greifen denn die Systemtreiber ohne BIOS Interrupts z.b. auf die Festplatte zu , und geben dieser Befehle? In welcher Sprache oder Sprachen sind die Systemtrieber geschrieben , und wie erhalten diese Zugriff wenn alles im protected mode laeuft?

    Systemtreiber sind meistens in C, oder C++, geschrieben. Zugriff erhalten diese meist durch eine Hardwareabstraktionsschicht, greifen also meist selbst nicht auf die Hardware zu, sondern auf die vom Betriebssystem bereitgestellten Funktionen. Unter Windows ist diese hardwarenahe Schicht die hal.dll (hardware abstraction layer) und unter Linux/Unix basierten Betriebssystemen gibt es eine Vielfalt an verwendeten Systemen. Systemd, welches mit udev verschmolzen ist, ist aber eines der unter Linux Systemen beliebtesten.
    Assembler code sollte in Projekten, die auch auf anderen Systemen nutzbar sein sollen, vermeidet werden. Treiber scheinen sehr hardware nah zu sein, aber, wenn man den Treiber zu sehr auf ein System zu schneidert, muss man nachher einiges um schreiben. Mit einer Hardwareabstraktionsschicht kann man zum Beispiel ein und denselben Grafikkarten Treiber auf Systemen mit x86 CPU, oder PowerPC CPU nutzen, ohne erst noch ein Jahr damit zu verbringen den Treiber auf die andere CPU an zu passen.

    xGreekz7x: Habe nicht gesehen das du dies mal bereitgestellt hast.

    Wenn Du seinen Post nicht gesehen hast - woher ist dann der Code?
    Die Zeilen zur Bild Erstellung, Beispiel:

    Code
    $image_height = $line_height*sizeof( $admins ) + $line_height_margin*sizeof( $admins );
    $img = ImageCreate( ImageSX( $line_background ), $image_height );
    $transparent = ImageColorAllocate( $img, 245, 245, 245 );
    ImageColorTransparent( $img, $transparent );
    $weiß = ImageColorAllocate( $img, 255, 255, 255);
    
    
    foreach( $admins as $admin ) {

    sind schliesslich identisch. Das wird kaum ein Zufall sein. xGreekz7x sollte in dem Post als Mitersteller genannt werden, da offensichtlich sein Code einfach kopiert und ein wenig erweitert wurde. Nur Dich und m4a_x als Ersteller zu nennen ist einfach falsch.


    Funktioniert bei mir irgendwie nicht?
    Was muss ich mit den .htaccess Code machen?

    "Funktioniert nicht" ist die beste Fehlerbeschreibung, die es gibt. Entferne die Zeile mit dem header() und schau das Ergebnis beim Aufruf der Seite an. Wenn ein Fehler auftritt, sollte dort eine etwas bessere Fehlerbeschreibung als "Funktioniert nicht" erscheinen.
    Zum .htaccess Code: In eine .htaccess Datei schreiben.

    Wozu C++, wenn es sich um eine einfache C Funktion handelt und man keine Klassen braucht?
    Eine exportierte C++ Funktion bekommt einen komplizierten Namen. (Aus der statischen Methode "Kreis(double)" in dem Namespace "TEST" in der Klasse "API" wird "?Kreis@API@TEST@@SANN@Z". Google nach "c++ name mangling", oder "c++ name decoration", sofern das Zustandekommens des Namens von Interesse ist, oder unbedingt C++ Klassen verwendet werden sollen.)


    Verwende einfach extern "C", oder eine export .def Datei und statt statischen Funktionen in Klassen einfache Funktionen, wie man sie auch in C findet.
    In diesem Beispiel bringen Klassen sowieso keinen Vorteil.
    Beispiel main.h:

    Code
    extern "C"
    {
    	namespace TEST {
    		__declspec(dllexport) double API_Kreis(double r); // = __declspec(dllexport) double __cdecl API_Kreis(double r);
    		__declspec(dllexport) int API_Test();
    	}
    }


    Die Quelltext Datei muss ebenfalls entsprechend angepasst werden. (API:: mit API_ ersetzen.)
    Mit Autohotkey kenne ich mich nicht aus, vielleicht gibt es auch eine einfache Einbindung von C++ und dem typischen C++ Klassen-System, denn ohne eine Einbindung in die AHK-Sprache ist der Umgang mit C++ DLLs und Klassen um einiges komplizierter, als es sein muss und exportierte C-Funktionen eine sinnvolle Alternative. Innerhalb der DLL kann man intern immer noch Klassen verwenden.


    Exportierte C Funktionen sollten als __cdecl implementiert werden, um keine namens Dekoration zu erhalten. Da __cdecl, aber meistens die Standard Einstellung ist gehe ich darauf nicht weiter ein.

    Das ist einfach nur ein schlechter Code von einem Mute System + Login/Register der nicht einmal richtig funktioniert

    Stimmt.

    Code
    if(GetPVarInt(i,"Mute")>0)
                    {
                            if(GetPVarInt(i,"Mute") == 0) return SendClientMessage(i,COLOR_GREEN,"Du wurdest Entmutet!");
                            SetPVarInt(i, "Mute",0);
                            return 1;
                    }


    Wenn Mute > 0 und Mute == 0. Wie oft wird das wohl passieren? Ausserdem kann man mit diesem Script niemanden mehr als 1 Minute lang stumm schalten, da "Mute" nicht verkleinert wird, sondern direkt immer auf 0 gesetzt wird, ausser, wenn man mehr als eine Person stumm schaltet. Da die Schleife/Funktion mit return verlassen wird, kann man den Spieler mit ID 2 zwei Minuten lang stumm schalten, wenn man vorher den Spieler mit ID 1 stumm schaltet. Den Rest des Scripts habe ich mir nicht angesehen, da sich das aus meiner Sicht nicht lohnt.


    Bitte lernt doch erst die Sprache und testet euer Werk bevor ihr etwas in dem Showroom vorstellt.