ВУЗ:
Составители:
Функция FlushViewOfFile копирует указанное количество байт представления файла в памяти в физический файл, не
ожидая пока произойдет операция кэшированной записи:
3. Завершение работы с отображениями. Каждый процесс вызывает функцию UnmapViewOfFile, чтобы сделать недей-
ствительным указатель на отображенную память. Этим уничтожается сопоставление адресного пространства процесса объ-
екту-отображению файла. Если это необходимо, функция UnmapViewOfFile также копирует измененные страницы памяти
на диск.
Когда все процессы завершат использование объекта-отображения файла (вызвав предыдущую функцию), они должны
закрыть дескрипторы объектов-отображений с помощью функции CloseHandle:
CloseHandle(hMapFile);
Почтовые ящики (mailslot)
Почтовые ящики обеспечивают только однонаправленные соединения. Каждый процесс, который создает почтовый
ящик, является "сервером почтовых ящиков" (mailslot server). Другие процессы, называемые "клиентами почтовых ящиков"
(mailslot clients), посылают сообщения серверу, записывая их в почтовый ящик. Входящие сообщения всегда дописываются в
почтовый ящик и сохраняются до тех пор, пока сервер их не прочтет. Каждый процесс может одновременно быть и серве-
ром, и клиентом почтовых ящиков, создавая, таким образом, двунаправленные коммуникации между процессами.
Клиент может посылать сообщения на почтовый ящик, расположенный на том же компьютере, на компьютере в сети,
или на все почтовые ящики с одним именем всем компьютерам выбранного домена. При этом широковещательное сообще-
ние, транслируемое по домену, не может быть более 400 байт. В остальных случаях размер сообщения ограничивается толь-
ко при создании почтового ящика сервером.
Почтовые ящики предлагают легкий путь для обмена короткими сообщениями, позволяя при этом вести передачу и по
локальной сети, в том числе и по всему домену.
Mailslot является псевдофайлом, находящимся в памяти, и следует использовать стандартные функции для работы с
файлами, чтобы получить доступ к нему. Данные в почтовом ящике могут быть в любой форме – их интерпретацией занима-
ется прикладная программа, но их общий объем не должен превышать 64 Кб. Однако, в отличие от дисковых файлов, mail-
slot’ы являются временными – когда все дескрипторы почтового ящика закрыты, он и все его данные удаляются. Заметим,
что все почтовые ящики являются локальными по отношению к создавшему их процессу; процесс не может создать удален-
ный mailslot.
Сообщения меньше чем 425 байт передаются с использованием дейтаграмм. Сообщения, больше чем 426 байт, исполь-
зуют передачу с установлением логического соединения на основе SMB-сеансов. Передачи с установлением соединения до-
пускают только индивидуальную передачу от одного клиента к одному серверу. Следовательно, теряется возможность ши-
роковещательной трансляции сообщений от одного клиента ко многим серверам. Windows не поддерживает сообщения раз-
мером в 425 или 426 байт.
Когда процесс создает почтовый ящик, имя последнего должно иметь следующую форму:
\\.\mailslot\[path]name
Например:
\\.\mailslot\taxes\bobs_comments
\\.\mailslot\taxes\petes_comments
\\.\mailslot\taxes\sues_comments
Если необходимо отправить сообщение в почтовый ящик на удаленный компьютер, то следует воспользоваться NET-
BIOS-именем:
\\ComputerName\mailslot\[path]name
Чтобы передать сообщение всем mailslot’ам с указанным именем внутри домена, понадобится NETBIOS-имя домена:
\\DomainName\mailslot\[path]name
Для главного домена операционной системы (домен, в котором находится рабочая станция):
\\*\mailslot\[path]name
Клиенты и серверы, использующие почтовые ящики, при работе с ними должны пользоваться функциями, представ-
ленными в табл. 7.
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »