The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
I have a minifilter and a simple C++ client that connects to this minifilter over a port. The client receives and sends message to minifilter using
FilterSendMessage. The client receives a message from the minifilter, performs tasks
foo, updates the minifilter about the status by calling
FilterSendMessage and waits for another message. Things were working fine.
Recently, I moved the function (
foo) that calls
FilterSendMessage to a detached thread e.g.
std::thread(foo, ...).detach(). Now when
foo is called by the client,
FilterSendMessage blocks indefinitely. I also don't see the log message from MessageNotifyCallback. I am assuming that calling
foo from a detached thread has caused this but I can't be sure.
foo communicates over the network and can have quite large latency. I don't want to wait for it to finish before calling the FilterGetMessage again. Hence, it was called from a detached thread.
So the question is, is it possible to call
FilterSendMessage from a detached thread? If not, I'd like to know the details. Docs don't mention much. If yes, then I need to debug more.
PS: I am very new to the Win32 platform. Mostly a Linux developer.
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Internals & Software Drivers||15 November 2021||Live, Online|
|Writing WDF Drivers||24 January 2022||Live, Online|
|Developing Minifilters||7 February 2022||Live, Online|
|Kernel Debugging||21 March 2022||Live, Online|