1. Procese Windows; comunicaţii prin pipe şi IPC 2
1. Procese Windows; comunicaţii prin pipe şi IPC 2
1. Procese Windows; comunicaţii prin pipe şi IPC 2
- TAGS
- procese
- pipe
- www.cs.ubbcluj.ro
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Procese</strong> <strong>Windows</strong>; <strong>comunicaţii</strong> <strong>prin</strong> <strong>pipe</strong> <strong>şi</strong> <strong>IPC</strong> - 22 -<br />
hFis –handle la fi<strong>şi</strong>erul de mapat; valoarea 0xFFFFFFFF pentru acest parametru indică o<br />
pagină implicită sistem.<br />
descr_sec –descriptor de securitate; dacă se specifică valoarea NULL pentru acest<br />
parametru, sistemul va folosi atributele de securitate implicite.<br />
prot –atribut de protecţie pentru obiectul de mapat.<br />
maxHigh, maxLow –compun dimensiunea pe 32 de biţi a obiectului de mapat.<br />
nume_file_mapping –numele obiectului file-mapping<br />
HANDLE OpenFileMapping( DWORD acces, BOOL bHandleMostenire,<br />
LPCTSTR nume_file_mapping);<br />
acces –indică modul de acces (citire <strong>şi</strong>/sau scriere)<br />
bHandleMostenire –indică dacă obiectul file-mapping va fi moştenit de eventualele procese<br />
fii<br />
nume_file_mapping –numele obiectului file-mapping<br />
LPVOID MapViewOfFile( HANDLE hFileMap, DWORD acces, DWORD offsetHigh,<br />
DWORD offsetLow, DWORD nrOctetiDeMapat);<br />
hFileMap –handle la obiectul file-mapping (handle returnat de CreateFileMapping)<br />
acces –indică modul de acces (citire <strong>şi</strong>/sau scriere)<br />
offsetHigh, offsetLow –compun offsetul pe 32 de biţi, a zonei de memorie de mapat<br />
nrOctetiDeMapat –numărul de octeţi de mapat<br />
BOOL UnmapViewOfFile(LPCVOID lpAdresaMapata);<br />
lpAdresaMapata –adresa de memorie unde începe maparea<br />
Pentru mai multe informatii legate de semnificaţia parametrilor <strong>şi</strong> prototipurile funcţiilor ce<br />
operarează cu memorie partajată sub <strong>Windows</strong>, se recomandă consultarea documentaţiei<br />
MSDN<br />
<strong>1.</strong>5.2. Semafoare <strong>Windows</strong><br />
Crearea unui obiect semafor windows de către un proces se face folosind apelul<br />
CreateSemaphore. Semaforul windows poate fi:<br />
� semafor cu nume, folosit pentru comunicarea între procesele de pe aceea<strong>şi</strong> ma<strong>şi</strong>nă. In<br />
acest scop, numele este elementul de identificare al semaforului de către toate procesele<br />
interesate, care folosesc acest nume în apelul OpenSemaphore.<br />
� semafor anonim, folosit pentru comunicarea între thread-urile aceluia<strong>şi</strong> proces. Elementul<br />
de identificare în această situaţie este constituit de handle-ul întors de funcţia<br />
CreateSemaphore, care este moştenit de thread-urile fii interesate.<br />
Prototipul CreateSemaphore este:<br />
HANDLE CreateSemaphore (LPSECURITY_ATTRIBUTES securitate,<br />
LONG valoareInitiala,<br />
LONG valoareMaxima,<br />
LPCTSTR numeSemafor);<br />
securitate –reprezintă un descriptor de securitate, care specifică dacă handlerul la<br />
semafor va fi moştenit în procesele fii; pentru valoarea NULL a acestui parametru, handlerul<br />
nu poate fi moştenit.