На главную

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 | Скачать Вниз

TransactNamedPipe



The TransactNamedPipe function combines into a single network operation the functions that write a message to and read a message from the specified named pipe.

BOOL TransactNamedPipe(

HANDLE hNamedPipe, // handle of named pipe
LPVOID lpInBuffer, // address of write buffer
DWORD nInBufferSize, // size of the write buffer, in bytes
LPVOID lpOutBuffer, // address of read buffer
DWORD nOutBufferSize, // size of read buffer, in bytes
LPDWORD lpBytesRead, // address of variable for bytes actually read
LPOVERLAPPED lpOverlapped // address of overlapped structure
);


Parameters

hNamedPipe

Identifies the named pipe returned by the CreateNamedPipe or CreateFile function.

lpInBuffer

Points to the buffer containing the data written to the pipe.

nInBufferSize

Specifies the size, in bytes, of the write buffer.

lpOutBuffer

Points to the buffer that receives the data read from the pipe.

nOutBufferSize

Specifies the size, in bytes, of the read buffer.

lpBytesRead

Points to the variable that receives the number of bytes read from the pipe.
If lpOverlapped is NULL, lpBytesRead cannot be NULL.
If lpOverlapped is not NULL, lpBytesRead can be NULL. If this is an overlapped read operation, you can get the number of bytes read by calling GetOverlappedResult. If hNamedPipe is associated with an I/O completion port, you can get the number of bytes read by calling GetQueuedCompletionStatus.

lpOverlapped

Points to an OVERLAPPED structure. This structure is required if hNamedPipe was opened with FILE_FLAG_OVERLAPPED.
If hNamedPipe was opened with FILE_FLAG_OVERLAPPED, the lpOverlapped parameter must not be NULL. It must point to a valid OVERLAPPED structure. If hNamedPipe was created with FILE_FLAG_OVERLAPPED and lpOverlapped is NULL, the function can incorrectly report that the opeation is complete.

If hNamePipe was opened with FILE_FLAG_OVERLAPPED and lpOverlapped is not NULL, TransactNamedPipe is executed as an overlapped operation. The OVERLAPPED structure should contain a manual-reset event object (which can be created by using the CreateEvent function). If the operation cannot be completed immediately, TransactNamedPipe returns FALSE and GetLastError returns ERROR_IO_PENDING. In this situation, the event object is set to the nonsignaled state before TransactNamedPipe returns, and it is set to the signaled state when the transaction has finished. For more information about overlapped operations, see Pipes.

If hNamedPipe was not opened with FILE_FLAG_OVERLAPPED, TransactNamedPipe does not return until the operation is complete.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

TransactNamedPipe fails if the server did not create the pipe as a message-type pipe or if the pipe handle is not in message-read mode. For example, if a client is running on the same machine as the server and uses the \\.\pipe\pipename format to open the pipe, the pipe is opened in byte mode by the named pipe file system (NPFS). If the client uses the form \\server\pipe\pipename, the redirector opens the pipe in message mode. A byte mode pipe handle can be changed to message-read mode with the SetNamedPipeHandleState function.

The function cannot be completed successfully until data is written into the buffer specified by the lpOutBuffer parameter. The lpOverlapped parameter is available to enable the calling thread to perform other tasks while the operation is executing in the background.
If the message to be read is longer than the buffer specified by the nOutBufferSize parameter, TransactNamedPipe returns FALSE and the GetLastError function returns ERROR_MORE_DATA. The remainder of the message can be read by a subsequent call to ReadFile, ReadFileEx, or PeekNamedPipe.

See Also

CreateEvent, CreateFile, CreateNamedPipe, GetOverlappedResult, GetQueuedCompletionStatus, PeekNamedPipe, ReadFile, ReadFileEx, SetNamedPipeHandleState, OVERLAPPED


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

TransactNamedPipe



Функция TransactNamedPipe объединяется в единственное сетевое действие функции, которые пишут сообщение на и читают сообщение из определенной поименованной трубы.

BOOL TransactNamedPipe(

РУЧКА hNamedPipe, // ручка поименованной трубы LPVOID lpInBuffer, // адреса писать буфера DWORD nInBufferSize, // размера писать буфера, в байтах LPVOID lpOutBuffer, // адрес буфера чтения DWORD nOutBufferSize, // размер буфера чтения, в байтах LPDWORD lpBytesRead, // адресе переменной для байтов действительно прочитавших LPOVERLAPPED lpOverlapped // адрес перекрытой структуры
);


