На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Blocking and Nonblocking Pipe Operations



The wait mode (blocking or nonblocking) of a pipe handle determines whether the ReadFile, WriteFile, and ConnectNamedPipe functions return immediately in situations that would otherwise require an indefinite wait. By default, all named pipe handles returned by the CreateNamedPipe or CreateFile function are created with blocking-wait mode enabled. Nonblocking-wait mode can be enabled for a server's pipe handle by specifying PIPE_NOWAIT in CreateNamedPipe. Both server and client processes can change a pipe handle's wait mode by specifying either PIPE_WAIT or PIPE_NOWAIT in a call to the SetNamedPipeHandleState function.

Note that nonblocking-wait mode is supported for compatibility with Microsoft® LAN Manager version 2.0, and it should not be used to achieve overlapped input and output (I/O) with named pipes. Overlapped I/O should be used instead because it enables time-consuming ReadFile, WriteFile, and ConnectNamedPipe operations to execute in the background after the function returns. For more information about overlapped I/O, see Synchronous and Overlapped Input and Output
.

A ReadFile operation is affected by the wait mode of a pipe handle when the pipe is empty. With a blocking-wait handle, the operation is not completed successfully until data is available from a thread writing to the other end of the pipe. Using a nonblocking-wait handle, the function returns FALSE immediately, and the GetLastError function returns ERROR_NO_DATA.
A WriteFile operation is affected by a pipe handle's wait mode when there is insufficient space in the pipe's buffer to hold all the data. With a blocking-wait handle, the write operation cannot succeed until sufficient space is created in the buffer by a thread reading from the other end of the pipe. With a nonblocking-wait handle, the write operation returns TRUE immediately, without writing any bytes (for a message-type pipe) or after writing as many bytes as the buffer holds (for a byte-type pipe).

A ConnectNamedPipe operation is affected by the wait mode of a pipe handle when there is no client connected or waiting to connect to the pipe instance. With a blocking-wait handle, the connect operation does not succeed until a client process connects to the pipe instance by calling either the CreateFile or CallNamedPipe function. With a nonblocking-wait handle, the connect operation returns FALSE immediately, and the GetLastError function returns ERROR_PIPE_LISTENING.

The wait mode of a pipe handle does not affect read or write operations when using the TransactNamedPipe or CallNamedPipe function.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Блокировка и Действия Трубы Nonblocking



Способ ожидания (блокировка или nonblocking) ручки трубы определяется независимо ReadFile, WriteFile, и возврат функций ConnectNamedPipe немедленно в ситуациях, которые было бы в противном случае требовать неопределенное ожидание. По умолчанию, все поименованные ручки трубы возвращались CreateNamedPipe или функция CreateFile создана блокировкой-ожиданием способа приспособленного. Способ ожидания Nonblocking-может быть приспособлен для ручки трубы сервера определяя PIPE_NOWAIT в CreateNamedPipe. Как сервер так и процессы клиента могут изменить режим ожидания ручки трубы определяя или PIPE_WAIT или PIPE_NOWAIT на вызове в функцию SetNamedPipeHandleState.

Отметьте, что nonblocking-ожидание режима поддерживан для совместимости с Microsoft версия Менеджера LAN 2.0, и это не должно использовано, чтобы достигать перекрытого ввода и выхода (В/В) с поименованными трубами. Перекрывшее В/В должен использоваться взамен поскольку это позволяет ReadFile, WriteFile, и операции ConnectNamedPipe, чтобы выполняться на фоне после того, как функция возвращается. Более подробно о перекрытом В/В, смотри Синхронный и Перекрытый Ввод и Выход
.

Операция ReadFile поражена режимом ожидания ручки трубы когда труба пустая. С блокировкой-ожиданием ручки, операция не завершается успешно пока данные не будет доступно из резьбы, пишущейся в другой конец трубы. Используя nonblocking ожидание ручки, функциональная ЛОЖЬ возврата немедленно, и функциональный возврат GetLastError ERROR_NO_DATA.
Операция WriteFile поражена режимом ожидания ручки трубы когда есть недостаточное пространство в буфере трубы, чтобы держать все данные. С блокировкой-ожиданием ручки, записывать операция не может добиться успеха пока достаточное пространство не будет создано в буфере резьбой, читающейся из другого конца трубы. С nonblocking ожиданием ручки, записывать операция возвращает ИСТИНУ немедленно, не пиша любые байты (для сообщения-типа трубы) или после записи столько байтов сколько буферные хранилища (для байтового типа трубы).

Операция ConnectNamedPipe поражена режимом ожидания ручки трубы когда нет клиента связывал или ожидая, чтобы подключать к примеру трубы. С блокировкой-ожиданием ручки, соединять операцию не добивается успеха пока процесс клиента не подключит к примеру трубы вызывая или CreateFile или функция CallNamedPipe. С nonblocking ожиданием ручки, соединять операцию ЛЖИ возврата немедленно, и функциональный возврат GetLastError ERROR_PIPE_LISTENING.

Режим ожидания ручки трубы не влияет на прочитанные или операции записи при использовании TransactNamedPipe или функция CallNamedPipe.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz