createpipe
创建一个匿名管道,并将句柄返回到该管道的读取和写入端。
BOOL CreatePipe(
PHANDLE hReadPipe,
PHANDLE hWritePipe,
LPSECURITY_ATTRIBUTES lpPipeAttributes,
DWORD nSize
);
参数
- hReadPipe
指向变量的指针,该变量接收管道的读取句柄。
- hWritePipe
指向变量的指针,该变量接收管道的写句柄。
- lpPipeAttributes
指向SECURITY_ATTRIBUTES结构的指针,该 结构确定子进程是否可以继承返回的句柄。如果lpPipeAttributes为NULL,则不能继承该句柄。
结构的lpSecurityDescriptor成员为新管道指定安全描述符。如果lpPipeAttributes为NULL,则管道将获取默认的安全描述符。管道的默认安全描述符中的ACL来自创建者的主令牌或模拟令牌。
- nSize
管道缓冲区的大小,以字节为单位。大小只是一个建议;系统使用该值来计算适当的缓冲机制。如果此参数为零,则系统使用默认缓冲区大小。
返回值
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。要获取扩展的错误信息,请调用 GetLastError。
getstdhandle
检索指定标准设备(标准输入,标准输出或标准错误)的句柄。
HANDLE WINAPI GetStdHandle(
_In_ DWORD nStdHandle
);
参数
nStdHandle [输入]
标准设备。此参数可以是以下值之一。
参数
价值 | 意义 |
---|---|
STD_INPUT_HANDLE(DWORD)-10 | 标准输入设备。最初,这是控制台输入缓冲区CONIN$ 。 |
STD_OUTPUT_HANDLE(DWORD)-11 | 标准输出设备。最初,这是活动的控制台屏幕缓冲区CONOUT$ 。 |
STD_ERROR_HANDLE(DWORD)-12 | 标准错误设备。最初,这是活动的控制台屏幕缓冲区CONOUT$ 。 |
返回值
如果函数成功,则返回值是指定设备的句柄,或者是先前对SetStdHandle的调用设置的重定向句柄。该句柄具有GENERIC_READ和GENERIC_WRITE访问权限,除非应用程序使用SetStdHandle设置访问权限较小的标准句柄。
如果函数失败,则返回值为INVALID_HANDLE_VALUE。要获取扩展的错误信息,请调用GetLastError。
如果应用程序没有关联的标准句柄(例如,在交互式桌面上运行的服务)并且尚未重定向它们,则返回值为NULL。
peeknamepipe
将数据从命名管道或匿名管道复制到缓冲区中,而不将其从管道中删除。它还返回有关管道中数据的信息。
BOOL PeekNamedPipe(
HANDLE hNamedPipe,
LPVOID lpBuffer,
DWORD nBufferSize,
LPDWORD lpBytesRead,
LPDWORD lpTotalBytesAvail,
LPDWORD lpBytesLeftThisMessage
);
参数
hNamedPipe
管道的手柄。此参数可以是CreateNamedPipe或 CreateFile函数返回的命名管道实例的句柄 ,也可以是CreatePipe函数返回的匿名管道的读取端的句柄 。句柄必须具有对管道的GENERIC_READ访问权限。
lpBuffer
指向缓冲区的指针,该缓冲区接收从管道读取的数据。如果不读取任何数据,则此参数可以为NULL。
nBufferSize
lpBuffer参数指定的缓冲区大小,以字节为单位。如果lpBuffer为NULL,则忽略此参数。
lpBytesRead
指向变量的指针,该变量接收从管道读取的字节数。如果不读取任何数据,则此参数可以为NULL。
lpTotalBytesAvail
指向变量的指针,该变量接收可从管道读取的总字节数。如果不读取任何数据,则此参数可以为NULL。
lpBytesLeftThisMessage
指向变量的指针,该变量接收此消息中剩余的字节数。对于字节类型的命名管道或匿名管道,此参数将为零。如果不读取任何数据,则此参数可以为NULL。
返回值
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。要获取扩展的错误信息,请调用 GetLastError。