#include<Windows.h> #include<iostream.h> #include<stdio.h> #define FF "lr.txt" char lpszPipename[] = "my_pipe.txt"; char phrase[]="sample"; DWORD nBytesWrite; DWORD WINAPI WriteThread(PVOID pvParam) { char buf(20); //DWORD nBytesWrite,nBytesRead; int j; /* HANDLE hNp=CreateNamedPipe("\\.\pipe\pipename",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE, PIPE_UNLIMITED_INSTANCES, 40, 40, NMPWAIT_USE_DEFAULT_WAIT, NULL); */ WaitNamedPipe(lpszPipename,NMPWAIT_WAIT_FOREVER); HANDLE hh=CreateFile(lpszPipename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); j=WriteFile(hh,&phrase,strlen(phrase),&nBytesWrite,NULL); if (j==0) printf("Error"); else printf("Success"); CloseHandle(hh); return 0; /* WriteFile(hNp,&phrase,strlen(phrase)+1, &nBytesWrite, NULL); */ } DWORD WINAPI ReadThread(PVOID pvParam) { char *buf = new char[nBytesWrite]; int j; DWORD nBytesRead; WaitNamedPipe(lpszPipename,NMPWAIT_WAIT_FOREVER); HANDLE hh=CreateFile(lpszPipename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); j=ReadFile(hh,buf,nBytesWrite,&nBytesRead,NULL); if (j==0) printf("Error"); else printf("Success"); cout << endl << buf; CloseHandle(hh); } main() { int x=0; DWORD dwThreadId; HANDLE h1=CreateThread(NULL,0, WriteThread,(PVOID) &x,0,&dwThreadId); WaitForSingleObject(h1,INFINITE); HANDLE h2=CreateThread(NULL,0, ReadThread,(PVOID) &x,0,&dwThreadId); getchar(); /* CloseHandle(hh); */ } |