LeaveCriticalSection(&Context->CriticalSection);
for (;;) {
+ DWORD Written;
+
(VOID) ReadFile(Pipe->Pipe,
Buffer,
sizeof(Buffer),
ResetEvent(Overlapped.hEvent);
- // Length bytes of Buffer have been read
+ WriteFile(Context->Device,
+ Buffer,
+ Length,
+ &Written,
+ NULL);
}
EnterCriticalSection(&Context->CriticalSection);
goto fail2;
for (;;) {
+ PLIST_ENTRY ListEntry;
+
(VOID) ReadFile(Device,
Buffer,
sizeof(Buffer),
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);