Я прочитал все, что я могу найти о почтовых ящиках, и мне все еще остается проблема с записью на почтовый ящик, который был открыт для чтения сервером почтового сервера на другом компьютере.Напишите на mailslot на удаленном компьютере, используя Delphi
У меня нет проблемы с почтовыми ящиками на компьютер. Например, если я пытаюсь писать в Mailslot на локальном компьютере, как это:
var
sMsg: string;
iBytes: DWORD;
begin
SlotName := '\\.\mailslot\testslot';
Handle := CreateFile(PChar(SlotName), GENERIC_WRITE, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := WriteFile(Handle, sMsg[1], Length(sMsg), iBytes, nil);
end;
CreateFile
проваливается с файлом, не существует код ошибки, если программа сервера почтового слота не создала почтовый слот.
Однако, если я передаю что-то вроде этого \\MYSERVER\mailslot\testslot
в качестве имени почтового ящика, он всегда возвращает действительный дескриптор файла. Даже если имя компьютера недействительно, оно все равно возвращает дескриптор файла, а затем WriteFile
также преуспевает.
Я надеялся, что CreateFile
потерпит неудачу, если либо имя пользователя неверно, либо сервер почтового ящика на этом компьютере не создал почтовый ящик, но это, похоже, не так, кажется, что это происходит только при написании mailslot на локальном компьютере.
Может кто-нибудь просветить меня?
Я повторно пометил ваш вопрос, потому что это вопрос Windows API. –