Wstęp System Windows ma wbudowany zestaw funkcji służących do komunikacji i współdzielenia danych między procesami. Ogólnie, operacje udostępniane prz

Podobne dokumenty
Pobieranie komunikatów GIF

5. Model komunikujących się procesów, komunikaty

Podręcznik użytkownika

Instrukcja konfiguracji funkcji skanowania

Gatesms.eu Mobilne Rozwiązania dla biznesu

Aplikacja Sieciowa wątki po stronie klienta

Sieci komputerowe i bazy danych

Kolejki FIFO (łącza nazwane)

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Serwery aplikacji. dr Radosław Matusik. radmat

INSTRUKCJA KONFIGURACJI KLIENTA POCZTOWEGO

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Instrukcja EQU Kantech

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

IIIIIIIIIIIIIIIMMIMMIII

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

PRZYJMOWANIE/WYDAWANIE KOLEKTORAMI BY CTI

Klient-Serwer Komunikacja przy pomocy gniazd

Ćwiczenie: JavaScript Cookies (3x45 minut)

Instrukcja konfiguracji programu Fakt z modułem lanfakt

Pliki. Operacje na plikach w Pascalu

Lekcja 8, 9 i 10. Konspekt lekcji Poczta elektroniczna. Materiał z podręcznika: Rozdział 5. Poczta elektroniczna

Akademia Techniczno-Humanistyczna w Bielsku-Białej

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

Jak wykorzystać Pulpit Zdalny w Windows 2003 Serwer do pracy z programem FAKT

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse

Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze sprawdzarkami RSowymi.

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

Sprawozdanie nr 4. Ewa Wojtanowska

Remote Quotation Protocol - opis

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Instrukcja obsługi. Helpdesk. Styczeń 2018

APLIKACJA SHAREPOINT

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

KURIER BY CTI. Instrukcja do programu DATA Informatycznej Zygmunt Wilder w Gliwicach WERSJA mgr Katarzyna Wilder DLA DPD

1. Proszę wejść na stronę: poczta.home.pl i zalogować się do nowej skrzynki za pomocą otrzymanych danych.

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

INSTRUKCJA UŻYTKOWNIKA

Instrukcja instalacji Control Expert 3.0

asix4 Podręcznik użytkownika Drajwer DDE Podręcznik użytkownika

Zarządzanie licencjami dla opcji Fiery na komputerze klienta

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Aplikacja npodpis do obsługi certyfikatu (instrukcja użytkownika)

Rejestr HKEY_LOCAL_MACHINE

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Instrukcja pozyskania identyfikatora - UID

Komunikator internetowy w C#

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Instrukcja aktywacji tokena w usłudze BPTP

Problemy techniczne. Jak uruchomić program Optivum dla wybranej licencji w przypadku, gdy jednostka posiada dwie licencje na używanie programu?

Aplikacja npodpis do obsługi certyfikatu

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

System DiLO. Opis interfejsu dostępowego v. 2.0

ZPKSoft Synchronizator

Aplikacje WWW - laboratorium

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

IPC: Kolejki komunikatów

Aplikacja npodpis do obsługi certyfikatu

Mini Produkcja by CTI. Instrukcja

Opcje Fiery1.3 pomoc (klient)

Instrukcja logowania do systemu e-bank EBS

Ćwiczenie 8 Implementacja podpisu cyfrowego opartego na standardzie X.509

Lab3 - Zastosowania protokołów przesyłania plików

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Certyfikat niekwalifikowany zaufany Certum Silver. Instalacja i użytkowanie pod Windows Vista. wersja 1.0 UNIZETO TECHNOLOGIES SA

Tablice (jedno i wielowymiarowe), łańcuchy znaków

EXSO-CORE - specyfikacja

Do wersji Warszawa,

eformatyzacja instrukcja obsługi

Odczyty 2.0 Spis treści

epuap Archiwizacja w Osobistym Składzie Dokumentów

JPK VAT wysyłka za pośrednictwem profilu zaufanego z systemu epuap

INSTRUKCJA OBSŁUGI DLA SIECI

asix5 Podręcznik użytkownika CZAZ - drajwer do komunikacji z urządzeniami CZAZ-U oraz CZAZ-UM

