Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : 1 dll - 2 exe (3 possibilités ;o) ) [ Archives / Réseau / Internet ] (sena)

lundi 5 mai 2003 à 10:51:04 | 1 dll - 2 exe (3 possibilités ;o) )

sena

Bonjour,

voila j'ai construit une dll.
Au chargement de cette dll un thread est lancer pour pouvoir effectuer une réception UDP en permanence.

Mon pb est lorsque 2 exe chargent cette même dll, car le thread est lancé 2 fois et il ne faut surtout pas ke ca se fasse car sinon ca fait 2 fois la même choz et en plus ca plante ....

Donc j'aimerais savoir si il y a un moyen de tester au chargement de la dll si le thread n'a po déjà été lancé lors d'un précédent chargement par un otre exe, ou alors tester si un port n'est pas déjà utilisé ....

Enfin pour l'instant mon idée est de passé par un fichier. Mon appli utilise un fichier .ini , je pense m'en servir en mettant une variable a 0 par défaut et a 1 lorsque le thread est lancé. Je sais c'est po top mais pour l'instant je sèche...

Merci de bien vouloir m'aider.
None.

mercredi 7 mai 2003 à 04:23:24 | Re : 1 dll - 2 exe (3 possibilités ;o) )

CoreBreaker

La fonction DllMain permet de tester si la DLL est déjà chargée

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> voila j'ai construit une dll.
> Au chargement de cette dll un thread est lancer pour pouvoir effectuer une réception UDP en permanence.
>
> Mon pb est lorsque 2 exe chargent cette même dll, car le thread est lancé 2 fois et il ne faut surtout pas ke ca se fasse car sinon ca fait 2 fois la même choz et en plus ca plante ....
>
> Donc j'aimerais savoir si il y a un moyen de tester au chargement de la dll si le thread n'a po déjà été lancé lors d'un précédent chargement par un otre exe, ou alors tester si un port n'est pas déjà utilisé ....
>
> Enfin pour l'instant mon idée est de passé par un fichier. Mon appli utilise un fichier .ini , je pense m'en servir en mettant une variable a 0 par défaut et a 1 lorsque le thread est lancé. Je sais c'est po top mais pour l'instant je sèche...
>
> Merci de bien vouloir m'aider.
> None.

mercredi 7 mai 2003 à 09:24:58 | Re : 1 dll - 2 exe (3 possibilités ;o) )

sena

Comment ca peux tu etre plus clair STP, je ne vois pas ce que tu vex dire.

Merci




-------------------------------
Réponse au message :
-------------------------------

> La fonction DllMain permet de tester si la DLL est déjà chargée
>
> Core Breaker
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > voila j'ai construit une dll.
> > Au chargement de cette dll un thread est lancer pour pouvoir effectuer une réception UDP en permanence.
> >
> > Mon pb est lorsque 2 exe chargent cette même dll, car le thread est lancé 2 fois et il ne faut surtout pas ke ca se fasse car sinon ca fait 2 fois la même choz et en plus ca plante ....
> >
> > Donc j'aimerais savoir si il y a un moyen de tester au chargement de la dll si le thread n'a po déjà été lancé lors d'un précédent chargement par un otre exe, ou alors tester si un port n'est pas déjà utilisé ....
> >
> > Enfin pour l'instant mon idée est de passé par un fichier. Mon appli utilise un fichier .ini , je pense m'en servir en mettant une variable a 0 par défaut et a 1 lorsque le thread est lancé. Je sais c'est po top mais pour l'instant je sèche...
> >
> > Merci de bien vouloir m'aider.
> > None.
>

mercredi 7 mai 2003 à 10:44:16 | Re : 1 dll - 2 exe (3 possibilités ;o) )

sena

Voila mon code:

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved )
{
DWORD threadID;
HANDLE hThread = 0;

switch( ul_reason_for_call ) {

case DLL_PROCESS_ATTACH:
//hThread = CreateThread(NULL, 0, Fct_UDP, NULL,
0, &threadID);
break;


case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;

case DLL_PROCESS_DETACH:
//CloseHandle(hThread);
break;
}

return TRUE;
}

Quand je mets les deux lignes qui la sont en commentaire, j'ai une erreur : "La mémoire ne peut pas etre read ......."
Je croyais ke ca venait de mon CloseHandle(hThread) mais si je le mets en commentaire ca ne change rien.

En fait j'ai trouvé mon erreur elle ne vient pas du chargement de ma dll mais de mon thread.
En effet, j'ai mi la création de ce thread dans une fonction. Et j'ai le meme bug. JE croyais ke CloseHandle(hThread) servait a terminer mon thread,
APPAREMMENT NON.

Merci





-------------------------------
Réponse au message :
-------------------------------

> Comment ca peux tu etre plus clair STP, je ne vois pas ce que tu vex dire.
>
> Merci
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > La fonction DllMain permet de tester si la DLL est déjà chargée
> >
> > Core Breaker
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour,
> > >
> > > voila j'ai construit une dll.
> > > Au chargement de cette dll un thread est lancer pour pouvoir effectuer une réception UDP en permanence.
> > >
> > > Mon pb est lorsque 2 exe chargent cette même dll, car le thread est lancé 2 fois et il ne faut surtout pas ke ca se fasse car sinon ca fait 2 fois la même choz et en plus ca plante ....
> > >
> > > Donc j'aimerais savoir si il y a un moyen de tester au chargement de la dll si le thread n'a po déjà été lancé lors d'un précédent chargement par un otre exe, ou alors tester si un port n'est pas déjà utilisé ....
> > >
> > > Enfin pour l'instant mon idée est de passé par un fichier. Mon appli utilise un fichier .ini , je pense m'en servir en mettant une variable a 0 par défaut et a 1 lorsque le thread est lancé. Je sais c'est po top mais pour l'instant je sèche...
> > >
> > > Merci de bien vouloir m'aider.
> > > None.
> >
>

mercredi 7 mai 2003 à 12:07:28 | Re : 1 dll - 2 exe (3 possibilités ;o) )

CoreBreaker

Oui bien sûr:
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
)
{
static int instanceCount= 0;

switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
instanceCount++;
break;
DLL_PROCESS_DETACH:
instanceCount--;
break;
}
}

...

if( instanceCount > 1 )
{
// DLL Déjà Chargée Thread déjà lancé
}
else
{
// DLL chargé pour la première fois
// Lancement du thread
}

Core Breaker

mercredi 7 mai 2003 à 13:39:00 | Re : 1 dll - 2 exe (3 possibilités ;o) )

sena

Ah oui ok,

tu te sert d'un compteur !
Merci beaucoup pour l'idée !

;o)



-------------------------------
Réponse au message :
-------------------------------

> Oui bien sûr:
>
BOOL WINAPI DllMain(
> HINSTANCE hinstDLL, // handle to DLL module
> DWORD fdwReason, // reason for calling function
> LPVOID lpvReserved // reserved
> )
> {
> static int instanceCount= 0;
>
> switch(fdwReason)
> {
> case DLL_PROCESS_ATTACH:
> instanceCount++;
> break;
> DLL_PROCESS_DETACH:
> instanceCount--;
> break;
> }
> }
>
> ...
>
> if( instanceCount > 1 )
> {
> // DLL Déjà Chargée Thread déjà lancé
> }
> else
> {
> // DLL chargé pour la première fois
> // Lancement du thread
> }
>

> Core Breaker
>

mercredi 7 mai 2003 à 14:03:34 | Re : 1 dll - 2 exe (3 possibilités ;o) )

CoreBreaker

Oui, c'est le même principe qu'un sémaphore mais sans lock

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Ah oui ok,
>
> tu te sert d'un compteur !
> Merci beaucoup pour l'idée !
>
> ;o)
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Oui bien sûr:
> >
BOOL WINAPI DllMain(
> > HINSTANCE hinstDLL, // handle to DLL module
> > DWORD fdwReason, // reason for calling function
> > LPVOID lpvReserved // reserved
> > )
> > {
> > static int instanceCount= 0;
> >
> > switch(fdwReason)
> > {
> > case DLL_PROCESS_ATTACH:
> > instanceCount++;
> > break;
> > DLL_PROCESS_DETACH:
> > instanceCount--;
> > break;
> > }
> > }
> >
> > ...
> >
> > if( instanceCount > 1 )
> > {
> > // DLL Déjà Chargée Thread déjà lancé
> > }
> > else
> > {
> > // DLL chargé pour la première fois
> > // Lancement du thread
> > }
> >

> > Core Breaker
> >
>



Cette discussion est classé dans : exe, chargement, dll, thread, lancé


Répondre à ce message

Sujets en rapport avec ce message

chargement de dll [ par juliol ] bonjour, j'ai un probleme...j'utilise une dll avec loadlibrary(), lorsque je lance mon programme dans VC++il n'y a aucun probleme, elle se chargeil en Thread & fonction [ par youpiyoyo ] j'aimerai savoir comment et par qu'elle fonction je peux à partir d'un thread lancé une fonction. éternel probleme souvent posé comme post dans le for probleme de librairie [ par zincben ] Bonjour, je travaille sur le portage d'une appli 16bits en 32bits. et j'ai un petit souci.J'ai fait des modifs pour la passer en 32b qui sont en princ Thread dans une dll [ par angel ] Est-il possible de créer un thread dans une dll ? exporter une fonction [ par lahou ] Bonjourest-ce que qqn sait comment faire pour exporter une fonction d'un exe comme on le fait avec une dll avec __declspec(dllexport)En fait je veux f C# probleme d'exportation d'exe [ par golum ] voila g écrit un prog en C# mais bon si je fait mon exe il me manque une dll de base pour l'écécuter (cette dll est payante).suis-je oubligé de faire dll [ par zelze ] (vc++ 6.0)Voila j'ai vu que quelqu'un avait également posez une question sur les dll et Vieuxlion a répondu a des question que j'allais poser mais il Creer un hook dans une dll [ par zinotron ] Je n'ai pas tout compris moi ...j'ai fait une rechercher dans les systeme de creation de hook dans l'API win32, et je compris cela : RIEN.enfin si j'a utiliser un exe comme dll ? [ par ToasTy62 ] est-il possible d'utiliser un exe comme dll ?pas de partage de ressources rien, juste pouvoir exporter une fonction ou 2...marchi d'avance ! intégrer un dll dans un exe [ par youpiyoyo ] J'aurai aimé intégrer la dll de la lib jpeg dans un exe en api win32. je pense que ca se trouve dans les propriétés du projet mais j'ai pas trouver.Pa


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.