Multithreading and COM DLL's

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!