Mechanizmy pracy równoległej. Jarosław Kuchta

Platforma e-learningowa UO strefa studenta

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

Internetowy serwis Era mail Aplikacja sieci Web

KANCELARYJNY SYSTEM PODATKOWY

Wykład PASCAL - Pliki tekstowe

Telesprzedaż by CTI Instrukcja

Praca w sieci równorzędnej

ShopGold Integrator by CTI. Instrukcja

timetrack Przewodnik Użytkownika timetrack Najważniejsze Funkcje

Transkrypt:

Systemy operacyjne Laboratorium Ćwiczenie 4 Synchronizacja procesów Komunikacja między procesami

Wstęp System Windows ma wbudowany zestaw funkcji służących do komunikacji i współdzielenia danych między procesami. Ogólnie, operacje udostępniane przez te funkcje nazywane są komunikacją między procesami (interprocess communications - IPC). Oprócz ułatwiania podziału pracy pomiędzy kilka wyspecjalizowanych procesów, niektóre formy komunikacji między procesami potrafią rozdzielić obciążenie obliczeniami pomiędzy komputery współpracujące ze sobą w sieci. Zwykle współpracujące i komunikujące się aplikacje są określane jako klient i serwer. Klient jest aplikacją lub procesem, który żąda pewnej usługi od innego procesu. Serwer jest aplikacją lub procesem, który odpowiada na żądanie klienta. Wiele aplikacji jest zarówno klientem i serwerem, w zależności od sytuacji. Na przykład aplikacja przetwarzająca dokumenty tekstowe może być klientem żądającym tabeli podsumowującej koszty produkcji od arkusza kalkulacyjnego, który jest serwerem. Arkusz kalkulacyjny może być klientem żądającym od aplikacji zarządzającej magazynem danych o stanie zapasów. Potoki nazwane Potok jest mechanizmem komunikacji między procesami. Są dwa typy potoków: potok bez nazwy służy do jednokierunkowej wymiany danych między procesami na komputerze lokalnym; używając potoku bez nazwy nie można komunikować się przez sieć potok nazwany służy do dwukierunkowej wymiany danych między procesami; serwer potoku nazwanego może komunikować się z klientami zarówno na komputerze lokalnym jak i na komputerze zdalnym Podczas tworzenia potoku nazwanego serwer określa jego nazwę i poziom zabezpieczeń - nazwy użytkowników lub grup użytkowników, którzy mogą korzystać z potoku. Z punktu widzenia klienta, potok jest plikiem, do którego można zapisywać i czytać dane. Operację zapisu do potoku nazwanego może rozpocząć zarówno klient jak i serwer. System Windows posiada także drugi, znacznie prostszy sposób wykorzystania potoków. Transakcja potokiem nazwanym jest sposobem komunikacji między serwerem a klientem, który łączy operację zapisu i odczytu w pojedynczą operację sieciową. Transakcje zwiększają wydajność komunikacji między klientem, a serwerem na komputerze zdalnym. W tym trybie pracy klient rozpoczyna komunikację zapisem wiadomości dla serwera, po czym odczytuje odpowiedź. Transakcja realizowana jest przez wywołanie jednej funkcji systemu. Serwer potoku nazwanego musi być uruchomiony na komputerze z systemem operacyjnym Windows NT (może być Windows NT Workstation). Serwer potoku bez nazwy może pracować z systemem Windows 95. Skrzynki pocztowe Skrzynka pocztowa jest mechanizmem jednokierunkowej wymiany danych między procesami. Dowolny proces może utworzyć skrzynkę pocztową i stać się serwerem skrzynki pocztowej. Inny proces, zwany klientem skrzynki pocztowej, może uzyskać dostęp do skrzynki pocztowej poprzez jej nazwę i przesyłać wiadomości do serwera. Proces może być jednocześnie serwerem i klientem skrzynki pocztowej, więc możliwa jest dwukierunkowa komunikacja, ale przy użyciu dwóch skrzynek pocztowych. Przychodzące wiadomości są zawsze dołączane do skrzynki pocztowej, która przechowuje je dotąd, aż serwer je przeczyta. 2

