--- In [email protected], "Sheri" <sheri...@...> wrote:
> Did you read all those articles foxtra referenced some time ago about
> what should not be done by a dll?
Yeah, interesting read.
All I do is
(a) allocate memory for a bunch of IDispatch __RPC_FAR * and another a
bunch of IEnumVARIANT*. But just allocating memory for
pointers should have no effect on any COM stuff, even if
pointers will eventuially be to COM thingies.
(b) call ppsv->RegisterSig
> FWIW I recall reading in one of them that you can invoke a loader exe
> to perform those tasks.
Don't do any of those bad things in DllMain, like start thread, sync with
thread, call LoadLibrary, etc. If I did and it mattered, com dll would hang on
first use of dll.
In any case the word doc concentrates on stuff you shouldn't do when you start
a Dll (via things in DllMain). Problem I've got is what happens when I try to
invoke OleUnInitialise(). Problem arises both when I do so on a releaseAll,
and when I do so on trying to unload the dll. (both entry points lead to call
of common code, which signals my service thread proc to terminate, which in
turn (used to) calls OleUnInitialise() as it exits)
>From which I deduce problem is not to do with conflict because unloading dll.
And, Bruce: I'm sure at one point in history com.unload didn't hang.
So I hypothesis that either I changed something and broke something (possible,
though I can't see what), or maybe something changed in powerpro itself.
Do you remember when you started calling OleInitialize/OleUnInitialize in
Powerpro? What version, what year? If it's been there forever, that can't be
the issue.
If OleInitialize/OleUnInitialize started being called sometime in the last few
years, why are they called, i.e. what other com stuff do you do that requires
COM initialisation?