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

Delphi Discussion :

Mutex Instruction privilégiée


Sujet :

Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut Mutex Instruction privilégiée
    Bonjour,
    Je souhaite utiliser un mutex car trois process ont accès au même fichier.
    J'ai fait des essais avec une petite appli trouvée sur le web qui marche sans problème.
    J'ai inséré le code dans mes applis. La compilation ne signale aucune erreur. L'une d'entre elles tourne sans problème, mais les deux autres génèrent une erreur "instruction privilégiée" à l'exécution. La seule différence que je vois entre celle qui marche et les autres, c'est que je n'y utilise pas de sections critiques comme dans celles qui posent problème.
    Mutex et critical section seraient-ils incompatibles ? Ou est-ce autre chose ? Y a-t-il une solution ?
    Merci de votre réponse.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    une section critique est interne au processus, le mutex est global...il n'y a donc pas de relation entre les deux à priori

    par contre si un process Admin crée un mutex, un process non-admin ne pourra pas y accéder j'imagine
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut
    Oui ceci était clair pour moi.
    Depuis j'ai mis une section critique dans le programme qui tourne et cela ne l'a pas gêné : il continue à tourner correctement.
    Ce n'est donc pas le problème.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 914
    Par défaut
    Est-ce un mutex global ?
    Un service est-il impliqué ou plusieurs sessions (si global) ?
    Quel est le niveau de privilèges des applications desktop ?
    As-tu défini des attributs de sécurité à la création du mutex ?

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Billets dans le blog
    1
    Par défaut instruction privilégiée
    Je ne sais pas répondre à la question de savoir si c'est un mutex global car je n'en sais rien. Sauf que je lui ai donné un mot (un nom ?) et que c'est peut-être ça qui ne le rend pas global. J'ai vu sur le net qu'on peut les créer sans mettre de mot.
    Mon code pour le créer dans les trois applis dans la partie initialization :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      fMutex := SyncObjs.TMutex.Create(nil, False, 'SuiviActifs');
    J'ai essayé dans une des applis de le mettre dans la création de la fiche mais cela a encore généré une erreur "instruction privilégiée" à l'exécution.
    Cela marche dans une des applis mais pas dans les deux autres et les trois sont des serveurs.
    Une autre précision : lorsque je le mets dans la création de la fiche avec un point d'arrêt sur l’instruction qui évite qu'elle soit exécutée et que je le lance dans l'environnement EDI j'ai une violation d'accès à l'adresse 00555F08 ecriture de l’adresse FFFF020D avant d'atteindre l'instruction donc.
    Si je supprime la ligne pas de problème.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/03/2013, 23h41
  2. Exception 'instruction privilégiée' avec TDLPort
    Par jphi5 dans le forum C++Builder
    Réponses: 21
    Dernier message: 11/11/2003, 16h40
  3. VC++, assembleur et instruction privilégiée
    Par Michel Devaud dans le forum MFC
    Réponses: 5
    Dernier message: 19/09/2003, 09h12

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