More DCOM notes

Mike Hearn mh at codeweavers.com
Sun Jan 23 06:15:15 CST 2005


On Sat, 22 Jan 2005 16:29:54 -0600, Rob Shearman wrote:
> Do we have any details about how you use RTAs? I have a feeling this was 
> something that was due to be implemented for Windows 2000, but was 
> dropped before it shipped.

Hmm, good point. I'm not sure. I had a feeling Chris Brumme had talked
about them in his blog at one point, but I never encountered mention of it
on MSDN. I'll put in a note saying that they may not be actually
implemented.

> This is wrong. It is 5 for normal marshals, and 0 for both table-weak
> and table-strong.
> The reasoning is this:
> In the general case, we want to know exactly when an object is
> unmarshaled and released, so we can accurately control the lifetime of
> the stub object. This is what happens when cPublicRefs is zero. However,
> in many cases, we only want to unmarshal an object once. Therefore, if
> we strengthen the rules to say when marshaling that we will only
> unmarshal once, then we no longer have to know when it is unmarshaled.
> Therefore, we can give out an arbitrary number of references when
> marshaling and basically say "don't call me, except when you die."

Ah OK, this part of table marshalling has always confused me. I don't
really understand why 5 was chosen: assuming the proxy is still alive it
should never need more than one reference on the stub so there should be
no need for it to go back to the stub to get more. Yet this is what
happens.

> Only in the implementation I've written and am currently testing now.
> The native version generates an IPID as per any other object and simply
> notifies the SCM of this IPID.

Yeah sorry, I knew that :/
 
> In fact, according to the DCOM draft spec, they are machine-scoped, but
> this implies apartment-scoped.

Yes, it's a shame the different sources we have all contradict each other
on such fundamental points. It's especially a shame that the DCOM draft
spec uses such confusing terminology, quite why they decided to ignore
apartments in that I don't know, calling them an implementation detail of
Windows is a bit of a stretch ...

thanks -mike




More information about the wine-devel mailing list