· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› WSAEFAULT

Посл.отвђт Сообщенiе


Дата: Май 28, 2004 11:56:50 · Поправил: PRO

У меня такая проблема. При каждом вызове send или recv появляется ошибка WSAEFAULT. Например:
invoke send,hsock,addr peer,178,0
где peer - данные длиной 178 байт. В справочнике от Сей написано: WSAEFAULT бывает тогда, когда "The buf argument is not totally contained in a valid part of the user address space". Нет, переменная peer полностью содержится в секции .data. Ошибка возникает даже тогда, когда в размере данных для передачи ставлю 1. Объясните, пожалуйста, отчего такое может быть.


Дата: Май 28, 2004 18:24:28

Нужно смотреть в отладчике. В первую очередь проверить указатель на peer и сам буфер в секции .DATA


Дата: Май 28, 2004 21:16:01

Нет, я вместо peer могу вписать любые другие данные, строку. Одна и та же ошибка. Я узнал, что появляется именно ошибка WSAEFAULT именно из отладчика(OllyDebug).


Дата: Май 28, 2004 21:19:35

Приаттачте сюда этот код, если не очень большой.


Дата: Май 28, 2004 21:30:22

Вот код

907966392__rpc.zip


Дата: Май 28, 2004 22:45:42 · Поправил: Quantum

PRO
Этот код у меня работает и не возвращает WSAEFAULT, но на 9x. Ошибки там есть :-) Самая грубая:
invoke Version,host,hsock

Этот host определён как байт (db) и макрос invoke страшно корёжит стек при попытке всунуть этот байт. Решение:
invoke Version,ADDR host,hsock

или
[думаю, что идея понятна]
или
invoke Version,0,hsock

раз это значение всё равно не используется в процедуре.


Дата: Май 29, 2004 08:50:39

Спасибо, теперь, всё работает, за исключением последнего recv. Выдаётся ошибка WSAECONNRESET, но это уже не от ошибок в коде программы.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087