Параметры

hNamedPipe

Идентифицирует поименованную трубу возвращанную CreateNamedPipe или функцию CreateFile.

lpInBuffer

Точки на буфер, содержащие данные записанные в трубу.

nInBufferSize

Определяет размер, в байтах, записывать буфера.

lpOutBuffer

Точки на буфер, которые получают данные прочитанные из трубы.

nOutBufferSize

Определяет размер, в байтах, буфера чтения.

lpBytesRead

Точки на переменную, которые получают количество байтов прочитанных из трубы.
Если lpOverlapped, НЕДЕЙСТВИТЕЛЬНО, lpBytesRead не может быть НЕДЕЙСТВИТЕЛЕН.
Если lpOverlapped, не НЕДЕЙСТВИТЕЛЬНО, lpBytesRead может быть НЕДЕЙСТВИТЕЛЕН. Если это - перекрытая операция чтения, Вы можете быть прочитаны количество байтов вызывая GetOverlappedResult. Если hNamedPipe связан портом завершения В/В, Вы можете быть прочитаны количество байтов вызывая GetQueuedCompletionStatus.

lpOverlapped

Точки на ПЕРЕКРЫТУЮ структуру. Эта структура потребовалась если hNamedPipe был открыт FILE_FLAG_OVERLAPPED.
Если hNamedPipe был открыт FILE_FLAG_OVERLAPPED, lpOverlapped параметр не должен быть НЕДЕЙСТВИТЕЛЕН. Это должно указать на правильную ПЕРЕКРЫТУЮ структуру. Если hNamedPipe был создан FILE_FLAG_OVERLAPPED и lpOverlapped НЕДЕЙСТВИТЕЛЕН, функция может неправильно сообщить, что opeation завершенно.

Если hNamePipe был открыт FILE_FLAG_OVERLAPPED и lpOverlapped не НЕДЕЙСТВИТЕЛЕН, TransactNamedPipe выполнен как перекрытая операция. ПЕРЕКРЫТАЯ структура должна содержать руководство-восстановившее объект события (который может быть создан использованием функции CreateEvent). Если операция не может завершаться немедленно, ЛОЖЬ возврата TransactNamedPipe и возврат GetLastError ERROR_IO_PENDING. В этой ситуации, объект события установлен в nonsignaled состояние перед возврат TransactNamedPipe, и установлено в сигнальное состояние когда сделка завершилась. Более подробно о перекрытых операциях, смотри Трубы.

Если hNamedPipe не был открыт FILE_FLAG_OVERLAPPED, TransactNamedPipe не возвращается пока операция не будет завершенна.



Обратные Величины

Если функция добивается успеха, обратная величина ненулевая.
Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, вызовите GetLastError.

Замечания

TransactNamedPipe ТЕРПИТ неудачу если сервер не создавал бы трубу как сообщение-тип трубы или если ручка трубы - не в сообщении-прочитавшем режим. Например, если клиент работает на той же машине как сервер и использует \\. формата\pipe\pipename, чтобы открывать трубу, труба открыта в байтовом режиме файловой системой поименованной трубы (NPFS). Если клиент использует форму \\server\pipe\pipename, redirector открывает трубу в режиме сообщения. Ручка трубы байтового режима может быть изменена в сообщение-прочитавшее режим с функцией SetNamedPipeHandleState.

Функция не может завершаться успешно пока данные не будут записаны в буфер определенный параметром lpOutBuffer. lpOverlapped Параметр доступен позволять разговор резьбы, чтобы выполнять другие задачи тогда как операция выполняется на фоне.
Если сообщение, чтобы быть чтением более длинное чем буфер определенный параметром nOutBufferSize, ЛОЖЬ возврата TransactNamedPipe и функциональный возврат GetLastError ERROR_MORE_DATA. Разность сообщения может быть прочитана последующим вызовом на ReadFile, ReadFileEx, или PeekNamedPipe.

Смотри Также

CreateEvent, CreateFile, CreateNamedPipe, GetOverlappedResult, GetQueuedCompletionStatus, PeekNamedPipe, ReadFile, ReadFileEx, SetNamedPipeHandleState, ПЕРЕКРЫТОЕ


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