Skrzynki pocztowe są podobne do potoków nazwanych, ale ich obsługa jest uproszczona (wydajny serwer potoku nazwanego jest procesem wielowątkowym) i dodano możliwość rozgłaszania wiadomości do wszystkich komputerów w domenie lub grupie roboczej klienta. Klient skrzynki pocztowej może wysłać wiadomość do skrzynki na komputerze lokalnym, do skrzynki na innym komputerze lub do wszystkich skrzynek o takiej samej nazwie na wszystkich komputerach w domenie lub grupie roboczej. Wiadomości rozgłaszane nie mogą być dłuższe niż 400 bajtów. Rozmiar wiadomości wysyłanych do pojedynczej skrzynki pocztowej jest ograniczony przez serwer podczas tworzenia skrzynki - wiadomości takie mogą być nieograniczonego rozmiaru. Serwer skrzynki pocztowej może pracować z systemem Windows 95. Meldunki Procesy, które utworzyły okna, mogą się komunikować za pomocą meldunków. Meldunki wykorzystywane do komunikacji między procesami powinny być zarejestrowane w systemie przy użyciu funkcji RegisterWindowMessage. Bezpieczeństwo komunikacji między procesami W Windows 95 nie istnieją mechanizmy zabezpieczające przed niepowołanym dostępem do skrzynki pocztowej lub potoku bez nazwy. Windows NT ma wbudowane takie mechanizmy. Serwer tworząc potok lub skrzynkę pocztową określa listę użytkowników, lub listę grup użytkowników, którzy mają zapewniony dostęp do powstającego obiektu komunikacji. Serwer ustawia również prawa użytkowników, pozwalając im na zapis lub odczyt. Klient próbujący uzyskać dostęp do potoku lub skrzynki pocztowej poddawany jest weryfikacji. Klient jest procesem uruchomionym na komputerze, na którym zalogował się pewien użytkownik. Zarówno w Windows 95 jak i Windows NT podczas logowania podaje się nazwę użytkownika i hasło. System odbierając żądanie dostępu do obiektu komunikacji sprawdza, czy użytkownik komputera, na którym pracuje klient, znajduje się na liście uprawnionych osób, określonej przez serwer. Jeżeli użytkownika nie ma na liście, lub hasło jest nieprawidłowe, system nie przekaże serwerowi żądania wykonania usługi. Transakcja potokiem nazwanym lub przesłanie wiadomości do skrzynki pocztowej zakończy się błędem Brak dostępu. Synchronizacja procesów Do synchronizacji procesów służą te same obiekty i funkcje blokujące, co do synchronizacji wątków, za wyjątkiem sekcji krytycznej. Ten obiekt służy wyłącznie do synchronizacji wątków. Obiekty używane do synchronizacji procesów muszą posiadać nazwy. Nazwa musi być unikalna dla danej klasy obiektów synchronizacji, tzn. mogą istnieć dwa zdarzenia o tej samej nazwie, ale próba utworzenia semafora o nazwie identycznej z nazwą zdarzeń nie powiedzie się. W nazwie nie może wystąpić znak \. W Windows 95 i Windows NT 4.0 obiekty synchronizacji używane są do zarządzania procesami tylko na komputerze lokalnym. 3

