Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


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/


Multithreading and COM DLL's

OSR_Community_UserOSR_Community_User Member Posts: 110,217
This relates to a discussion from yesterday.

We're writing a COM DLL using VC6's ATL wizard. The COM DLL is intended to
be used by IIS, which maintains a pool of worker threads. A worker thread
will make a series of calls to the DLL as it sets various properties, then
finally invoke a method (really, call another function) which uses those
properties.

Somehow, we must make sure that each of IIS's worker threads is working with
its own, dedicated object within the DLL. We cannot have a single instance
of the DLL's class (which would then be shared by all of IIS's worker
threads), nor can we have multiple instances of the DLL's class which are
freely shared by all of IIS's worker threads. In either of these scenarios,
the property values would end up in a "last write wins" situation as each
thread stepped on prior values.

MSDN discussions "suggest" that certain COM threading models will accomplish
this, but there's just enough uncertainty to leave me nervous. Some of the
so-called "single threading models" sound not like they have a dedicated
object per thread, but more like they have a single object which can only be
accessed by a single thread - and all other threads must marshall their
access to the one-and-only object through that one-and-only thread.
Obviously that won't work in a thread pool environment like IIS, where
multiple simultaneous users need access to multiple simultaneous (but
separate) instantiated objects.

Guidance gratefully appreciated. Thanks!
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

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!
Kernel Debugging 13-17 May 2024 Live, Online
Developing Minifilters 1-5 Apr 2024 Live, Online
Internals & Software Drivers 11-15 Mar 2024 Live, Online
Writing WDF Drivers 20-24 May 2024 Live, Online