GetNamedPipeHandleState函数检索有关指定命名管道的信息。返回的信息可以在命名管道的实例的生命周期内变化。
BOOL GetNamedPipeHandleState(
HANDLE 【hNamedPipe】, | //命名管道的句柄 |
LPDWORD 【lpState】, | //指示管道状态的标志的地址 |
LPDWORD 【lpCurInstances】, | //当前管道实例数的地址 |
LPDWORD 【lpMaxCollectionCount】, | //最大地址远程传输前的字节 |
LPDWORD 【lpCollectDataTimeout】, | //最大地址远程传输之前的时间 |
LPTSTR 【lpUserName】, | //客户端进程的用户名的地址 |
DWORD 【nMaxUserNameSize】 | //用户名缓冲区的大小(以字符为单位) |
); |
参数
【hNamedPipe】
标识需要信息的命名管道。句柄必须具有对命名管道的GENERIC_READ访问权限。
【lpState】
指向一个32位变量,指示句柄的当前状态。如果不需要此信息,此参数可以为NULL。可以指定以下任意一个值:
值 | 含义 |
PIPE_NOWAIT | 管道手柄处于非阻塞模式。如果未指定此标志,管道手柄处于阻塞模式。 |
PIPE_READMODE_MESSAGE | 管道手柄处于消息读取模式。如果未指定此标志,则管道句柄处于字节读取模式。 |
【lpCurInstances】
指向接收当前管道实例数的32位变量。如果不需要此信息,此参数可以为NULL。
【lpMaxCollectionCount】
指向一个32位变量,在传输到服务器之前接收客户端计算机上要收集的最大字节数。如果指定的管道句柄位于命名管道的服务器端,或者客户端和服务器进程位于同一台计算机上,则此参数必须为NULL。如果不需要此信息,此参数可以为NULL。
【lpCollectDataTimeout】
指向一个32位变量,它接收在远程命名管道通过网络传输信息之前可以通过的最大时间(以毫秒为单位)。如果指定的管道句柄位于命名管道的服务器端,或者客户端和服务器进程位于同一台计算机上,则此参数必须为NULL。如果不需要此信息,此参数可以为NULL。
【lpUserName】
指向缓冲区,接收包含客户端应用程序的用户名字符串的以null结尾的字符串。如果指定的管道句柄是指向命名管道的客户端,则此参数必须为NULL。如果不需要此信息,此参数可以为NULL。
【nMaxUserNameSize】
指定由【lpUserName】参数指定的缓冲区的大小(以字符为单位)。如果【lpUserName】为NULL,则忽略此参数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
即使传递给它的所有指针都为NULL,GetNamedPipeHandleState函数也将成功返回。
要设置管道手柄状态,请使用SetNamedPipeHandleState功能。
也可以看看