com - 32 and 64 bit interoperability on 64-bit Windows -


is there thorough authoritative reference discusses interoperability between 32-bit , 64-bit processes? based on googling have deduced that:

  1. a 32-bit dll can reside in 32-bit process, , 64-bit dll in 64-bit process.
  2. 32 , 64-bit processes can communicate using loosely coupled message systems, such network communications, means can communicate using com/dcom.
  3. 32 , 64-bit com components have different registry entries. component typically registered in 1 of 2 , typically seen in 1 of 2 worlds.
  4. a 32-bit process can create registered 64-bit com component if uses cocreateinstance 64-bit invocation flag, or (and guessing on one, possible?) if 64-bit component somehow registered in 32-bit registry under hood still created out of process 64-bit process, or if there 32-bit shell com component creates 64-bit component , redirects calls it?

this suggests that: 1. 32-bit application can not use getobject hold of 64-bit version of excel running? or can it? how running object table (rot) impacted 32 versus 64-bit issue? can 32-bit process create instance of excel if 64-bit version of office installed? think answer "no" unless 32-bit process uses 64-bit flag in cocreateinstance call, or if excel somehow registered in 32-bit world well?

does microsoft automatically having cocreateinstance 32-bit process check 64-bit registry , try create out of process 64-bit component if there none registered in 32-bit registry? have seen release notes 64-bit office microsoft warns access 32-bit applications 64-bit excel not working, yet know of 1 instance seemed work.

is there technical factual reference this?

it explained quite in msdn library docs clsctx. lots of rules, default behavior is:

if neither client nor server specifies preference, then:

  • if computer hosts server running windows xp or windows server 2003 without service pack 1 (sp1) or later installed, com prefer 64-bit version of server if available; otherwise activate 32-bit version of server.

  • if computer hosts server running windows server 2003 sp1 or later installed, com try match server architecture client architecture. in other words, 32-bit client, com activate 32-bit server if available; otherwise activate 64-bit version of server. 64-bit client, com activate 64-bit server if available; otherwise activate 32-bit server.

check msdn article if want override behavior.


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -