Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1095 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++/DLL] Question existentiellement conceptuelle : DLL "persistante"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++/DLL] Question existentiellement conceptuelle : DLL "persistante"

n°585911
Tetedeienc​h
Head Of God
Posté le 08-12-2003 à 20:03:27  profilanswer
 

Hello !
 
Comme je m'y connais moyen en DLL, je demande votre avis car j'ai pas trouvé grand chose la dessus :(
 
J'ai une DLL qui charge un fichier .sys pour choper des infos sur le CPU etc.
 
Seulement j'ai besoin d'y faire appel plusieurs fois de suite.
 
Le truc c'est que le chargement/déchargement prends du temps ( a peu pres 1 seconde et quelques) ce qui me gène dans mon appli, car j'y fait appel a différents endroits assez souvent.
 
Donc, Comment feriez vous une DLL qui  charge une fois le driver ( via appel de procedure certainement), et dont le processus reste en mémoire, attendant des "requetes" pour executer les infos, sous VC++ ?
 
Je pensais aux signaux, mais j'ai tripatouillé ca que dans des executables sous linux, alors je me demandais ce que ca donnait sous winwin :D
 
Merci de votre aide/suggestions !

mood
Publicité
Posté le 08-12-2003 à 20:03:27  profilanswer
 

n°585936
ToxicAveng​er
Posté le 08-12-2003 à 20:53:11  profilanswer
 

Code :
  1. /*
  2. The UnloadDll routine can return 0 to keep the DLL loaded,  
  3. or 1 to allow it to be unloaded.
  4. */
  5. int __stdcall UnloadDll (int mTimeout)
  6. {
  7. return 0;
  8. }


 
j'utilise ca moi (copier coller d'un code, alors faudra ptet adapter) pour faire mes dll

n°585946
Tetedeienc​h
Head Of God
Posté le 08-12-2003 à 21:02:10  profilanswer
 

merci, mais non spaca :D
 
Mon but est pas de laisser ma DLL chargée dans la mémoire ( enfin si mais indirectement), mais plutot de laisser un processus lancé par la DLL tourner et de lui envoyer des "ordres".
 
C'est possible mais je m'interroge grandement sur les signaux en fait :/

n°586027
hellbilly
free smile
Posté le 08-12-2003 à 22:40:22  profilanswer
 

T'as pas de signaux sous win comme sous linux mais tu devrais trouver ton bonheur avec les ipc pour que tes processus communiquent (les pipes par exemples).
http://msdn.microsoft.com/library/ [...] ndleex.asp

n°586044
Tetedeienc​h
Head Of God
Posté le 08-12-2003 à 22:46:37  profilanswer
 

J'avais raison de douter des signaux :D
 
La ou je capte pas, c'est que je peux pas faire un pipe. le pipe se créé à partir d'une variable globale. Or, si j'apelle une autre fonction de la DLL, je vais avoir un nouveau contexte ( non ? je me trompe peut etre ), donc la variable du pipe, le FD en fait, sera accessible depuis le créateur et pas depuis la fonction appelée.
 
Par exemple si je fais une DLL style :

Code :
  1. int a=0;
  2. void set()
  3. {
  4. a = 1;
  5. }
  6. int get()
  7. {
  8. return a;
  9. }

 
 
En version simplifiée et rapide, et que j'apelle ca avec :

Code :
  1. set();
  2. printf("%d\n",get());


 
je vais afficher 0, et pas 1, non ?
 
J'ai raison, tort ?
 
Quelqu'un peut m'expliquer svp :D


Message édité par Tetedeiench le 08-12-2003 à 22:46:54
n°586072
HelloWorld
Salut tout le monde!
Posté le 08-12-2003 à 23:14:15  profilanswer
 

Tu peux placer ta variable a dans une section shared.
Y'a un truc que je pige pas : si tu fais plusieurs appels de suite, pourquoi le driver et chargé / déchargé à chacun de ces appels ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°586076
Tetedeienc​h
Head Of God
Posté le 08-12-2003 à 23:17:19  profilanswer
 

HelloWorld a écrit :

Tu peux placer ta variable a dans une section shared.
Y'a un truc que je pige pas : si tu fais plusieurs appels de suite, pourquoi le driver et chargé / déchargé à chacun de ces appels ?


 
Ben je me demande si c'est un bug mais ca marchait pas :D
 
La je vais rentrer et essayer de debugguer ca, ou demain aprem.

n°586085
HelloWorld
Salut tout le monde!
Posté le 08-12-2003 à 23:21:40  profilanswer
 

Si j'ai bien compris, dans ton aplis, qui ne s'exécute qu'une fois, a chaque appel du driver hop il est chargé, il fait le boulot, puis il est déchargé. Si c'est ça, tu dois avoir des closehandle de trop...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°586140
Tetedeienc​h
Head Of God
Posté le 09-12-2003 à 00:18:37  profilanswer
 

HelloWorld a écrit :

Si j'ai bien compris, dans ton aplis, qui ne s'exécute qu'une fois, a chaque appel du driver hop il est chargé, il fait le boulot, puis il est déchargé. Si c'est ça, tu dois avoir des closehandle de trop...


 
oui, mais sans faire ca, ca buggue :D
 
Je débugguerai ca demain, la je regarde déjà si ca marche sous 98 en rechargeant le driver a chaque fois.

n°587029
HelloWorld
Salut tout le monde!
Posté le 10-12-2003 à 00:51:25  profilanswer
 

Ah, ben c'est pas normal... Le mieux est de chercher l'erreur au lieu de chercher à la contourner.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 10-12-2003 à 00:51:25  profilanswer
 

n°587325
karlkox
Posté le 10-12-2003 à 14:10:42  profilanswer
 

Tu peux utiliser le FileMapping, ca te créé un fichier virtuel temporaire dans le but de partager un espace mémoire, tu peux bricoler dedans comme bon te semble.

n°587426
bjone
Insert booze to continue
Posté le 10-12-2003 à 15:11:59  profilanswer
 

bah ta DLL tu la garde chargée, et tu te démerdes avec un système de compteur d'utilisation ou un truc du genre ?

n°588844
HelloWorld
Salut tout le monde!
Posté le 12-12-2003 à 02:38:10  profilanswer
 

C'est déjà implémenté en interne par Windows. AMA il fait un LoadLibrary/FreeLibrary entre chaque appel. Il lui suffit de le faire une fois en tout (load au demarrage process, free à la fin).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°588849
bjone
Insert booze to continue
Posté le 12-12-2003 à 02:45:44  profilanswer
 

HelloWorld a écrit :

C'est déjà implémenté en interne par Windows. AMA il fait un LoadLibrary/FreeLibrary entre chaque appel. Il lui suffit de le faire une fois en tout (load au demarrage process, free à la fin).


 
bin c'est ça que je comprends po, comment il se démerde pour avoir le load et le free a -presque- chaque appel ?

n°590654
HelloWorld
Salut tout le monde!
Posté le 14-12-2003 à 19:27:23  profilanswer
 

copier-coller de code sans trop comprendre ... ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°590838
Tetedeienc​h
Head Of God
Posté le 15-12-2003 à 07:05:27  profilanswer
 

HelloWorld a écrit :

copier-coller de code sans trop comprendre ... ?


 
Bug sans trop comprendre d'ou il vient oui :heink:
 
C'est fou ce que vous pouvez être méprisant pour pas grand chose quand même, c'est assez dingue, limite ca dégoute.
 
Je vois pas ce qui te permet de dire ca, et de 1, et de 2, je serai bien curieux de savoir ce que tu serai capable de faire, toi, à ma place, gamin.
 
Franchement, Helloworld, j'applaudis. Si ton égo et ton sarcasme est à la hauteur de ton intelligence, cette dernière est du niveau de celle d'un enfant hydrocéphale dont la tete est sur un radiateur électrique, qui ouvre la bouche et qui fait "Fuiiiiiiiiiiiiiiiiiiiiiiii" :heink:


Message édité par Tetedeiench le 15-12-2003 à 07:06:00
n°590868
ToxicAveng​er
Posté le 15-12-2003 à 08:51:07  profilanswer
 

tetedeiench a écrit :


 
Bug sans trop comprendre d'ou il vient oui :heink:
 
C'est fou ce que vous pouvez être méprisant pour pas grand chose quand même, c'est assez dingue, limite ca dégoute.
 
Je vois pas ce qui te permet de dire ca, et de 1, et de 2, je serai bien curieux de savoir ce que tu serai capable de faire, toi, à ma place, gamin.
 
Franchement, Helloworld, j'applaudis. Si ton égo et ton sarcasme est à la hauteur de ton intelligence, cette dernière est du niveau de celle d'un enfant hydrocéphale dont la tete est sur un radiateur électrique, qui ouvre la bouche et qui fait "Fuiiiiiiiiiiiiiiiiiiiiiiii" :heink:


 
c'est bon on va pas se battre pour ca hein... [:greenleaf]

n°591062
bjone
Insert booze to continue
Posté le 15-12-2003 à 13:05:53  profilanswer
 

tetedeiench a écrit :


 
Bug sans trop comprendre d'ou il vient oui :heink:
 
C'est fou ce que vous pouvez être méprisant pour pas grand chose quand même, c'est assez dingue, limite ca dégoute.
 
Je vois pas ce qui te permet de dire ca, et de 1, et de 2, je serai bien curieux de savoir ce que tu serai capable de faire, toi, à ma place, gamin.
 
Franchement, Helloworld, j'applaudis. Si ton égo et ton sarcasme est à la hauteur de ton intelligence, cette dernière est du niveau de celle d'un enfant hydrocéphale dont la tete est sur un radiateur électrique, qui ouvre la bouche et qui fait "Fuiiiiiiiiiiiiiiiiiiiiiiii" :heink:


 
c'est quoi c'est une DLL que tu utilises dans WinDev ? (je crois me souvenir que tu fais souvent tes trucs sous WinDev ?)

n°591225
HelloWorld
Salut tout le monde!
Posté le 15-12-2003 à 16:36:15  profilanswer
 

Citation :

Bug sans trop comprendre d'ou il vient oui    
 
C'est fou ce que vous pouvez être méprisant pour pas grand chose quand même, c'est assez dingue, limite ca dégoute.
 
Je vois pas ce qui te permet de dire ca, et de 1, et de 2, je serai bien curieux de savoir ce que tu serai capable de faire, toi, à ma place, gamin.
 
Franchement, Helloworld, j'applaudis. Si ton égo et ton sarcasme est à la hauteur de ton intelligence, cette dernière est du niveau de celle d'un enfant hydrocéphale dont la tete est sur un radiateur électrique, qui ouvre la bouche et qui fait "Fuiiiiiiiiiiiiiiiiiiiiiiii"  


 
Oh la oh la, on se calme.
Tout d'abord, si je me fie à ta date de naissance, le gamin il est plus vieux que toi. Ensuite ta petite phrase d'insulte à 2 balles t'aurais pu te la garder, ça aurait pas été plus mal.
Y'avait aucun mépris dans ma réponse. Y'a pas de honte à pas tout comprendre, je suis le premier à essayer tout un tas de choses quand j'ai un problème et des fois ne pas bien saisir ce que je fais. On se pose des questions sur ton probleme, et on demande comment tu peux te retrouver avec une suite de Load-Free dans ton code au lieu d'un Load au debut et un Free à la fin. C'est le cas typique du code de vbfrance copié-collé dans son programme. D'autant plus que tu load un driver, ça sent vraiment la récup.  
Moi je pense que l'erreur vient d'une mauvaise utilisation. Ca te vexe énormément que je pense cela. Ok, je vais me noter sur un post-it que t'es infaillible et de ne pas suggérer un problème dans ton code.
Tu me traite de méprisant, de sarcastique, etc... Libre à toi d'interpréter ma question comme une remarque de mépris. Moi j'ai ma conscience tranquille, je crois pas me trainer une réputation de mec qui vient ici pour casser du newbie.
Et s'il t'en faut si peu pour te dégouter, ben t'as pas fini de vomir.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°591332
Tetedeienc​h
Head Of God
Posté le 15-12-2003 à 19:02:35  profilanswer
 

HelloWorld a écrit :

Citation :

Bug sans trop comprendre d'ou il vient oui    
 
C'est fou ce que vous pouvez être méprisant pour pas grand chose quand même, c'est assez dingue, limite ca dégoute.
 
Je vois pas ce qui te permet de dire ca, et de 1, et de 2, je serai bien curieux de savoir ce que tu serai capable de faire, toi, à ma place, gamin.
 
Franchement, Helloworld, j'applaudis. Si ton égo et ton sarcasme est à la hauteur de ton intelligence, cette dernière est du niveau de celle d'un enfant hydrocéphale dont la tete est sur un radiateur électrique, qui ouvre la bouche et qui fait "Fuiiiiiiiiiiiiiiiiiiiiiiii"  


 
Oh la oh la, on se calme.
Tout d'abord, si je me fie à ta date de naissance, le gamin il est plus vieux que toi. Ensuite ta petite phrase d'insulte à 2 balles t'aurais pu te la garder, ça aurait pas été plus mal.
Y'avait aucun mépris dans ma réponse. Y'a pas de honte à pas tout comprendre, je suis le premier à essayer tout un tas de choses quand j'ai un problème et des fois ne pas bien saisir ce que je fais. On se pose des questions sur ton probleme, et on demande comment tu peux te retrouver avec une suite de Load-Free dans ton code au lieu d'un Load au debut et un Free à la fin. C'est le cas typique du code de vbfrance copié-collé dans son programme. D'autant plus que tu load un driver, ça sent vraiment la récup.  
Moi je pense que l'erreur vient d'une mauvaise utilisation. Ca te vexe énormément que je pense cela. Ok, je vais me noter sur un post-it que t'es infaillible et de ne pas suggérer un problème dans ton code.
Tu me traite de méprisant, de sarcastique, etc... Libre à toi d'interpréter ma question comme une remarque de mépris. Moi j'ai ma conscience tranquille, je crois pas me trainer une réputation de mec qui vient ici pour casser du newbie.
Et s'il t'en faut si peu pour te dégouter, ben t'as pas fini de vomir.


 
J'ai dis 5 fois auparavant que le load/free a chaque fois est la car une fonction load et une fonction free avec les appels entre chaque me pourrit le truc :heink:
 
C'est pour ma DLL de récupération d'infos. Autant y a des infos dont je n'ai besoin qu'une fois ( et que je peux donc récupérer facilement en masse de facon unique) autant d'autres doivent etre récupérées plusieurs fois et de facon unaire. Donc vu que la soluce "load dans une fonction, free dans une autre, et les appels dans des fonctions différentes" ne marche pas, faut bien que je fasse le load/free a chaque fois.
 
M'enfin, tu as raison, devine d'ou provient mon code, tout ca sur la base d'un post sur la section sans code :D Tu es très fort.
 
Quant à l'insulte elle n'est pas insulte mais bien au niveau de ton psot. Quant à l'age, c'était plus de la dérision qu'autre chose pour te refouttre en place.
 
C'est marrant, a vous écouter, j'ai toutes les réputations du monde. En voici une nouvelle. Allez, à la prochaine, je sodomise les poules ?
 
Topic clos pour ma part, les réponses de certains me donne envie de vomir.


Message édité par Tetedeiench le 15-12-2003 à 19:03:06
n°591335
chrisbk
-
Posté le 15-12-2003 à 19:05:46  profilanswer
 

tetedeiench a écrit :


C'est marrant, a vous écouter, j'ai toutes les réputations du monde. En voici une nouvelle. Allez, à la prochaine, je sodomise les poules ?


 
fo dire, c quelque chose, a chaque fois que tu posts ca finis en fight, y'a bien un truc non ?

n°591339
HelloWorld
Salut tout le monde!
Posté le 15-12-2003 à 19:27:45  profilanswer
 

T'as peut etre dis 5 fois un truc, mais moi j'ai pas bien pigé ton pblm. Je sais pas si c'est le driver ou la dll qui est loadé trop de fois, et surtout, et je suis pas le seul, je sais tjrs pas pkoi "une fonction load et une fonction free avec les appels entre chaque me pourrit le truc".
Pas de précisions, pas de code, je suis pas Houdini.

Citation :

C'est marrant, a vous écouter, j'ai toutes les réputations du monde.


Là encore c'est toi qui va chercher ça...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°591557
ToxicAveng​er
Posté le 16-12-2003 à 08:49:52  profilanswer
 

HelloWorld a écrit :

T'as peut etre dis 5 fois un truc, mais moi j'ai pas bien pigé ton pblm. Je sais pas si c'est le driver ou la dll qui est loadé trop de fois, et surtout, et je suis pas le seul, je sais tjrs pas pkoi "une fonction load et une fonction free avec les appels entre chaque me pourrit le truc".
Pas de précisions, pas de code, je suis pas Houdini.

Citation :

C'est marrant, a vous écouter, j'ai toutes les réputations du monde.


Là encore c'est toi qui va chercher ça...


 
http://perso.wanadoo.fr/magica/images/colmir1.jpg
 
Non, mais moi je suis Sylvain Mirouf  [:greenleaf]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++/DLL] Question existentiellement conceptuelle : DLL "persistante"

 

Sujets relatifs
question de debutant sur JAVACC[JVM] question JVM/context
Question a la con... comme d'hab...Question supreme de l'absolu
[CSS] question sur <span>[JS] Une question a propos d'un roll over
question bete sur les variables globalesquestion sur la methode post.
Question trés simple : transformer une variable en tableauQuestion en C++ .NET
Plus de sujets relatifs à : [C++/DLL] Question existentiellement conceptuelle : DLL "persistante"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR