MCPcopy Create free account
hub / github.com/dobin/RedEdr / KernelReaderProcessingThread

Function KernelReaderProcessingThread

RedEdr/kernelreader.cpp:60–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58
59
60DWORD WINAPI KernelReaderProcessingThread(LPVOID param) {
61 // Loop which accepts new clients
62 while (WaitForSingleObject(hStopEventKernel, 0) != WAIT_OBJECT_0) {
63 LOG_A(LOG_DEBUG, "KernelReader: Waiting for kernel");
64 kernelPipeServer = new PipeServer("RedEdr KernelReader", (wchar_t*) KERNEL_PIPE_NAME);
65 kernelPipeServer->Start(TRUE);
66 SetEvent(threadReadynessKernel); // signal the event
67 if (!kernelPipeServer->WaitForClient()) {
68 LOG_A(LOG_ERROR, "KernelReader: WaitForClient failed");
69 kernelPipeServer->Shutdown();
70 continue;
71 }
72 LOG_A(LOG_INFO, "KernelReader: Kernel connected");
73 while (WaitForSingleObject(hStopEventKernel, 0) != WAIT_OBJECT_0) {
74 std::vector<std::string> events = kernelPipeServer->ReceiveBatch();
75 if (events.empty()) {
76 break;
77 }
78 for (const auto& event : events) {
79 g_EventAggregator.NewEvent(event);
80 }
81 }
82
83 kernelPipeServer->Shutdown();
84 delete kernelPipeServer;
85 kernelPipeServer = NULL;
86 }
87
88 LOG_A(LOG_DEBUG, "!Kernel Reader: Thread finished");
89 return 0;
90}
91
92
93void KernelReaderShutdown() {

Callers

nothing calls this directly

Calls 7

StartMethod · 0.80
WaitForClientMethod · 0.80
ShutdownMethod · 0.80
ReceiveBatchMethod · 0.80
emptyMethod · 0.80
NewEventMethod · 0.80
LOG_AFunction · 0.70

Tested by

no test coverage detected