--- 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?
 


Reply via email to