|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Named Pipe Modes
A number of modes associated with a named pipe or with a handle to a named pipe affect the use and behavior of the pipe. Some of these modes can be set differently for each handle to a pipe, while others must be the same for all handles to a pipe.
The server process specifies the following modes when it calls the CreateNamedPipe function. The type and access modes must be the same for all instances of a pipe.
Mode Meaning Type PIPE_TYPE_BYTE or PIPE_TYPE_MESSAGE. The type mode determines whether data is written to a named pipe as a stream of messages or as a stream of bytes. If no type is specified in CreateNamedPipe, the default is PIPE_TYPE_BYTE. A handle to a byte pipe must be in byte-read mode. A handle to a message pipe can be in either byte-read or message-read mode. For more information about pipe types, see Named Pipe Type and Read Mode. Access PIPE_ACCESS_INBOUND, PIPE_ACCESS_OUTBOUND, or PIPE_ACCESS_DUPLEX. This mode is equivalent to specifying the read or write access of the server's handles to the pipe, where inbound is equivalent to GENERIC_READ access, outbound is equivalent to GENERIC_WRITE access, and duplex is equivalent to GENERIC_READ | GENERIC_WRITE access. Client processes using the CreateFile function to connect to a named pipe must specify an access compatible with the access specified by the server. For example, a client must specify GENERIC_READ access for an outbound pipe.
The remaining pipe modes can differ for each pipe handle. This means that the client and server ends of the same pipe instance can use different modes. CreateNamedPipe sets all of these modes for the pipe handles of a server. CreateFile supports setting the overlapped and write-through modes for the pipe handles of a client. Both client and server processes use the SetNamedPipeHandleState function to set the read and wait modes of a pipe handle.
Mode Meaning Read PIPE_READMODE_BYTE or PIPE_READMODE_MESSAGE. In byte-read mode, data is read from a named pipe as a stream of bytes. In message-read mode, data is read from a named pipe as a stream of messages. Only byte-read mode is allowed for byte-type pipes. Either byte-read or message-read mode is allowed for message-type pipes. The default is byte-type mode, if no read mode is specified in CreateNamedPipe. For more information about read modes, see Named Pipe Type and Read Mode. Wait PIPE_WAIT or PIPE_NOWAIT. In blocking-wait mode, the ReadFile, WriteFile, and ConnectNamedPipe functions wait indefinitely in some situations for a process on the other end of the pipe to perform an action. In nonblocking-wait mode, the functions return if they cannot finish their operations immediately. For more information about wait modes, see Blocking and Nonblocking Pipe Operations. Overlapped FILE_FLAG_OVERLAPPED. In overlapped mode, functions performing read, write, and connect operations that take a significant time to be completed can return immediately. This enables the thread to perform other operations while a time-consuming operation executes in the background. For more information about overlapped mode, see Synchronous and Overlapped Input and Output. Write-through FILE_FLAG_WRITE_THROUGH. In write-through mode, the functions that write to a named pipe do not return until the data written is transmitted across the network and into the pipe's buffer on the remote computer. This mode affects only write operations on byte-type pipes and, then, only when the client and server processes are on different computers. If write-through mode is not enabled, a write function returns successfully, even if the data is not transmitted. For more information about write-through modes, see Write-through to Remote Clients.
The initial read mode for a pipe handle is specified when a server process calls CreateNamedPipe. If PIPE_READMODE_BYTE is specified or if no read mode is specified, the pipe handle is created in byte-read mode. If both PIPE_READMODE_MESSAGE and PIPE_TYPE_MESSAGE are specified, the handle is created in message-read mode. For a client process, a pipe handle returned by CreateFile is always in byte-read mode initially. Both client and server processes can use the SetNamedPipeHandleState function to change the read mode of a pipe handle. For a message-type pipe, the read mode can be different for server and client handles to the same pipe instance.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Поименованные Способы Трубы
Множество способов связанных поименованной трубой или с ручкой в поименованную трубу влияет на использование и поведение трубы. Некоторые из них способы могут устанавливаться иначе для каждой ручки в трубу, тогда как другие должны быть теми же для всех ручек в трубу.
Процесс сервера определяет следующие режимы когда он называет функцию CreateNamedPipe. Тип и режимы доступа должны быть теми же для всех примеров трубы.
Значение Режима Наберите PIPE_TYPE_BYTE или PIPE_TYPE_MESSAGE. Режим типа определяется, независимо данные записаны в поименованную трубу как поток сообщений или как поток байтов. Если никакой тип не определен в CreateNamedPipe, умолчание - PIPE_TYPE_BYTE. Ручка в байтовую трубу должна быть в байте-прочитавшем режим. Ручка в трубу сообщения может быть в или байт-был прочитан или сообщение-прочитано режим. Более подробно о типах трубы, смотри Поименованный Тип Трубы и Прочитанного Режима. Иметь доступ к PIPE_ACCESS_INBOUND, PIPE_ACCESS_OUTBOUND, или PIPE_ACCESS_DUPLEX. Этот режим - эквивалент определению чтения или доступа записи ручек сервера в трубу, где inbound - эквивалент доступу GENERIC_READ, уходящий - эквивалент доступу GENERIC_WRITE, и дуплекс является эквивалентом GENERIC_READ | доступ GENERIC_WRITE. Клиент обрабатывает использование функции CreateFile, чтобы подключать к поименованной трубе должно определить доступ совместимый с доступом определенным сервером. Например, клиент должен определить доступ GENERIC_READ для уходящей трубы.
Остальные режимы трубы могут отличиться для каждой ручки трубы. Это означает, что клиент и концы сервера того же самого примера трубы могут использовать другие режимы. CreateNamedPipe УСТАНАВЛИВАЕТ все эти режимы для ручек трубы сервера. CreateFile ПОДДЕРЖИВАЕТ установку перекрытая и запись-через режимы для ручек трубы клиента. Как клиент так и использование процессов сервера функция SetNamedPipeHandleState, чтобы устанавливать чтение и ожидать режимы ручки трубы.
Значение Режима Прочитайте PIPE_READMODE_BYTE или PIPE_READMODE_MESSAGE. В байте-прочитавшем режим, данные прочитаны из поименованной трубы как поток байтов. В сообщении-прочитавшем режим, данные прочитаны из поименованной трубы как поток сообщений. Только байт-прочитавший режим учтен байтовый тип труб. Или байт-был прочитан или сообщение-прочитавшее режим учтен сообщение-тип труб. Умолчание является байтовый тип режима, если никакой читанный режим не определен в CreateNamedPipe. Более подробно о режимах чтения, смотри Поименованный Тип Трубы и Прочитанного Режима. Ожидайте PIPE_WAIT или PIPE_NOWAIT. В блокировке-ожидании режима, ReadFile, WriteFile, и ожидание функций ConnectNamedPipe неопределенно в некоторых ситуациях для процесса в другом конце трубы, чтобы выполнять действие. В nonblocking ожидании режима, функции возвращаются если они не могут завершить свои операции немедленно. Более подробно о режимах ожидания, смотри Блокировку и Операции Трубы Nonblocking. Перекрывшее FILE_FLAG_OVERLAPPED. В перекрытом режиме, функциях, выполняющих прочитанное, запись и соединять операции, которые берут значимое время, которое нужно завершать, могут возвращаться немедленно. Это позволяет резьбу, чтобы выполнять другие операции тогда как трудоемкая операция выполняется на фоне. Более подробно о перекрытом режиме, смотри Синхронный и Перекрытый Ввод и Выход. Запись-через FILE_FLAG_WRITE_THROUGH. В записи-через режим, функции, которые записываются в поименованную трубу не возвращаться до письменных данных передан через сеть и в буфер трубы в дистанционном компьютере. Этот режим влияет на только записывать операции в байтовом типе труб и, затем, только когда клиент и процессы сервера находятся в других компьютерах. Если запись-через режим не приспособлена, записывать функция возвращает успешно, даже если бы данные не переданы. Более подробно о записи-через режимы, смотри Запись-вплоть до Дистанционных Клиентов.
Инициал прочитавший режим для ручки трубы определен когда процесс сервера вызывает CreateNamedPipe. Если PIPE_READMODE_BYTE определен или если никакой читанный режим не определен, ручка трубы создана в байте-прочитавшем режим. Если как PIPE_READMODE_MESSAGE так и PIPE_TYPE_MESSAGE определены, ручка создана в сообщении-прочитавшем режим. Для процесса клиента, ручка трубы возвращанная CreateFile - всегда в байте-прочитавшем режим первоначально. Как клиент так и процессы сервера могут использовать функцию SetNamedPipeHandleState, чтобы изменять режим чтения ручки трубы. Для сообщения-типа трубы, режим чтения может быть другим для сервера и клиент оперируется в тот же пример трубы.
|
|
|
|
| |