z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1405回复:12

为什么我的的程序重启

楼主#
更多 发布于:2005-06-05 15:52
我的驱动安装后使用dll调用但是一调用就重起为什么.有什么可能性
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-06-05 16:41
你是如何调用的?softice可以截住吗?说的具体一点
z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-05 16:50
大侠恩典我的调用代码如下:
printf(\"Hello World!\\n\");

//SC_HANDLE hServiceMgr,hServiceTwdm;
BOOL bRtn;
DWORD dwRtn,dwSize;
TCHAR szDir[200];
//if(argc>1)
//{
//DelSvr(
    GetSystemDirectory(szDir , 200);
strcat(szDir,\"system32\\\\drivers\\\\objfre.sys\");
AfxMessageBox(dwSize);
LPCTSTR lpszBinaryPathName = TEXT(szDir);
hServiceMgr = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(hServiceMgr == NULL)
{
printf(\"openscmanager() faild %d \\n\",GetLastError());
return 0;
}
else
{
printf(\"openscmanager() ok!\\n\");
}
hServiceTwdm = CreateService(hServiceMgr,
TEXT(\"objfre.sys\"),
TEXT(\"objfre\"),
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
lpszBinaryPathName,
NULL,
NULL,
NULL,
NULL,
NULL);
if( hServiceTwdm == NULL )
{
dwRtn = GetLastError();

if( dwRtn != ERROR_IO_PENDING && dwRtn != ERROR_SERVICE_EXISTS )
{
CloseServiceHandle( hServiceMgr );
printf( \"CrateService() Faild %d ! \\n\", dwRtn );
return 0;
}
else
{
printf( \"CrateService() Faild Service is ERROR_IO_PENDING or ERROR_SERVICE_EXISTS! \\n\" );
}

hServiceTwdm = OpenService( hServiceMgr, TEXT(\"Twdm1\"), SERVICE_ALL_ACCESS );

if( hServiceTwdm == NULL )
{
dwRtn = GetLastError();
CloseServiceHandle( hServiceMgr );
printf( \"OpenService() Faild %d ! \\n\", dwRtn );
return 0;
}
else
{
printf( \"OpenService() ok ! \\n\" );
}

}
else
{
printf( \"CrateService() ok  ! \\n\" );
}
  

bRtn = StartService( hServiceTwdm, NULL, NULL );

if( !bRtn )
{
//ERROR_PATH_NOT_FOUND
dwRtn = GetLastError();

if( dwRtn != ERROR_IO_PENDING && dwRtn != ERROR_SERVICE_ALREADY_RUNNING )
{
printf( \"StartService() Faild  %d ! \\n\", dwRtn );

CloseServiceHandle( hServiceTwdm );
CloseServiceHandle( hServiceMgr );

return 0;
}
else
{
if( dwRtn != ERROR_IO_PENDING  )
{
printf( \"StartService() Faild  ERROR_IO_PENDING ! \\n\");
}
else
{
printf( \"StartService() Faild  ERROR_SERVICE_ALREADY_RUNNING ! \\n\");
}
}
}


hWdm = CreateFile(\"\\\\\\\\.\\\\Twdm1\",
                         GENERIC_WRITE | GENERIC_READ,
                         0,
                         NULL,
                         OPEN_EXISTING,
                         0,
                         NULL
                         );
if( hWdm != INVALID_HANDLE_VALUE )
{
printf( \"Open Driver Twdm ok ! \\n\" );
}
else
{
printf( \"Open Driver Twdm faild %d ! \\n\", GetLastError() );
}

CloseHandle( hWdm );

CloseServiceHandle( hServiceTwdm );
CloseServiceHandle( hServiceMgr );

printf( \"按任意键 卸载驱动程序 !\\n\" );
getch();    

//DelSvr( \"Twdm1\" );

return 0;
softice我还没研究呢.
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-06-05 17:00
你先装个softice,学学基本用法。你启动驱动,然后CreateFile打开.可以重点查查driverentry,和MJ_CREATE的代码。驱动主要是调出来的,不用调试器怎么成
z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-05 17:58
大侠我用softice打开异常后截住了一些信息
break due to page fault (0Eh) . fault = 0000
MSR LastExceptionFromIp = 8046B626
MSR LastExcepTionInIp = 8046B4B5
就这些了
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2005-06-06 09:27
大侠我用softice打开异常后截住了一些信息
break due to page fault (0Eh) . fault = 0000
MSR LastExceptionFromIp = 8046B626
MSR LastExcepTionInIp = 8046B4B5
就这些了

学习用ice调试驱动。重点看看你的DriverEntry,MJ_CREATE的代码,或者用ice跟踪一下。
崩溃以后,在ice里用stack命令看一下,一般可以定位到你出错的代码。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-06 09:49
大侠我用softice打开异常后截住了一些信息
break due to page fault (0Eh) . fault = 0000
MSR LastExceptionFromIp = 8046B626
MSR LastExcepTionInIp = 8046B4B5
就这些了

设置完全转储,分析一下DUMP文件
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2005-06-06 09:59
[quote]大侠我用softice打开异常后截住了一些信息
break due to page fault (0Eh) . fault = 0000
MSR LastExceptionFromIp = 8046B626
MSR LastExcepTionInIp = 8046B4B5
就这些了

设置完全转储,分析一下DUMP文件 [/quote]
楼主说,还没用过softice,这是第一次用ice,估计也是第一次写
驱动,分析dump文件可能难度太大,呵呵,对了,你上不上msn?
我加了你,看不到你上来
z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-06-06 13:01
版主我的msn是a13455525731@hotmail.com可能有时候写错千万不要加错了,谢谢。我经常在线
z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-06-07 19:53
版主我的程序仍然蓝屏
STOP:0x0000001E(0xC0000005,0x8046b4b5,0x00000000,0x00000000)KMODE_EXCEPTION_NOT_HANDLE
Address 8046B4B5 base at 80400000   datastamp 3ce6c002 ntoskrl.exe
实在没有办法啊,版主救我啊.
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
10楼#
发布于:2005-06-07 21:43
贴所有源码上来吧
z13455525731
驱动牛犊
驱动牛犊
  • 注册日期2005-03-10
  • 最后登录2009-07-02
  • 粉丝0
  • 关注0
  • 积分107分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-06-08 10:41
当程序发生错误使用softice的stack命令进行查询
显示:
ntoskrnl!ExFreePoolWithTag+014F
ntoskrnl!ExFreePool+000B
ntoskrnl!NtSetVolumeInformationFile+23EE
这是什么原因
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2005-06-08 14:52
你在DriverEntry,MJ_CREATE分别设置断点,跟踪一下。
你写的是什么驱动?
游客

返回顶部