|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 4/6] Pass data through pipe
From: Owen Smith <owen.smith@xxxxxxxxxx>
All data read during the DeviceThread will be passes to all named pipes.
All data read from any named pipe will be passed to the device.
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/monitor/monitor.c | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index e3979b8..9ddce52 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -432,6 +432,8 @@ PipeThread(
LeaveCriticalSection(&Context->CriticalSection);
for (;;) {
+ DWORD Written;
+
(VOID) ReadFile(Pipe->Pipe,
Buffer,
sizeof(Buffer),
@@ -453,7 +455,11 @@ PipeThread(
ResetEvent(Overlapped.hEvent);
- // Length bytes of Buffer have been read
+ WriteFile(Context->Device,
+ Buffer,
+ Length,
+ &Written,
+ NULL);
}
EnterCriticalSection(&Context->CriticalSection);
@@ -725,6 +731,8 @@ DeviceThread(
goto fail2;
for (;;) {
+ PLIST_ENTRY ListEntry;
+
(VOID) ReadFile(Device,
Buffer,
sizeof(Buffer),
@@ -746,7 +754,23 @@ DeviceThread(
ResetEvent(Overlapped.hEvent);
- // Length bytes of Buffer have been read
+ EnterCriticalSection(&Context->CriticalSection);
+
+ for (ListEntry = Context->ListHead.Flink;
+ ListEntry != &Context->ListHead;
+ ListEntry = ListEntry->Flink) {
+ PMONITOR_PIPE Instance;
+ DWORD Written;
+
+ Instance = CONTAINING_RECORD(ListEntry, MONITOR_PIPE, ListEntry);
+
+ WriteFile(Instance->Pipe,
+ Buffer,
+ Length,
+ &Written,
+ NULL);
+ }
+ LeaveCriticalSection(&Context->CriticalSection);
}
CloseHandle(Device);
--
2.8.3
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |