注册64位ATL COM DLL错误0x80020009 [英] registering 64bit ATL COM dll error 0x80020009

查看:265
本文介绍了注册64位ATL COM DLL错误0x80020009的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经构建了一个64位ATL COM dll。


当我在IA64 Windows Enterprise Server 2003上注册dll时,我会在出现错误后获得

。 br />

mydll.dll中的DllRegisterServer失败。

返回代码为:0x80020009


我用来注册的命令dll是


c:\ test> regsvr32 mydll.dll


我已经验证即使对于64位,regsvr也称为regsvr32.exe

在system32文件夹中。


Winerror.h说错误是DISP_E_EXCEPTION

这是异常发生。


#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009L)


这可能是引发此异常的任何对齐问题吗?


我已经验证了使用依赖walker所有文件引用了

由机器上存在的dll




32位版本的该DLL在32位机器上运行良好。


我的构建机器设置是:

1)Windows 2003标准服务器(32位)

2)VC ++ .NET 2003(v7.1)

2)平台SDK 2003年4月


目标计算机是基于Itanium的HP Rx 2600和Windows Enterprise

server 2003.


任何线索都将不胜感激。


问候,

Vijay Chegu

// vijaycheguregsvrexception

解决方案

在调试器下运行它,看看,ntsd -lines regsvr32 mydll.dll


-


Ken Wickes [MSFT]

此帖子提供按现状没有保证,也没有赋予任何权利。

Vijay Chegu < 6 ******** @ indiatimes.com>在消息中写道

news:68 ************************** @ posting.google.c om ...

我已经构建了64位ATL COM dll。

当我在IA64 Windows Enterprise Server 2003上注册dll时,我得到
以下错误。

mydll.dll中的DllRegisterServer失败。
返回代码为:0x80020009

我用来注册dll的命令是

c:\测试> regsvr32 mydll.dll

我已经验证即使对于64位,regsvr在system32文件夹中也称为regsvr32.exe

Winerror.h说错误是DISP_E_EXCEPTION
这是异常发生。

#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009L)

这可能是触发此异常的任何对齐问题吗?

我已经验证了使用依赖walker,机器上存在dll
引用的所有文件。

32位版本的DLL同样在32bit上运行良好嘛中文。

我的构建机器设置是:
1)Windows 2003标准服务器(32位)
2)VC ++ .NET 2003(v7.1)
2 )Platform SDK April 2003

目标机器是基于Itanium的HP Rx 2600与Windows Enterprise
server 2003.

任何线索都将不胜感激。

问候,
Vijay Chegu
// vijaycheguregsvrexception



嗨Ken Wickes,

我已经粘贴了运行此命令时获得的输出


c:\ test \ release> ntsd -lines regsvr32 mydll.dll

