Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: CL | DM;

Вниз

Надо ли инициализировать Offset у структуры OVERLAPPED?   Найти похожие ветки 

 
тимохов   (2008-09-10 22:34) [0]

Надо ли инициализировать Offset у структуры OVERLAPPED при работе с именованными каналами перед вызовом ReadFile в асинхронном режиме?

Причина вопроса состоит в том, что есть некоторое противоречие в MSDN:

1. С одной стороны при описании структуры OVERLAPPED (msdn.microsoft.com/en-us/library/ms684342(VS.85).aspx) явно сказано, что
Any unused members of this structure should always be initialized to zero before the structure is used in a function call. Otherwise, the function may fail and return ERROR_INVALID_PARAMETER.

2. С другой стороны в примерах работы с именованными каналами я не видел инициализации нулем члена Offset перед вызовом ReadFile. Примеры кода где нет инициализации, но код работает верно:
а)  msdn.microsoft.com/en-us/library/aa365603(VS.85).aspx
б) http://www.delphimaster.ru/articles/named_pipes/index.html (здесь есть инициализация в начале, но нет перед вторым вызовом ReadFile).

Собственно вопрос - так нужно инициализировать Offset или нет? Кому верить - примерам из MSDN или доке к функциям от туда же? Какие мнения?


 
тимохов   (2008-09-10 22:41) [1]

Эх блин, сморозил я видимо.

Я только сейчас понял (может не прав), что ReadFile выполненный асинхронно для именованного канала не фига не меняет Offset. Поэтому первоначальной инициализации в 0 хватает на все выховы ReadFile.

Верно?


 
тимохов   (2008-09-10 22:59) [2]

Проверил сейчас - значение Offset не оказывает никакого влияния на работу ReadFile. Вот.

В реальном проекте я, конечно, очищаю Offset. Но все же хочется разобраться, что я не понял в MSDN, ибо считаю необходимым досконально понимать то, что делаешь.

Если кто-то из гуру, собаку съевший на именованных каналах мне разъяснит как правильно читать и понимать в данному случае MSDN, то я буду очень благодарен.

Спасибо.


 
tesseract ©   (2008-09-10 23:22) [3]


> Примеры кода где нет инициализации, но код работает верно:


Ну это нормально - просто в будущих версия не факт, что заработает. Лучше тупо действовать по графику и инициализировать локальнные переменные, тем, что предлагают.


> Если кто-то из гуру, собаку съевший на именованных каналах
> мне разъяснит как правильно читать и понимать в данному
> случае MSDN, то я буду очень благодарен.


Димон - у тебя же поддержка платная - спроси у самого мелкософта.


 
тимохов   (2008-09-10 23:29) [4]

Макс, у меня только лайбрари. Там нет возможности задавать вопросы.

Я тут постепенно начинаю приходить к пониманию, что все в MSDN верно - про ReadFile ясно сказано, что для устройств, не поддерживащих позиционирование по оффсету, Offset игнорируется. Отсюда можно сделать вывод, что для именованных каналов Offset не меняется (он же игнорируется) в ходе работы ReadFile. А если это так, то достаточно первоначальной инициализации в ноль, как это сделано в примерах.

Надеюсь ход моих мыслей правильный.



Страницы: 1 вся ветка

Текущий архив: 2009.11.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-1228999081
Pavel
2008-12-11 15:38
2009.11.01
Добавление картинки в базу


2-1253078993
Knight
2009-09-16 09:29
2009.11.01
Несколько глупых вопросов по потокам...


15-1252088993
Гость
2009-09-04 22:29
2009.11.01
Подскажите Эксперт для Дельфи


2-1252426330
Alexei
2009-09-08 20:12
2009.11.01
Программное нажатие клавиши или сочетания клавиш


2-1252291728
Генри
2009-09-07 06:48
2009.11.01
Как добавить запрос к двум таблицам на форму