Short reply: Very few components support nsIClassInfo, so you can't reliably use it to find the supported interfaces.
Long reply below.


Christopher Lenz wrote:
  cmpmgr->GetClassObjectByContractID(contractID,
      NS_GET_IID(nsISupports), getter_AddRefs(supports));

Hm, GetClassObject? Why are you using this?
Are you aware that this will not give you the component corresponding to this contract id, but just a factory for it?


For most of the components, I can successfully QueryInterface() to the nsIClassInfo interface, and the GetInterfaces() call succeeds. However, the array returned is always empty (array is NULL, size_is is 0)! Are there any requirements for getting nsIClassInfo to work that I might be missing here?

The GetInterfaces implementation of GenericFactory looks into its moduleinfo structure for a getinterfaces pointer. However, very few components really implement nsIClassInfo, and thus this pointer is null, and hence this function does what it does.


_______________________________________________
Mozilla-xpcom mailing list
[EMAIL PROTECTED]
http://mail.mozilla.org/listinfo/mozilla-xpcom

Reply via email to