8 #define PIPE_TIMEOUT 1000
10 VOID
InstanceThread (LPVOID
);
13 GetAnswerToRequest(LPTSTR lpRequest
,
15 LPDWORD lpcbReplyBytes
)
19 VOID
MyErrExit(LPTSTR Message
)
21 // MessageBox(NULL, Message, NULL, MB_OK);
31 int main(int argc
, char *argv
[])
35 HANDLE hPipe
, hThread
;
36 LPTSTR lpszPipename
= TEXT("\\\\.\\pipe\\mynamedpipe");
40 hPipe
= CreateNamedPipe(lpszPipename
,
43 PIPE_READMODE_MESSAGE
|
45 PIPE_UNLIMITED_INSTANCES
,
50 if (hPipe
== INVALID_HANDLE_VALUE
)
52 printf("CreateNamedPipe() failed\n");
56 fConnected
= ConnectNamedPipe(hPipe
,
57 NULL
) ? TRUE
: (GetLastError () ==
58 ERROR_PIPE_CONNECTED
);
61 printf("Pipe connected!\n");
63 DisconnectNamedPipe(hPipe
);
66 hThread
= CreateThread(NULL
,
68 (LPTHREAD_START_ROUTINE
) InstanceThread
,
73 MyErrExit("CreateThread");
78 // CloseHandle(hPipe);
87 VOID
InstanceThread (LPVOID lpvParam
)
89 CHAR chRequest
[BUFSIZE
];
90 CHAR chReply
[BUFSIZE
];
91 DWORD cbBytesRead
, cbReplyBytes
, cbWritten
;
95 hPipe
= (HANDLE
)lpvParam
;
98 fSuccess
= ReadFile(hPipe
,
103 if (!fSuccess
|| cbBytesRead
== 0)
106 GetAnswerToRequest(chRequest
, chReply
, &cbReplyBytes
);
108 fSuccess
= WriteFile(hPipe
,
113 if (!fSuccess
|| cbReplyBytes
!= cbWritten
)
117 FlushFileBuffers(hPipe
);
118 DisconnectNamedPipe(hPipe
);