Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с Mailslot

73K
20 февраля 2012 года
bolt7
33 / / 20.02.2012
Здравствуйте. У меня вот такая ситуация.
Создаю почтовый ящик в 1 процессе
 
Код:
HANDLE hMailslot = CreateMailslot((LPSTR)_mailslot_name, 0, MAILSLOT_WAIT_FOREVER, NULL);

Открываю его во втором процессе и записываю данные
 
Код:
HANDLE hMslot=CreateFile(_mailslot_name, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(g_hMslot, send_buf, cbSize,&cbWritten, NULL);

Принимаю в процессе
 
Код:
if (GetMailslotInfo(hMailslot, NULL,&cbMessages, &lpMessageCount, NULL) == TRUE) {
if (cbMessages != MAILSLOT_NO_MESSAGE) {
ReadFile(hMailslot,recv_buf, cbMessages, &cbRead, NULL);
}
}

Проблема в том, что lpMessageCount=3, то есть я послал 1 сообщение, а пришло 3 абсолютно одинаковых?! Цикла отправки нет, отправляется только 1 раз, и процесс 2го типа только 1. Целый день сижу не могу понять как так, одна WriteFile, пишет сразу 3 копии, и почему именно 3... Может что то с флагами напутал. Может подскажет кто то идею, буду благодарен.





73K
20 февраля 2012 года
bolt7
33 / / 20.02.2012
нашел причину, это из-за имени?!
если отправляю по локальному имени
 
Код:
\\\\.\\mailslot\\_mailslot_1

все отлично - 1 сообщение
если через имя компьютера
 
Код:
\\\\BEST-RVHY1BPDDW\\mailslot\\_mailslot_1

отправляется 3 копии!!!
мне нужно посылать имено на другой компьютер в сети, а такое дублирывание совсем не к чему...
73K
20 февраля 2012 года
bolt7
33 / / 20.02.2012
все разобрался, это было из за трех сетевых подключений, отключил привязку протокола у 2х их них, теперь все ок, по 1му сообщению.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог