Для создания сервера почтового слота используется функция:
HANDLE CreateMailslot
{
LPCTSTR lpName, // имя
DWORD nMaxMessageSize, // максимальный размер
DWORD lReadTimeout, // интервал-тайм аута чтения
LPSECURITY_ATTRIBUTES lpSecurityAttributes // информация о безопасности
);
При успешном выполнении мы получим указатель при неуспешном INVALID_HANDLE_VALUE. Обратите внимание на то, что имя должно быть уникальное. Пробуем:
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{
HANDLE hsl=NULL;
hsl= CreateMailslot("\\\\.\\mailslot\\hello",0,MAILSLOT_WAIT_FOREVER,NULL);
if (hsl!=INVALID_HANDLE_VALUE)
{
cout << "Ok Created mailslot" << endl;
}
}
Имя я указал по правилам, дальше идет размер 0 говорить о том, что размер не лимитируется и дальше, что таймауты не ограничены. Запускаем и смотрим

Получилось. Давайте дадим умышлено неправильное имя для этого слота:
hsl= CreateMailslot("\\\\.mailslot\\hello",0,MAILSLOT_WAIT_FOREVER,NULL);
Теперь не получается. После создания можно установить операцию чтения. Так как мы указали что ожидание будет до получения информации программа замрет.
if (hsl!=INVALID_HANDLE_VALUE)
{
cout << "Ok Created mailslot" << endl;
char buffer[255];
DWORD nBytesRead;
if (ReadFile(hsl, &buffer, 255, &nBytesRead, NULL)!=0)
{
cout << "Ok read" << endl;
cout << buffer << endl;
}
}
int i;
cin >> i;