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

  FORUM HardWare.fr
  Programmation
  API Win32

  FileMapping et service Windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

FileMapping et service Windows

n°1908235
Vings
Thèse, Antithèse, Charentaises
Posté le 24-07-2009 à 11:13:41  profilanswer
 

Bonjour,
 
J'ai codé une interface graphique (C# utilisant une dll C++) qui doit interagir avec un programme en c++ via une mémoire partagée (CreateFileMapping et openFilemapping).  
 
Les deux sont configurés en service windows (compte système local), avec l'option "interragir avec le bureau" cochée pour mon interface (sinon elle ne s'affiche pas).  
Mon problème est qu'ils n'arrivent pas à communiquer ensemble (alors que c'était le cas quand mon Interface était une application et que j'avais une application tiers qui déclenchait le filemapping).
Mes recherches ne trouvent rien de probant, sachant que la solution provisoire qui consiste à utiliser un autre compte système ne peut être utilisée car j'aurai toujours besoin de l'option "interragir avec le bureau" qui ne semble pas pouvoir être validée avec ce cas de figure.
 
J'ai tenté d'utiliser le paramètre LPSECURITY_ATTRIBUTES de la fonction createFileMapping(car j'ai appris que si il était à NULL, mes programmes ne pourraient communiquer) , pour insérer un descripteur de securité, mais je suppose qu'il est incomplet vu l'echec de ma tentative de les faire communiquer entre eux.
 
 

Code :
  1. Sur le program qui crée le filemapping
  2. LPSECURITY_ATTRIBUTES  ClassTest::lpAttributes=MakeSA();//lp
  3. HANDLE ClassTest::hExchangeRW=CreateFileMapping(INVALID_HANDLE_VALUE, 
  4.                                                                                                                          lpAttributes ,
  5.                                                                                                                          PAGE_READWRITE, // Lecture - écriture
  6.                                                                                                                          0,
  7.                                                                                                                          SIZE_BUFFER,   // 4ko
  8.                                                                                                                          (LPCWSTR)fileMappingDataRW);
  9. bool Classtest::createSecurityDescriptor(SECURITY_ATTRIBUTES  *pSA)
  10. {
  11.      TCHAR * szSD =  TEXT("(A;OICI;GRGWGX;;;AU)" ) // Allow  
  12.                                      // read/write/execute  
  13.                                      // to authenticated  
  14.                                      // users
  15.       // Allow  
  16.                                      // read/write/execute  
  17.                                      // to authenticated  
  18.                                      // users
  19.     if (NULL == pSA)
  20.         return FALSE;
  21.      return ConvertStringSecurityDescriptorToSecurityDescriptor(
  22.                 szSD,
  23.                 SDDL_REVISION_1,
  24.                 &(pSA->lpSecurityDescriptor),
  25.                 NULL);
  26. }
  27. LPSECURITY_ATTRIBUTES ClassTest::MakeSA()
  28. {
  29. SECURITY_ATTRIBUTES  pSA;
  30. LPSECURITY_ATTRIBUTES pSB;
  31. if(!createSecurityDescriptor(&pSA))
  32. {
  33.         cout<<"problem in making security attribute"<<endl;
  34. }
  35. pSB= (LPSECURITY_ATTRIBUTES)(&pSA);
  36. return pSB;
  37. }
  38. //L'autre qui écrit lit sur la mémoire partagée
  39.         hExchangeRW= OpenFileMapping(FILE_MAP_ALL_ACCESS, false, (LPCWSTR)fileMappingDataRW);
  40.         exchangeSpaceRW=(char *)MapViewOfFile(hExchangeRW, FILE_MAP_ALL_ACCESS, 0,0, size_buffer);


 
En espérant recueillir vos lumières  :bounce:
 
Merci d'avance!


Message édité par Vings le 24-07-2009 à 12:33:37
mood
Publicité
Posté le 24-07-2009 à 11:13:41  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  FileMapping et service Windows

 

Sujets relatifs
executer un programme de cygwin dans l'environnement windows[Resolu]Adaptation programme Windows vers Linux
Web Service Axis, inversion paramètres methodeServeur pour programmer un service telephonique ?
RSH depuis linux vers Windows 2003 ...récuperer les evenement windows
[STRUTS]Envoyer un formulaire valide a partir d'une action Struts [OK][Spring Security] Authentification avec un Web service
web service[Java] Appeler un service web
Plus de sujets relatifs à : FileMapping et service Windows


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