Klasy i funkcje wykorzystane w ćwiczeniu Potoki nazwane - klient Następująca funkcja realizuje transakcję potokiem nazwanym int CallNamedPipe(char * Nazwa, void * Wiad, long RozmWiad, void * Odp, long RozmBufOdp, unsigned long *RozmOdp, long Timeout); parametr Nazwa Wiad RozmWiad Odp RozmBufOdp RozmOdp Timeout znaczenie nazwa potoku nazwanego, musi być postaci \\[nazwa komputera]\pipe\[nazwa potoku] jeżeli klient i serwer są na tym samym komputerze, [nazwa komputera] może być zastąpiona przez kropkę wskaźnik do bufora przechowującego wiadomość do wysłania, mogą to być dowolne dane, które potrafi zinterpretować serwer rozmiar wiadomości w bajtach wskaźnik do bufora przygotowanego na odpowiedź od serwera rozmiar bufora przygotowanego na odpowiedź w bajtach wskaźnik do zmiennej, w której funkcja zapisze rzeczywisty rozmiar odpowiedzi zwróconej przez serwer czas w milisekundach, przez który funkcja będzie czekać aż serwer przygotuje się do komunikacji z klientem, najlepiej użyć stałej NMPWAIT_USE_DEFAULT_WAIT, która poleca funkcji czekać przez czas określony przez serwer podczas tworzenia potoku Jeżeli transakcja powiedzie się, funkcja zwróci liczbę różną od zera. Skrzynki pocztowe - serwer Następująca funkcja używana jest przez serwer skrzynki pocztowej do utworzenia skrzynki HANDLE CreateMailslot(char *Nazwa, long MaksRozmWiad, long Timeout, SECUTITY_ATTRIBUTES * Zabezpieczenia); parametr Nazwa MaksRozmWiad Timeout Zabezpieczenia znaczenie nazwa skrzynki pocztowej, musi być postaci \\[nazwa komputera]\mailslot\[scieżka]\[nazwa] serwer nie może utworzyć skrzynki pocztowej na komputerze zdalnym, więc [nazwa komputera] musi być zastąpiona przez kropkę, [ścieżka] może być dowolną ścieżką (tak jak w przypadku plików), [nazwa] podobnie jak w plikach może zawierać rozszerzenie po kropce maksymalny rozmiar wiadomości w bajtach, aby określić, że wiadomość może mieć dowolny rozmiar należy podać 0 czas w milisekundach, przez który operacja odczytu będzie czekać na pojawienie się wiadomości w skrzynce, dwie wartości mają specjale znaczenie: 0 funkcja odczytująca wróci natychmiast, gdy nie będzie wiadomości MAILSLOT_WAIT_FOREVER funkcja czeka, aż w skrzynce pojawi się wiadomość w Windows 95 wartość 0, w Windows NT określa nazwy użytkowników lub grup użytkowników, którzy mogą zapisywać wiadomości do skrzynki pocztowej oraz inne rodzaje ograniczeń dostępu do skrzynki 4

Funkcja zwraca identyfikator skrzynki. Jednym z błędów Windows 95 jest obcinanie nazw skrzynek pocztowych do formatu 8.3. Jeżeli serwer na komputerze z systemem operacyjnym Windows 95 nazwie skrzynkę \\.\mailslot\fd3\systemy_operacyjne\lab.sprawozdania, to system zamieni tę nazwę na \\.\mailslot\fd3\systemy_\lab.spr. Klient na komputerze z Windows NT używający poprawnej nazwy nie będzie mógł połączyć się z serwerem. Klient na komputerze z Windows 95 połączy się, ponieważ w jego przypadku nazwa skrzynki pocztowej zostanie obcięta do formatu 8.3. Podobny problem wystąpi, jeżeli serwer pracujący z Windows NT utworzy skrzynkę z nazwami dłuższymi niż 8 znaków. Żaden klient pracujący z Windows 95 nie prześle wiadomości do takiej skrzynki. Rozwiązaniem problemu jest używanie nazw nie dłuższych niż 8 znaków i trzyznakowych rozszerzeń. Serwer używa poniższej funkcji do sprawdzenia, czy w skrzynce są wiadomości int GetMailslotInfo(HANDLE id, unsigned long *pmaksrozmwiad, unsigned long *prozmnast, unsigned long *pliczbawiad, unsigned long *ptimeout); parametr znaczenie id pmaksrozmwiad prozmnast pliczbawiad ptimeout identyfikator skrzynki zwrócony przez CreateMailslot wskaźnik do zmiennej, która otrzyma maksymalny rozmiar wiadomości w bajtach wskaźnik do zmiennej, która otrzyma rozmiar następnej wiadomości oczekującej w skrzynce na odczytanie wskaźnik do zmiennej, która otrzyma liczbę wiadomości oczekujących w skrzynce na odczytanie wskaźnik do zmiennej, która otrzyma czas w milisekundach, przez który operacja odczytu będzie czekać na pojawienie się wiadomości w skrzynce Zamiast wskaźników można podać wartość 0, funkcja nie zwróci wtedy tak określonego parametru. Serwer odczytuje wiadomości używając funkcji składowej Read klasy CFile. Skrzynki pocztowe - klient Z punktu widzenia klienta skrzynka pocztowa jest plikiem. Do operacji na plikach można użyć klasy CFile. Jeżeli klient chce rozgłosić wiadomość (wysłać ją do wszystkich komputerów w domenie lub grupie roboczej), to jako nazwę komputera trzeba podać gwiazdkę. Należy pamiętać o ograniczeniu rozmiaru rozgłaszanych wiadomości - długość nie może przekroczyć 400 bajtów. Meldunki Następująca funkcja używana jest do rejestracji meldunku w systemie. UINT RegisterWindowMessage(const char *nazwa); Funkcja zwraca kod meldunku. Nazwa meldunku jest dowolnym ciągiem znaków. Jeżeli dwa różne procesy rejestrują tę samą nazwę, funkcja zwróci identyczny kod meldunku. 5

Pliki Pliki i operacje na plikach opisuje klasa CFile. CFile(const char * nazwa, unsigned int tryb); Konstruktor, tworzy obiekt w podanym trybie. Klient skrzynki pocztowej jako tryb podaje CFile::modeWrite + CFile::shareDenyNone. CFile(int hplik); Konstruktor, wiąże z obiektem istniejący plik. Parametrem jest identyfikator pliku, taki jak zwraca funkcja CreateMailslot Read(void * bufor, unsigned int n); Funkcja czytająca n bajtów z pliku, pierwszy parametr jest wskaźnikiem do bufora na odczytane dane. Funkcja zwraca liczbę przeczytanych bajtów Write(void * bufor, unsigned int n); funkcja zapisująca dane do pliku, pierwszy parametr jest wskaźnikiem do bufora zawierającego zapisywane dane, drugi określa ile bajtów funkcja powinna zapisać 6

Konstrukcja programu Na komputerze podłączonym do sieci uruchomiony jest serwer potoku nazwanego i serwer skrzynki pocztowej. Serwer potoku nazwanego przechowuje w tablicy listę skrzynek pocztowych. Aby skrzynka została wpisana na listę musi zostać zarejestrowana przez klienta potoku nazwanego. Klient potoku nazwanego może uzyskać od serwera listę zarejestrowanych serwerów skrzynek pocztowych. Komputer_1 Klient potoku nazwanego Serwer skrzynki pocztowej Klient skrzynki pocztowej Komputer_2 Klient potoku nazwanego Serwer skrzynki pocztowej Klient skrzynki pocztowej Komputer_0 Serwer potoku nazwanego Serwer skrzynki pocztowej Ilustracja 1 Wymiana danych między procesami Należy napisać klienta potoku nazwanego, serwer skrzynki pocztowej i klienta skrzynki pocztowej. Zadaniem klienta potoku nazwanego jest zarejestrować skrzynkę pocztową obsługiwaną przez serwer i uzyskać od serwera potoku listę skrzynek pocztowych. Następnie klient skrzynki pocztowej powinien wysłać do każdej skrzynki pocztowej z listy przysłanej przez serwer potoku nazwanego wiadomości postaci [użytkownik]@[nazwa komputera]:[dowolny tekst] Po wysłaniu wszystkich wiadomości utworzyć obiekt synchronizacji typu zdarzenie o nazwie koniec ćwiczenia i ustawić jego stan na dostępny. Dołączyć obsługę globalnego meldunku o nazwie WM_SYSTOPER_LAB4. Polecenia rozpoznawane przez serwer potoku nazwanego: polecenie opis GET Serwer zwróci listę zarejestrowanych skrzynek pocztowych w postaci: [liczba skrzynek] [skrzynka 1]... [skrzynka n] PUT [nazwa skrzynki] Serwer rejestruje skrzynkę pocztową w tablicy, zwraca numer wiersza. Nazwa skrzynki pocztowej musi być prawidłową nazwą sieciową, nie może być kropki zamiast nazwy komputera Przed rozpoczęciem ćwiczenia należy uruchomić program tester.exe, który sprawdza poprawność wykonania ćwiczenia. 7

