Программное обеспечение САПР. Операционные системы. Майстренко Н.В - 35 стр.

UptoLike

7. Функции почтовых ящиков
Функция Описание
Серверов
CreateMailslot
Создает почтовый ящик и возвращает его де-
скриптор
GetMailslotInfo
Извлекает максимальный размер сообщения,
размер почтового ящика, размер следующего
сообщения в ящике, количество сообщений и
время ожидания сообщения при выполнении
операции чтения
SetMailslotInfo
Изменение таймаута при чтении из почтово-
го ящика
DuplicateHandle Дублирование дескриптора почтового ящика
ReadFile, ReadFileEx Считывание сообщений из почтового ящика
GetFileTime
Получение даты и времени создания
mailslot’а
SetFileTime
Установка даты и времени создания
mailslot’а
GetHandleInformation
Получение свойств дескриптора почтового
ящика
SetHandleInformation
Установка свойств дескриптора почтового
ящика
Клиентов
CloseHandle
Закрывает дескриптор почтового ящика для
клиентского процесса
CreateFile
Создает дескриптор почтового ящика для
клиентского процесса
DuplicateHandle Дублирование дескриптора почтового ящика
WriteFile, WriteFileEx Запись сообщений в почтовый ящик
Рассмотрим последовательно все операции, необходимые для корректной работы с почтовыми ящиками.
1. Создание почтового ящика. Операция выполняется процессом сервера с использованием функции CreateMailslot:
HANDLE CreateMailslot(
LPCTSTR lpName, // Имя почтового ящика.
DWORD nMaxMessageSize, // Максимальный размер сообщения.
DWORD lReadTimeout, // Таймаут операции чтения.
LPSECURITY_ATTRIBUTES // Опции наследования и
lpSecurityAttributes // безопасности.
);
2. Запись сообщений в почтовый ящик производится аналогично записи в стандартный дисковый файл. Следующий
код иллюстрирует, как с помощью функций CreateFile, WriteFile и CloseHandle можно поместить сообщение в почтовый
ящик:
LPSTR lpszMessage = "Сообщение для sample_mailslot в текущем домене.";
BOOL fResult;
HANDLE hFile;
DWORD cbWritten;
// С помощью функции CreateFile клиент открывает mailslot для записи сообщений
hFile = CreateFile("\\\\*\\mailslot\\sample_mailslot",
GENERIC_WRITE,
FILE_SHARE_READ, // Требуется для записи в mailslot
(LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
if (hFile == INVALID_HANDLE_VALUE)