我似乎在我的 c# 应用程序和 c++ 应用程序之间创建管道时遇到了问题。我的 c++ 应用程序是一个 dll,它被注入到某个程序中,并为我的 c# 应用程序打开了一个管道。
我的问题?在 ReadFile lpNumberOfBytesRead (cbRead) 中总是返回 0
代码:
hPipe1=CreateFile(lpszPipename1, GENERIC_WRITE ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
hPipe2=CreateFile(lpszPipename2, GENERIC_READ ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
BOOL fSuccess;
char chBuf[100];
DWORD dwBytesToWrite = (DWORD)strlen(chBuf);
DWORD cbRead;
int i;
while(1){
fSuccess = ReadFile(hPipe2,chBuf,dwBytesToWrite,&cbRead, NULL);
if(fSuccess)
{
//4Stackoverflow: This works
msg = "";
for(i=0;i<cbRead;i++){
//4Stackoverflow: This never gets called, because cbRead is always 0
MessageBoxW(NULL, L"Sent", L"Hooked MBW", MB_ICONEXCLAMATION);
msg += chBuf[i];
}