28.01.2013 Views

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

SHOW MORE
SHOW LESS

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> - 6 -<br />

hFisier –handle-ul fisierului în care se va scrie<br />

lpBuf –pointer la datele care se vor scrie în fi<strong>şi</strong>er<br />

nNrOctetiDeScris –număr de octeţi de scris<br />

lpNumarOctetiScrisi –pointer la numărul de octeţi scri<strong>şi</strong> efectiv<br />

lpStructIO –de obicei are valoarea NULL<br />

BOOL ReadFile ( HANDLE hFisier, LPCVOID lpBuf, DWORD nNrOctetiDeCitit,<br />

LPDWORD lpNumarOctetiCititi, LPOVERLAPPED lpStructIO);<br />

hFisier –handle-ul fisierului din care se va citi<br />

lpBuf –pointer la un bufer în care se vor citi datele<br />

nNrOctetiDeCitit –număr de octeţi de citit<br />

lpNumarOctetiCititi –pointer la numărul de octeţi citiţi efectiv<br />

lpStructIO –de obicei are valoarea NULL<br />

BOOL CloseHandle ( HANDLE hObject );<br />

hObject –handle-ul la un obiect deschis<br />

<strong>1.</strong>2.2. Funcţii de aşteptare a unor evenimente<br />

Win32 API oferă un set de funcţii de aşteptare pentru a permite unui program să î<strong>şi</strong> suspende<br />

temporar execuţia în aşteptarea unui eveniment. Funcţiile de aşteptare blochează execuţia<br />

programului până când criteriul specificat a fost îndeplinit. Tipul funcţiei de aşteptare<br />

determină criteriul utilizat. În timpul aşteptării procesul consumă foarte puţine resurse sistem,<br />

fiind vorba de o aşteptare pasivă – intrare în sleep. Există trei tipuri de funcţii de aşteptare:<br />

<strong>1.</strong> single-object: WaitForSingleObject, SignalObjectAndWait,<br />

WaitForSingleObjectEx<br />

2. multiple-object: WaitForMultipleObjects, WaitForMultipleObjectsEx,<br />

MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx.<br />

3. alertable: MsgWaitForMultipleObjectsEx, SignalObjectAndWait,<br />

WaitForMultipleObjectsEx, WaitForSingleObjectEx<br />

Tabelul următor prezintă pe scurt rolurile <strong>prin</strong>cipalelor funcţii de aşteptare.<br />

Funcţie wait Descriere<br />

WaitForSingleObject() Aşteaptă după un anumit obiect ca acesta să<br />

ajungă în starea setat (de exemplu<br />

terminarea unui proces sau valoarea pozitiva<br />

a unui semafor).<br />

WaitForSingleObjectEx() Ca <strong>şi</strong> precedentul, plus aşteptarea a altor<br />

două evenimente: terminarea unei operaţii<br />

de intrare ie<strong>şi</strong>re, sau sosirea unui apel<br />

asincron în threadul curent.<br />

WaitForMultipleObjects() Aşteaptă după o mulţime de obiecte. Ie<strong>şi</strong>rea<br />

din aşteptare se poate face fie când unul<br />

dintre obiecte este setat, fie când toate<br />

obiectele ajung în starea setat.<br />

WaitForMultipleObjectsEx() Ca <strong>şi</strong> precedentul, plus aşteptarea celor două<br />

evenimente specificate în cazul funcţiei<br />

WaitForSingleObjectEx.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!