将HANDLE转换为文件描述符

时间:2014-01-30 00:20:58

标签: c++ windows openssl named-pipes handle

我有一个这样的手柄:

HANDLE hPipe = CreateNamedPipe(...)

是否可以将 hPipe 转换为文件描述符(int)?

我需要这个,因为我已经在C ++中实现了使用OpenSSL来处理TLS的代码。这就像使用TCP套接字的魅力一样,但我真的需要在Namedpipe上使用它。

OpenSSL的函数SSL_set_fd(SSL *ssl, int fd)仅接受 int FileDescriptor ,而不接受 HANDLE

注意:我也尝试过使用以下功能,但不起作用(返回3):

int fd = _open_osfhandle(reinterpret_cast<intptr_t>(hPipe), 0);    

1 个答案:

答案 0 :(得分:3)

你回来的3不是错误,它是文件描述符句柄。如果查看the documentation,您会看到它返回-1表示失败,否则返回值是文件描述符。