Dwa 32-bitowe procesy systemu Windows współdzielą jedną stronę pamięci. System tworzy współdzieloną pamięć poprzez utworzenie wspólnej tablicy stron. Procesy nadal mają różne katalogi stron. Podać adres liniowy współdzielonego obszaru pamięci dla obydwu procesów, jeżeli numer deskryptora strony we wspólnej tablicy stron jest równy 0x200. numer wspólnej tablicy stron w katalogu stron procesu pierwszego jest równy 0x4 o[ numer wspólnej tablicy stron w katalogu stron procesu drugiego jest równy 0x71. Jedna strona zawiera bajty od 0 do 4095 (od 0 do 0xf f f szesnastkowo).
od |
00000000000010000000000001000000 |
do |
11111111111110000000000001000000 |
od |
00000000000010000000000001110001 |
do |
11111111111110000000000001110001 |
Odpowiedź:
Proces 1:
Proces 2:
Serwer skrzynki pocztowej pracuje na komputerze o nazwie Kompl, klient na komputerze o nazwie Komp2. Podać w jaki sposób serwer może utworzyć skrzynkę pocztową o nazwie skrzynka .net z parametrami: Maksymalny rozmiar wiadomości 4096
Timeout 1000 ms
Wartość parametru Zabezpieczenia 0
W jaki sposób klient może zapisać do utworzonej skrzynki pocztowej tekst "Wiadomość\n\0".
Odpowiedź:
CreateMailslot("\\\\A\mailslot\\skrzynka.net ",4096,1000,0);
serwer:
CFile plik("\\\\kompl\\mailslot\\skrzynka.net",CFile::modeWrite | CFile::shareDenyNone); char wiadomosc[50]; strcpy(wiadomosc,"login@komp2:Wiadomość\n\0”); plik.Write(wiadomosc,strlen(wiadomosc)+l);
klient:
Można użyć funkcji:
HANDLE CreateMailslot(char *Nazwa, long MaksRozmWiad,
long Timeout, SECUTITY_ATTRIBUTES * Zabezpieczenia);
FILE *fopen(char *nazwa, char *tryb);
int fprintf(FILE *plik, char *format [,argument] ...);