Re: COM dll server registration on Windows 64 bits
"Olivier" <toon@toonworld.com> wrote in message
news:%23SSBemeeIHA.4312@TK2MSFTNGP03.phx.gbl...
Hello Willy,
"Willy Denoyette [MVP]" <willy.denoyette@telenet.be> a ?crit dans le
message de news: OO2AWQXeIHA.5900@TK2MSFTNGP02.phx.gbl...
"Olivier" <toon@toonworld.com> wrote in message
news:ewQ9a1SeIHA.1208@TK2MSFTNGP03.phx.gbl...
Hello,
We have another question related to this problem:
Can a 64 bits process (or dll) is able to access a TypeLib embedded in a
32 bits dll (or the opposite)?
Using ProcessExplorer, we saw a 64 bits dll listed in our 32 bits
process (and, yes, we are sure that this dll is 64 bits).
Best regards,
Olivier.
Are you sure that the 64-bit DLL was a COM DLL?
For instance, a 32-bit process loads the 32-bit and the 64-bit of the
ntdll.dll, part of each 32-bit process contains 64-bit code which is used
when calling into the kernel. Besides ntdll.dll there are other dll's
loaded that are 64-bit (wow64.dll, wow64cpu.dll etc..).
Yes, we are sure because this is one of our COM dlls compiled in 64 bits
:)
ProcessExplorer and DependencyWalker tell us that this dll is 64 bits
This is weird, 32-bit COM should not have an idea about the location of this
64-bit DLL, nor should DependencyWalker show this DLL, are you sure you
don't statically link?.
I would suggest you to forget about these tools and load the application in
the Windbg (or similar) debugger, set a breakpoint on library load (sxe ld
libname).
Nevertheless, I will check this again.
Maybe a typelib resource can be accessed using RPC? I mean if a 32 bits
process requires this typelib (only) stored in a 64 bits module, then COM
may use RPC to access it (or a specific Win32 API that is only interested
by the resource)
I would be very surprised if the 32-bit COM library would (could) load a
64-bit COM DLL into a process just to get at the embedded typelib info,
which is already present in the 32-bit COM dll.
Does COM exist as 32 bits and 64 bits on Windows64?
I think so.
Sure, the COM library (OLE32, oleaut32 etc..) is user mode code, only
libraries with the same bit-ness can/will be loaded in a user mode process
(except the ones I mentioned before).
Willy.