使用PeekNamedPipe()的Windows App曾经在XP中工作,但在Win7中不工作

时间:2018-11-18 14:33:34

标签: windows-7 windows-xp readfile named-pipes

我曾经有一个应用程序,该应用程序使用CreateProcess()启动了一个应用程序,然后来回传输数据。子进程使用printf()getch()

代码具有:

PeekNamedPipe(pCmdIF->m_asynch_hReadPipeOut,NULL,NULL,NULL, &dwBytesInOutPipe, &dwBytesLeftInOutPipe))

哪个检查了传入管道中有多少数据,然后我使用ReadFile读取了这些数据。

现在,在Windows 7中,相同的代码不起作用。

要创建管道,我使用了代码...

// Set the bInheritHandle flag so pipe handles are inherited.
ZeroMemory( &m_asynch_sa, sizeof(SECURITY_ATTRIBUTES));
m_asynch_sa.bInheritHandle = TRUE;
m_asynch_sa.lpSecurityDescriptor = NULL;
m_asynch_sa.nLength = sizeof(SECURITY_ATTRIBUTES);

// Create a pipe for the child process's STDOUT (will also be used for STDERR)
if( ! CreatePipe( &m_hChildStd_OUT_Rd, &m_hChildStd_OUT_Wr, &m_asynch_sa, 0 ) )
{
    return 2;
}

是否应该将m_asynch_sa.lpSecurityDescriptor设置为NULL。如果是这样,我找不到如何将其设置为适当值的任何示例。

谢谢。

0 个答案:

没有答案