IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Shutdown d'un PC depuis MS-DOS


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Shutdown d'un PC depuis MS-DOS
    Bonjour,

    Dans le cadre d'un projet informatique, je souhaiterai pouvoir éteindre un pc depuis ms dos, de manière logicielle.

    Le dit pc est équipé d'une alimentation ATX.
    Pour que tout le monde comprenne, le dit projet est le suivant:
    - charger un master sur le pc en bootant sur une clé usb bootable. A ce moment là, le pc ne possède ni ecran ni clavier ni souris
    - une fois le restauration du master avec ghost terminée, le pc doit s'éteindre tout seul pour prévenir que la restauration est terminée.


    J'ai déjà trouvé des soft du style shutdown.exe, poweroff.exe. Avec shutdown.exe, j'arrive à faire rebooter le pc, mais pas à l'éteindre. Avec Poweroff, rien ne se passe.

    Je souhaiterai donc savoir si l'on peut effectuer cela en assembleur.
    Le programme doit éteindre le pc, le rallumage de celui-ci se fera à la main par l'utilisateur.

    Si quelqu'un peut m'aider, car la je galère....

    Merci


    Bab

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 393
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 393
    Points : 20 496
    Points
    20 496
    Par défaut
    Je pense qu'il faille appeler une interruption avec les bons parametres dans les registres adequats ( AH, AL...)
    Regarde ici
    http://en.wikipedia.org/wiki/BIOS_call
    ou bien ici
    http://www.ctyme.com/intr/cat-003.htm
    http://www.ctyme.com/intr/int-15.htm
    Peut etre autour de l'INT 15h.
    Sinon je crois que c'est possible en appelant la toute derniere adresse de la RAM comme FFFF:FFFE en 16bits avec un CALL
    ( a verifier )

    Etre imperativement sous ms-dos pur pas de Windows installe

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Citation Envoyé par baboun007 Voir le message
    Bonjour, Dans le cadre d'un projet informatique, je souhaiterai pouvoir éteindre un pc depuis ms dos, de manière logicielle.
    Je suppose que tu travailles réellement sous MS-DOS, pas sous Windows en mode console.

    Tu peux voir ici-même, il y a bien longtemps :

    http://www.developpez.net/forums/d17...ur/arreter-pc/

    Vois surtout l'utilisation de l'APM par le BIOS, ici, avec l'interruption 15h :

    http://www.ibiblio.org/pub/historic-....specification

    Regarde dans la section 3.1.3

    AH=53h AL=07h BX=0001h

    et CX=0001 pour Stand-by
    et CX=0002 pour System Suspend

    Après vérif, le noyau Linux utilise CX=0003 pour extinction complète. Il place aussi au préalable SS:SP sur 1000:F000, mais je n'ai pas cherché pourquoi.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Sinon je crois que c'est possible en appelant la toute derniere adresse de la RAM comme FFFF:FFFE en 16bits avec un CALL ( a verifier )
    Ça, c'est pour faire un Reset ...

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci pour vos réponses rapides.
    Mais je crains être dans une impasse

    En effet, la fameuse clé USB boote sur un DOS version disquette de boot win98.
    Et lorsque je lance par exemple le prog recompilé de http://www.developpez.net/forums/d17...ur/arreter-pc/ , le prog m'affiche que APM n'est pas supporté et rien ne se passe.

    je suis pourtant sur et certain que l'alim est une ATX

    Ne connaissant en plus absolument pas l'assembleur, je ne sais pas trop quoi faire, ni penser.

    Si quelqu'un a une idée .....

    Merci

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Citation Envoyé par baboun007 Voir le message
    Si quelqu'un a une idée .....
    Merci
    Le programme compilé fait appel à un grand nombre de fonctions APM. Tu n'en as pas besoin d'autant. À priori, tu n'as besoin que de l'appel que l'on t'a donné au-dessus, mais il se peut que tu aies besoin de repasser en mode « manuel » d'abord pour que ça fonctionne. Le programme en question le fait.

    Voici un petit .com de 15 octets produit par mes soins (avec nasm sous Linux). Pas testé donc je ne sais pas ce qu'il vaut.

    Boote avec ta disquette DOS-W98 et lance-le de là. S'il te rend la main ou s'il freeze, l'appel ne fonctionne pas. Si l'ordinateur s'éteind, gagné. T'as plus qu'à le coller sur ta disquette à la fin d'un fichier .bat

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci Obsidian.
    je viens de tester ton programme....

    Malheureusement, le pc me rend la main plutôt que de s'éteindre....

    Je désespère

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    La version boot de mon programme ne fonctionnait pas non plus (donc hors-Windows) sur deux machines testées. Je viens d'en faire une autre qui se connecte à l'interface 16-bits mode protégé plutôt que mode réel pur et ça marche en version boot.

    Voici donc un nouveau « .com ». Dis-moi si ça marche.

    UPDATE : Je viens de formatter une disquette sous Windows 98 et de booter dessus sur un PII/350Mhz de 1998. Le programme fonctionne ! Victoire.

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 780
    Points
    23 780
    Par défaut
    Bon je reviens encore une fois à la charge, avec la même version mais qui appelle l'interface 32 bits et plus la 16 bits (5303h au lieu de 5302h, c'est la seule différence). La première ne marchait pas sur les BIOS un peu faiblards et trop récents (portable Toshiba de 2004).

    L'interface 32 bits fonctionne sur les deux machines que j'ai testées.
    Cette fois je considère que c'est fini :-)
    Fichiers attachés Fichiers attachés

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut commande shutdown
    si ça peut aider, la commande shutdown.exe qui permet d'éteindre le PC est : shutdown.exe -s -txxxx

    avec xxxx = délai en nombre de secondes

Discussions similaires

  1. archiver un dossier avec IZArc depuis MS-DOS
    Par franz2b dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 01/04/2010, 15h19
  2. installation oracle depuis ms dos
    Par younes32 dans le forum Installation
    Réponses: 0
    Dernier message: 17/02/2009, 17h20
  3. [FreeBSD] Installation depuis une partition DOS
    Par legwendi dans le forum BSD
    Réponses: 5
    Dernier message: 13/11/2006, 18h56
  4. Mac addresse d'un poste Linux depuis commande Dos
    Par Guitch dans le forum Développement
    Réponses: 1
    Dernier message: 25/10/2005, 11h05
  5. executer dos depuis requete sql
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/11/2004, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo