Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];

Вниз

Надо ли инициализировать 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1252662126
mora
2009-09-11 13:42
2009.11.01
Как сохранить картинку из базы Paradox в файл


15-1251775427
Jeyson
2009-09-01 07:23
2009.11.01
Консоль


2-1252269484
indiegod
2009-09-07 00:38
2009.11.01
Уничтожение динамического TImage


4-1221144592
тимохов
2008-09-11 18:49
2009.11.01
Магические числа при асинхронном чтении из канала.


3-1228849414
Falcom
2008-12-09 22:03
2009.11.01
Подключиться к MySQL из Delphi через Internet?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский