pc neu starten



  • Noe. int 9 ist der KB handler. Wenn du den aufrufst passiert absolut gar nyx. 😉
    Neu starten sollte selbst unter Windows mit einem jump nach FFFF:0000 (real mode) funktionieren... Windows wird dabei aber nicht heruntergefahren...



  • @Nubuo: Wie geht denn das? Mit jmp FFFF:0000 kommt ein Fehler beim Assemblieren (TASM)



  • Aus dem WinAPI-SDK:

    The ExitWindowsEx function either logs off, shuts down, or shuts down and restarts the system.

    BOOL ExitWindowsEx(

    UINT uFlags, // shutdown operation
    DWORD dwReserved // reserved
    );

    Parameters

    uFlags

    Specifies the type of shutdown. This parameter must be some combination of the following values:

    Value Meaning
    EWX_FORCE Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.
    EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.
    EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature.Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
    EWX_REBOOT Shuts down the system and then restarts the system. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
    EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.

    dwReserved

    Reserved; this parameter is ignored.

    Return Values

    If the function succeeds, the return value is nonzero.
    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    Remarks

    The ExitWindowsEx function returns as soon as it has initiated the shutdown. The shutdown or logoff then proceeds asynchronously.
    During a shutdown or log-off operation, applications that are shut down are allowed a specific amount of time to respond to the shutdown request. If the time expires, Windows displays a dialog box that allows the user to forcibly shut down the application, to retry the shutdown, or to cancel the shutdown request. If the EWX_FORCE value is specified, Windows always forces applications to close and does not display the dialog box.

    The ExitWindowsEx function sends a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT as the situation warrants, to console processes. A console process routes these messages to its HandlerRoutine functions, which are added and removed by calls to the SetConsoleCtrlHandler function. ExitWindowsEx sends these notification messages asynchronously; thus, an application cannot assume that the console notification messages have been handled when a call to ExitWindowsEx returns.

    Windows NT: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges.
    Windows 95: Security privileges are not supported or required.



  • @<whats>:
    es heisst jmp far 0FFFFh:0000h 😉



  • @Nobuo: Thx, aber irgendwie funktioniert das nicht.

    CODE SEGMENT WORD 'CODE'
    ASSUME CS:CODE
    
    begin:
    
    jmp far 0FFFFh:0000h
    
    CODE ENDS
    
    END begin
    

    Und dann mit Tasm 5 (tasm jump.asm) assembliert:

    **Error** jump.ASM(6) Illegal immediate

    Was ist falsch?



  • *falsches Forum* *hust* *vor Side in Deckung geh* 😃
    Du verwendest im TASM anscheinand den MASM-Syntax. far ist ideal-TASM. Den MASM-Syntax kenne ich (zum Glueck :p) nicht genauer.
    Kann dir also nur die Op-Codes geben:
    db 0eah ;far jump
    dw 0000h ;offset
    dw 0FFFFh ;segment



  • Danke Nobou, aber ich krieg's einfach nicht hin. Könntest du vielleicht den vollständigen Code für TASM posten? Und ist das eigentlich der übliche Weg den PC unter DOS (nicht Windows-Konsole) neuzustarten?



  • Ich mach einen Thread im Asm-Forum auf. Wennsde noch weitere Fragen hast, bitte dann dort hin.

    [ Dieser Beitrag wurde am 28.07.2002 um 00:47 Uhr von Nobuo T editiert. ]



  • Falls es hier um Win-Konsole geht: WebFritzis Beitrag.
    Falls es hier von Win auf DOS geht: WebFritzis Beitrag.

    Falls es hier um DOS geht: NobuoTs Beitrag im ASM-Forum.

    Danke für ihr Verständnis.

    MfG SideWinder



  • @webfritzis
    hmm wie meinst du es so gibr es ein Fehler

    #include <windows.h>
    BOOL ExitWindowsEx(

    UINT uFlags, // shutdown operation
    DWORD dwReserved // reserved
    );

    void main()
    {

    ExitWindowsEx();

    }



  • Schreib statt

    ExitWindowsEx();
    

    z.B. mal

    ExitWindowsEx(EWX_SHUTDOWN, 0);
    


  • Original erstellt von Nobuo T:
    Noe. int 9 ist der KB handler. Wenn du den aufrufst passiert absolut gar nyx. 😉

    hast recht, ich hab mich vertan, laut einem Buch was ich habe, ist der Interrupt 0x19 dafür zuständig 🙂



  • Original erstellt von $oldier:
    **@webfritzis
    hmm wie meinst du es so gibr es ein Fehler

    #include <windows.h>
    BOOL ExitWindowsEx(

    UINT uFlags, // shutdown operation
    DWORD dwReserved // reserved
    );

    void main()
    {
    ExitWindowsEx();
    }**

    Oha. Du solltest dir mal ein Tutorial über Programmierung reinziehen. Hast du noch nie eine Funktion aufgerufen?



  • @web
    ja ok habs kapiert



  • OK. War auch nicht bös gemeint.



  • funzt das beenden des computers nich auch mit dem befehl

    system("RUNDLL32.EXE user, ExitWindows");

    ?



  • Also, bei mir nicht.



  • oh sorry, hab da noch was vergessen, ich meinte:
    system("%windir%\\RUNDLL32.EXE user, ExitWindows");

    damit müsste es eigentlich klappen 😃
    mfg kenny


Anmelden zum Antworten