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