我无法从输出中找出任何东西:-(

我已粘贴在下面。


这个dll在同一个文件夹中从我执行此命令的位置。

但我看到系统找不到指定的文件。错误。

它试图找到哪个文件?


当我跑步时

c:\ test \ release> regsvr32 mydll.dll


我得到的错误不是找不到文件,所以regsvr32肯定是

能够找到mydll.dll来注册。 br />

你可以指点我一些可以帮助我隔离

问题的资源吗?


Thanx和问候,

Vijay Chegu


------------->

Microsoft(R) Windows调试器版本5.2.3790.0

版权所有(c)Microsoft Corporation。保留所有权利。


CommandLine:regsvr32 mydll.dll

调用LoadLibrary(ext)失败,Win32错误2

系统找不到指定的文件。

请检查调试器配置和/或网络访问权限。

调用LoadLibrary(exts)失败,Win32错误2

系统找不到指定的文件。

请检查调试器配置和/或网络访问权限。

通话到LoadLibrary(uext)失败,Win32错误2

系统找不到指定的文件。

请检查调试器配置和/或网络访问权限。

调用LoadLibrary(ntsdexts)失败,Win32错误2

系统找不到指定的文件。

请检查你的调试器配置和/或网络访问。

符号搜索路径是:***无效***:验证_NT_SYMBOL_PATH

设置

Execu表搜索路径是:

ModLoad:00000000`01000000 00000000`01010000 regsvr32.exe

ModLoad:00000000`77e70000 00000000`77ff4000 ntdll.dll

ModLoad:00000000`77c90000 00000000`77e60000

C:\ WINDOWS.0 \ system32 \ kernel32.dl

l

ModLoad: 000006fb`7faa0000 000006fb`7fb86000

C:\ WINDOWS.0 \ system32 \msvcrt.dll

ModLoad:000006fb`7fe80000 000006fb`7ffe0000

C:\ WINDOWS.0 \ system32 \ ADVAPI32.dl

l

ModLoad:000006fb`7fc60000 000006fb`7fe74000

C:\ WINDOWS.0 \ system32 \RPCRT4.dll

ModLoad:00000000`77b30000 00000000`77c8a000

C:\ WINDOWS.0 \ system32 \\ \\ USDER32.dll

ModLoad:000006fb`7fb90000 000006fb`7fc5e000

C:\ WINDOWS.0 \ system32 \ GDI32.dll

ModLoad:000006fb`7e7b0000 000006fb`7eb20000

C:\ WINDOWS.0 \ system32 \ole32.dll

(328.6e8):中断指令异常 - 代码80000003(第一次机会)

***错误:找不到符号文件。违约出口

符号为ntdl

l.dll -

ntdll!EtwpGetTraceBuffer + f4eb8:

Falcon EM解码器xversion 9.60,api 9.6,emdb 1.2

00000000`77f6be58 break.i 80016

0:000>

< -------------


--------------

" Ken Wickes [MSFT]" <柯**** @ online.microsoft.com>在消息新闻中写道:< eF ************** @ tk2msftngp13.phx.gbl> ...

在调试器下运行它并查看, ntsd -lines regsvr32 mydll.dll"

-



下面的中断是进程启动时的初始断点。 />

从网上获取调试器包(dor IA64)
http://www.microsoft.com/whdc/ddk/de...g/default.mspx

并设置符号根据文档的路径。


然后运行

c:\ debuggers> start ntsd -g -G regsvr32.exe< FULL_PATH_TO_YOUR_DLL>


如果一切正常,调试器将启动并干净地退出,

否则它会中断。请报告

打破良好的输出。

-

此帖子按原样提供。没有保证,也没有授予任何权利。

使用任何包含的脚本样本都要遵守
http://www.microsoft.com/info/cpyright.htm

" Vijay Chegu" < 6 ******** @ indiatimes.com>在消息中写道

news:68 ************************** @ posting.google.c om ...

嗨Ken Wickes,

我粘贴了运行此命令时获得的输出

c:\ test \ release> ntsd - line regsvr32 mydll.dll

我无法从输出中找出任何东西:-(
我把它贴在下面。

这个dll在同一个文件夹中从我执行此命令的位置。
但我看到系统找不到指定的文件。错误。
它试图找到哪个文件?

我跑了
c:\ test \ release> regsvr32 mydll.dll

我得到的错误不是找不到文件,所以regsvr32肯定能够找到mydll.dll进行注册。

请你帮我点一些可以帮助我隔离
问题的资源吗?

Thanx和问候, Vijay Chegu

------------->
Microsoft(R)Windows Debugger Version 5.2。 3790.0
版权所有(c)Microsoft Corporation。保留所有权利。

CommandLine:regsvr32 mydll.dll
对LoadLibrary(ext)的调用失败,Win32错误2
系统找不到指定的文件。
请检查调试器配置和/或网络访问。
调用LoadLibrary(exts)失败,Win32错误2
系统找不到指定的文件。
请检查您的调试器配置和/或网络访问。
调用LoadLibrary(uext)失败,Win32错误2
系统找不到指定的文件。
请检查您的调试器配置和/或网络访问。
调用LoadLibrary(ntsdexts)失败,Win32错误2
系统找不到指定的文件。
请检查您的调试器配置和/或网络访问。
符号搜索路径是:***无效***:验证_NT_SYMBOL_PATH
设置
可执行搜索路径是:
ModLoad:00000000`01000000 00000000` 0 1010000 regsvr32.exe
ModLoad:00000000`77e70000 00000000`77ff4000 ntdll.dll
ModLoad:00000000`77c90000 00000000`77e60000
C:\ WINDOWS.0 \ system32 \ kernel32.dl
l
modLoad:000006fb`7faa0000 000006fb`7fb86000
C:\ WINDOWS.0 \ system32 \ msvcrt.dll
ModLoad:000006fb`7fe80000 000006fb`7ffe0000
C:\ WINDOWS.0 \ system32 \ ADVAPI32.dl
l
ModLoad:000006fb`7fc60000 000006fb`7fe74000
C:\ WINDOWS.0 \ system32 \ RPCRT4.dll
ModLoad:00000000`77b30000 00000000`77c8a000
C:\ WINDOWS.0 \ system32 \ _USER32.dll
ModLoad:000006fb`7fb90000 000006fb`7fc5e000
C:\ WINDOWS.0 \ system32 \ GDI32.dll
ModLoad:000006fb`7e7b0000 000006fb`7eb20000
C:\ WINDOWS.0 \ system32 \ole32.dll
(328.6e8):中断指令异常 - 代码80000003(第一次机会)
***错误:找不到符号文件。违约出口
符号为ntdl
l.dll -
ntdll!EtwpGetTraceBuffer + f4eb8:
Falcon EM Decoder xversion 9.60,api 9.6,emdb 1.2
00000000`77f6be58 break.i 80016
0:000>
< -------------

------- -------
Ken Wickes [MSFT]" <柯**** @ online.microsoft.com>在消息中写道



news:< eF ************** @ tk2msftngp13.phx.gbl> ...

在调试器下运行它并查看,ntsd -lines regsvr32 mydll.dll

-



I have built a 64bit ATL COM dll.

When i register the dll on IA64 windows Enterprise server 2003, i get
following error.

DllRegisterServer in mydll.dll failed.
Return code was : 0x80020009

The command i am using to register the dll is

c:\test>regsvr32 mydll.dll

I have verified that even for 64bit the regsvr is called regsvr32.exe
in system32 folder.

Winerror.h says the error is DISP_E_EXCEPTION
which is Exception occurred.

#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009L)

Can this be any alignment issue that is triggering this exception ?

I have verified using dependency walker that all the files referenced
by the dll
exist on the machine.

32bit version of the DLL same works perfectly well on 32bit machines.

My build machine setup is :
1)Windows 2003 standard server (32 bit)
2)VC++ .NET 2003 (v7.1)
2)Platform SDK April 2003

The target machine is Itanium based HP Rx 2600 with Windows Enterprise
server 2003.

Any clues will be greatly appreciated.

Regards,
Vijay Chegu
//vijaycheguregsvrexception

解决方案

Run it under the debugger and see, "ntsd -lines regsvr32 mydll.dll"

--

Ken Wickes [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.
"Vijay Chegu" <vi********@indiatimes.com> wrote in message
news:68**************************@posting.google.c om...

I have built a 64bit ATL COM dll.

When i register the dll on IA64 windows Enterprise server 2003, i get
following error.

DllRegisterServer in mydll.dll failed.
Return code was : 0x80020009

The command i am using to register the dll is

c:\test>regsvr32 mydll.dll

I have verified that even for 64bit the regsvr is called regsvr32.exe
in system32 folder.

Winerror.h says the error is DISP_E_EXCEPTION
which is Exception occurred.

#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009L)

Can this be any alignment issue that is triggering this exception ?

I have verified using dependency walker that all the files referenced
by the dll
exist on the machine.

32bit version of the DLL same works perfectly well on 32bit machines.

My build machine setup is :
1)Windows 2003 standard server (32 bit)
2)VC++ .NET 2003 (v7.1)
2)Platform SDK April 2003

The target machine is Itanium based HP Rx 2600 with Windows Enterprise
server 2003.

Any clues will be greatly appreciated.

Regards,
Vijay Chegu
//vijaycheguregsvrexception



Hi Ken Wickes,

I have pasted the output obtained when i ran this command

c:\test\release>ntsd -lines regsvr32 mydll.dll

I couldnt make out any thing from the output :-(
I have pasted it below.

The dll is in the same folder from where i am executing this command.
But i see "The system cannot find the file specified." error.
Which file is it trying to find ?

When i ran
c:\test\release>regsvr32 mydll.dll

The error i get is not "file not found", so regsvr32 is definitely
able to find mydll.dll to register.

Can u kindly point me at some resources that can help me isolate the
problem ?

Thanx and Regards,
Vijay Chegu

------------->
Microsoft (R) Windows Debugger Version 5.2.3790.0
Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: regsvr32 mydll.dll
The call to LoadLibrary(ext) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(exts) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(uext) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(ntsdexts) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
Symbol search path is: *** Invalid *** : Verify _NT_SYMBOL_PATH
setting
Executable search path is:
ModLoad: 00000000`01000000 00000000`01010000 regsvr32.exe
ModLoad: 00000000`77e70000 00000000`77ff4000 ntdll.dll
ModLoad: 00000000`77c90000 00000000`77e60000
C:\WINDOWS.0\system32\kernel32.dl
l
ModLoad: 000006fb`7faa0000 000006fb`7fb86000
C:\WINDOWS.0\system32\msvcrt.dll
ModLoad: 000006fb`7fe80000 000006fb`7ffe0000
C:\WINDOWS.0\system32\ADVAPI32.dl
l
ModLoad: 000006fb`7fc60000 000006fb`7fe74000
C:\WINDOWS.0\system32\RPCRT4.dll
ModLoad: 00000000`77b30000 00000000`77c8a000
C:\WINDOWS.0\system32\USER32.dll
ModLoad: 000006fb`7fb90000 000006fb`7fc5e000
C:\WINDOWS.0\system32\GDI32.dll
ModLoad: 000006fb`7e7b0000 000006fb`7eb20000
C:\WINDOWS.0\system32\ole32.dll
(328.6e8): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for ntdl
l.dll -
ntdll!EtwpGetTraceBuffer+f4eb8:
Falcon EM Decoder xversion 9.60, api 9.6, emdb 1.2
00000000`77f6be58 break.i 80016

0:000>
<-------------

--------------
"Ken Wickes [MSFT]" <ke****@online.microsoft.com> wrote in message news:<eF**************@tk2msftngp13.phx.gbl>...

Run it under the debugger and see, "ntsd -lines regsvr32 mydll.dll"

--



the break below is the initial breakpoint on process startup.

Get the debugger package from the web (dor IA64)
http://www.microsoft.com/whdc/ddk/de...g/default.mspx
and set the symbols path as per the documentation.

Then run
c:\debuggers>start ntsd -g -G regsvr32.exe <FULL_PATH_TO_YOUR_DLL>

If everything is OK, the debugger will start and exit cleanly,
otherwise it will break for good. Please report the output of the
break-for-good.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
"Vijay Chegu" <vi********@indiatimes.com> wrote in message
news:68**************************@posting.google.c om...

Hi Ken Wickes,

I have pasted the output obtained when i ran this command

c:\test\release>ntsd -lines regsvr32 mydll.dll

I couldnt make out any thing from the output :-(
I have pasted it below.

The dll is in the same folder from where i am executing this command.
But i see "The system cannot find the file specified." error.
Which file is it trying to find ?

When i ran
c:\test\release>regsvr32 mydll.dll

The error i get is not "file not found", so regsvr32 is definitely
able to find mydll.dll to register.

Can u kindly point me at some resources that can help me isolate the
problem ?

Thanx and Regards,
Vijay Chegu

------------->
Microsoft (R) Windows Debugger Version 5.2.3790.0
Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: regsvr32 mydll.dll
The call to LoadLibrary(ext) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(exts) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(uext) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
The call to LoadLibrary(ntsdexts) failed, Win32 error 2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
Symbol search path is: *** Invalid *** : Verify _NT_SYMBOL_PATH
setting
Executable search path is:
ModLoad: 00000000`01000000 00000000`01010000 regsvr32.exe
ModLoad: 00000000`77e70000 00000000`77ff4000 ntdll.dll
ModLoad: 00000000`77c90000 00000000`77e60000
C:\WINDOWS.0\system32\kernel32.dl
l
ModLoad: 000006fb`7faa0000 000006fb`7fb86000
C:\WINDOWS.0\system32\msvcrt.dll
ModLoad: 000006fb`7fe80000 000006fb`7ffe0000
C:\WINDOWS.0\system32\ADVAPI32.dl
l
ModLoad: 000006fb`7fc60000 000006fb`7fe74000
C:\WINDOWS.0\system32\RPCRT4.dll
ModLoad: 00000000`77b30000 00000000`77c8a000
C:\WINDOWS.0\system32\USER32.dll
ModLoad: 000006fb`7fb90000 000006fb`7fc5e000
C:\WINDOWS.0\system32\GDI32.dll
ModLoad: 000006fb`7e7b0000 000006fb`7eb20000
C:\WINDOWS.0\system32\ole32.dll
(328.6e8): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for ntdl
l.dll -
ntdll!EtwpGetTraceBuffer+f4eb8:
Falcon EM Decoder xversion 9.60, api 9.6, emdb 1.2
00000000`77f6be58 break.i 80016

0:000>
<-------------

--------------
"Ken Wickes [MSFT]" <ke****@online.microsoft.com> wrote in message


news:<eF**************@tk2msftngp13.phx.gbl>...

Run it under the debugger and see, "ntsd -lines regsvr32 mydll.dll"

--



这篇关于注册64位ATL COM DLL错误0x80020009的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