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

Windows Discussion :

Recupérer le nom image du processus


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut Recupérer le nom image du processus
    Bonjour,

    Je recupére le handle du processus lut par mon driver à l'aide de la fonction
    DeviceIoControl

    En Kernel-mode.
    HANDLE
    PsGetCurrentProcessId(
    VOID
    );

    Je recupére donc le HANDLE du processus recupére à l'aide de la fonction
    DeviceIocontrol.

    Mais en user-mode quel api windows faut t'il utiliser pour recupérer les informations de ce processus (ex nom de l'image,PID etc.) ????
    Merci beaucoup.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    Je ne suis pas sûr qu'un handle récupérer en kernel-mode soit fonctionnel en user-mode, sinon :
    NtQueryInformationProcess
    http://msdn.microsoft.com/en-us/libr...80(VS.85).aspx

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Je ne suis pas sûr qu'un handle récupérer en kernel-mode soit fonctionnel en user-mode
    Cela m'étonnerait beaucoup moi aussi.
    Regarde aussi du côté de GetModuleFileName et GetCurrentProcessId, et de façon générale le topic Processes and Threads de MSDN.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    Bonjour,
    un HANDLE n'est pas un pointeur mais bien un nombre.
    Si j'en crois PsGetCurrentProcessId()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    returns the process ID of the of the current thread's process.
    Donc techniquement l'information qu'il récupère est un PID valable en userland, il peut donc (avec les droits adéquat) faire un OpenProcess dessus suivi par un NtQueryInformationProcess non?
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pourtant, en user-mode, tu as bien deux concepts différents: Le Process ID (un DWORD) et le handle de processus ouvert (un HANDLE)...

    OpenProcess() et GetProcessId() m'en sont témoins, ainsi que GetCurrentProcess() (retourne un pseudo-handle valide uniquement dans le processus courant) et GetCurrentProcessId() (retourne un DWORD toujours valide)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    On est bien d'accord pour l'user mode.
    Cela dis je ne fais que de me référer a la MSDN sans plus.

    Il existe des handles globaux, et il me semble logique que dans le kernel le PID d'un processus soit un handle global sur celui-ci. (c'est même sa fonction première non?)
    Pourquoi ce n'est pas pareil en userland? car deux applications peuvent avoir besoins d'ouvrir un handle sur le même processus et qu'il faut bien distinguer les deux (et donc le handle ne peut être égal au PID du processus a atteindre).

    enfin c'est ce que je pense, il existe peut être d'autre raison mais celle-ci me semble parfaitement logique (je peux me tromper).
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Attention aussi aux confusions possibles (y compris de doc sur MSDN, l'erreur est humaine...) avec Windows CE : sous CE, le handle sur un processus/thread est IDENTIQUE (au cast près) au PID/TID, et il est donc "partageable" (mais bon, crado quand même).

    Ceci est par contre FAUX par défaut sur les noyaux NT, ne serait-ce qu'à cause des droits NT : deux handles ouverts avec des droits différents sont différents entre eux, et ne peuvent donc pas être égaux au PID ("H1==PID" ET "H2==PID" ET "H1!=H2" n'a bien sûr pas de solution).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    c'est bien la différence entre un handle locale et un handle globale non?
    Nul n'est a l'abri d'une erreur humaine mais je pense que la msdn et vue et revue
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par sloshy Voir le message
    Nul n'est a l'abri d'une erreur humaine mais je pense que la msdn et vue et revue
    Je viens de tomber sur une erreur de lien tout à l'heure, si tu veux un exemple...
    Plus sérieusement, elle est comme toutes les docs faites sérieusement : digne de confiance sur le fond général, et potentiellement fausse sur les détails "insignifiants".

    En l'occurrence, là, on parle de PID retourné via un HANDLE, ce qui n'est pas l'usage normal de l'API Win32 (sous-entendu "user") qui utilise un DWORD à cet effet. On peut donc légitimement présupposer qu'il y a une coquille et/ou que c'est spécifique au mode kernel.

    Dans le cas de PsGetCurrentProcessId, c'est en effet une fonction Kernel à la base, donc les règles sont différentes de l'user-land. OK, le PID ne change pas de valeur entre le mode user et le mode kernel, mais cela ne fait pas du HANDLE retourné par PsGetCurrentProcessId un handle valide en mode User. Il est du bon type, certes, mais la fonction adéquate User est GetCurrentProcess.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    Relis ce que je dis )
    Je dis qu'il retourne un PID valide en user mode, de la il faut OpenProcess pour avoir un handle
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Ah, OK, si c'est en passant ça comme un PID, qui est interprété comme un PID en mode user et non pas comme un HANDLE (+ API Win32 derrière pour récupérer les infos bien sûr).

    La forme interrogative que tu avais utilisée m'a induit en erreur, j'ai cru que tu voulais passer directement le handle du mode Kernel vers le mode User, en tant que handle global et comme alternative à OpenProcess...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  12. #12
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    La forme interrogative était la uniquement car c'est une supposition âpres la lecture de la doc sans avoir fait de test
    “La seule révolution possible, c'est d'essayer de s'améliorer soi-même, en espérant que les autres fassent la même démarche. Le monde ira mieux alors.”

Discussions similaires

  1. recupérer le nom de l'extension d'une image
    Par benyamin dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 06/05/2008, 14h25
  2. Récuperer le handle depuis le nom d'un processus
    Par dacid dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 13/04/2006, 10h16
  3. Lire le nom d'un processus
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 20/03/2006, 10h23
  4. [BCB5][IBX5.4]Recupérer le nom du serveur ??
    Par Sitting Bull dans le forum Débuter
    Réponses: 1
    Dernier message: 19/10/2004, 19h01
  5. [Winsock] Envoi et recupération d'une image
    Par arnolanf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/11/2002, 08h49

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