|
Overview |
|
|
|
Group |
|
|
|
Quick Info
Windows NT
| Yes
| Win95
| Yes
| Win32s
| No
| Import Library
| kernel32.lib
| Header File
| winbase.h
| Unicode
| No
| Platform Notes
| None
|
|
|
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
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database