Re: IServiceProvider->QueryService() returns 80040154-class not re
You have said a few times that your application works on a 32-bit XP. 64-bit apps don't run on
32-bit OS's. If you are talking about a different build of the same source, that's not really
relevant. If your app is built for 64-bit, why would it get registered in the WOW6432Node?
The 80040154 (class is not registered) error is specifically talking about a "CoClass", which is
registered as a CLSID. An interface ID (typically named with IID) may be registered, but not
necessarily as implemented by your CoClass.
When you run regsvr32 against your module, are you running the one in the System32 directory?
(That's where the 64-bit programs are). The SysWow64 folder has the 32-bit versions - it's so
backwards and crazy that a lot of people get confused.
"Pradeep" <Pradeep@discussions.microsoft.com> wrote in message
news:A9A61EF5-2825-4BAF-A68D-8148F3173062@microsoft.com...
Just another query, when QueryService says 80040154- class not registered, is
it complaining of the refguid(1st parameter) or ISimpleDOMNode.
The refguid mentioned earlier doesn't exist in both the x32 (where my app
works) & x64 system and IID_ISimpleDOMNode exists in both.
So I see no difference other than IID_SimpleDOMNode existing under normal
and WOW branch of registry in x64. (Firefox installed is x32bit).
Any suggestions?
Thank You,
Pradeep
"Pradeep" wrote:
Hi Scot,
Thanks for your quick help. But my application is compiled as x64 binary. So
in this case reflection/rediection doesn't seem to be an issue.
Learned new concepts of reflection and redirection though.
Thank You,
Pradeep
"Scot T Brennecke" wrote:
Is your application actually compiled as an x64 binary, or is it a 32-bit app that runs in WOW?
You
can't have the same COM application be both 32-bit and 64-bit.
On 64-bit machines, you need to be aware of the registry reflection and redirection concepts:
Registry changes in x64-based versions of Windows Server 2003 and in Windows XP Professional
x64
Edition:
http://support.microsoft.com/kb/896459
"Pradeep" <Pradeep@discussions.microsoft.com> wrote in message
news:FCB802D4-6E96-4C5A-80A1-F6FBC8A52035@microsoft.com...
Hi,
My application which runs on 64bit XP fails at QueryService with error
80040154 - class not registered, it works properly on a 32bit XP.
I could see the GUID existing in registry of 32bit system but not in the
64bit system.
The refguid below refers to 'SApplicationObject Service'.
.....
const GUID refguid = {0x0c539790, 0x12e4, 0x11cf, 0xb6, 0x61,0x00, 0xaa,
0x00, 0x4c, 0xd6, 0xd8};
HRESULT hresult = pServProv->QueryService(refguid, IID_ISimpleDOMNode,
void**)&pNode);
......
During installation I install VC++ 2005 redistributable(x64) along with my
application.
My question is how do I register the required Interface class (i am aware of
regsvr32) and where does it exists, and how all this works in 32bit XP and
not in 64bit?
Any help/pointers would be greatly appreciated.
Thank You,
Pradeep