共用方式為


2.4.36 FilePipeInformation

This information class is used to query or set information on a named pipe that is not specific to one end of the pipe or another.

A FILE_PIPE_INFORMATION data element, defined as follows, is returned by the server or provided by the client.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

ReadMode

CompletionMode

ReadMode (4 bytes):  A 32-bit unsigned integer that MUST contain one of the following values.

Value

Meaning

FILE_PIPE_BYTE_STREAM_MODE

0x00000000

If this value is specified, data MUST be read from the pipe as a stream of bytes.

FILE_PIPE_MESSAGE_MODE

0x00000001

If this value is specified, data MUST be read from the pipe as a stream of messages.

If this field is set to FILE_PIPE_BYTE_STREAM_MODE, any attempt to subsequently change it MUST fail with a STATUS_INVALID_PARAMETER error code.

CompletionMode (4 bytes):  A 32-bit unsigned integer that MUST contain one of the following values.

Value

Meaning

FILE_PIPE_QUEUE_OPERATION

0x00000000

If this value is specified, blocking mode MUST be enabled. When the pipe is being connected, read to, or written from, the operation is not completed until there is data to read, all data is written, or a client is connected. Use of this mode can result in the server waiting indefinitely for a client process to perform an action.

FILE_PIPE_COMPLETE_OPERATION

0x00000001

If this value is specified, non-blocking mode MUST be enabled. When the pipe is being connected, read to, or written from, the operation completes immediately.

This operation returns a status code as specified in section 2.2. Upon success, the status code returned by the function that processes this file information class is STATUS_SUCCESS. The most common error codes are listed in the following table.

Error code

Meaning

STATUS_INFO_LENGTH_MISMATCH

0xC0000004

The specified information record length does not match the length that is required for the specified information class.

STATUS_INVALID_PARAMETER

0xC000000D

An invalid parameter was passed to a service or function. When setting the FilePipeInformation information level, STATUS_INVALID_PARAMETER will be returned:

  • If the ReadMode field is set to FILE_PIPE_BYTE_STREAM_MODE and a subsequent set operation attempts to set the ReadMode field to any value other than FILE_PIPE_BYTE_STREAM_MODE.

  • If the value of the ReadMode field is not equal to FILE_PIPE_MESSAGE_MODE or FILE_PIPE_BYTE_STREAM_MODE.

  • If the value of the CompletionMode field is not equal to FILE_PIPE_QUEUE_OPERATION or FILE_PIPE_COMPLETE_OPERATION.

For more information on named pipes, please see [PIPE].