WinCE 4.0 不支持管道(pipe)技术吗?
小弟想移植一段程序从Windows到WinCE下,
其中用到了管道技术,程序如下:
//##ModelId=447E9E350172
void ProcessCom::Run(string programName, string strExit)
{
// TODO
HANDLE hRead,hWrite;
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
// MessageBox("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
char* pProg = const_cast<char*>(programName.c_str());
if (!CreateProcess(NULL,pProg,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
// MessageBox("Error on CreateProcess()");
return;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
bool bExit = false;
while (!bExit)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
char *token;
char seps[] = "\r\n";
token = strtok( buffer, seps );
while (token != NULL )
{
if (strstr(token, strExit.c_str()))
{
m_pCaller->UpdateFinished(programName);
bExit = true;
break;
}
else
{
m_pCaller->Update(token, programName);
}
token = strtok( NULL, seps );
}
}
return;
}
这一段程序在VC 6上运行没有问题,可是在Embedded VC4.0上,说是不支持CreatePipe。
各位大侠支支招,如何在WinCE下支持pipe?