Przebieg ćwiczenia W dostępnym na laboratorium szablonie znajdują się etykiety TODO: które wskazują miejsca które należy uzupełnić. Okno główne aplikacji wygląda jak pokazuje poniższa ilustracja Edit Control Combo Box Button Ilustracja 2 Okno główne programu Obiekt typu Edit Control identyfikuje zmienna m_ekran, listę - zmienna m_lista. Do wyświetlania tekstu należy użyć funkcji m_ekran.setwindowtext(tekst); Przejście do nowej linii odbywa się przez \r\n. W funkcji OnInitDialog klasy okna głównego utworzyć skrzynkę pocztową (Skrzynki pocztowe - serwer) i zarejestrować ją na liście skrzynek za pomocą transakcji potokiem nazwanym (Potoki nazwane - klient). Nazwa potoku \\\\.\\pipe\\sysopnp. Identyfikator skrzynki zapamiętać w zmiennej składowej klasy opisującej okno. Utworzoną skrzynkę pocztową można obsługiwać na dwa sposoby: utworzyć wątek sprawdzający, czy przyszły nowe wiadomości, lub sprawdzać stan skrzynki co pewien okres. W celu użycia drugiego sposobu w funkcji OnInitDialog klasy okna głównego uruchamiany jest czasomierz wysyłający meldunki co 0,5 sekundy. W funkcji OnTimer sprawdzić należy, czy jest nowa wiadomość w skrzynce (Skrzynki pocztowe - klient) i jeżeli jest odczytać ją i wyświetlić. Po wciśnięciu przycisku Odśwież należy za pomocą transakcji potokiem nazwanym pobrać listę zarejestrowanych skrzynek pocztowych ( funcja OnBnClickedOdswiez() ). Dołączanie elementu do listy rozwijanej typu Combo Box odbywa się przy wykorzystaniu funkcji m_lista.addstring(...). Po wciśnięciu przycisku Wyślij wiadomość ( funcja OnBnClickedWyslij() ) należy odczytać z listy rozwijanej wybraną skrzynkę pocztową i wysłać do niej wiadomość. Odczytanie wybranego elementu z listy jest dostępne przez funkcję m_lista.getwindowtext(...); W celu zarejestrowania globalnego meldunku dodano: static UINT NEAR WM_LAB4 = RegisterWindowMessage("WM_SYSTOPER_LAB4"); oraz utworzono funkcję OnWiadomosc obsługującą meldunek (tak jak w Ćwiczeniu 3) związaną ze zmienną WM_LAB4 za pomocą makrodefinicji ON_REGISTERED_MESSAGE (tak jak w Ćwiczeniu 3). 8

Wciśnięcie przycisku Zaliczamy ( funkcja OnBnClickedZaliczamy() ) powinno spowodować utworzenie obiektu synchronizacji typu zdarzenie o nazwie koniec ćwiczenia i ustawienie jego stanu na dostępny. Okno główne otrzyma wtedy od programu tester.exe meldunek zawierający kod, który należy umieścić w sprawozdaniu. Skrzynki pocztowej można nie zamykać, system zamknie ją automatycznie z chwilą zakończenia głównego wątku aplikacji. 9

Sprawozdanie z ćwiczenia Meldunek WM_SYSTOPER_LAB4 przekazuje procesowi 32-bitowe parametry wparam oraz lparam. W sprawozdaniu umieścić liczę, którą powstanie przez połączenie ze sobą szesnastkowych wartości tych parametrów, np. wparam=0x1234, lparam=0x567 w sprawozdaniu umieszczamy 0000123400000567 Pytania na wejściówkę Wymienić mechanizmy komunikacji między procesami. Omówić potok nazwany (format nazwy, rodzaje operacji, ograniczenia serwera). Omówić skrzynki pocztowe (format nazwy, operacje serwera, operacje klienta, ograniczenia) Omówić bezpieczeństwo komunikacji między procesami. Omówić obiekty służące do synchronizacji procesów. Literatura: Win32 Software Development Kit: Processes and Threads, Synchronization. Mailslots, Pipes Security 10