Что заставит WriteFile вернуть ошибку 38 (ERROR_HANDLE_EOF, Достигнут конец файла)? «Файл» в этом случае является почтовым ящиком. Моя программа работает так, что у меня есть процесс (работающий как служба Windows), который создает несколько дочерних процессов. Каждый ребенок открывает почтовый ящик с тем же именем, чтобы отправить информацию о статусе его родителю. В моем небольшом тестировании это работает нормально, но я вижу случаи, когда у меня есть несколько процессов
работает (как 16) я получаю эту ошибку. Приведенный ниже код показывает, как я открываю и пишу в почтовый ящик в дочернем процессе.
Возможно, потому что родитель недостаточно быстро читает почтовый ящик? Есть ли способ увеличить емкость почтового ящика, чтобы конец файла не был достигнут? Я действительно не вижу, как почтовый ящик может заполниться в любом случае, пока
так как есть место на диске (которого там много).
char gLocalSlotName[256]="\\\\.\\mailslot\\TMAgentSlot-ComputerName";
gAgentSlot = CreateFile(gLocalSlotName, GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
fResult = WriteFile(gAgentSlot, (char *)&ProcStat, sizeof(PROCSTAT), &cbWritten, (LPOVERLAPPED) NULL);
if (!fResult) {
derr = GetLastError();
printf("WriteFile error=%d", derr);
}