yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1796回复:6

救命阿~~~~~~~又是蓝屏!!!

楼主#
更多 发布于:2003-01-24 21:00
typedef struct {
    // embedded ioreq stucture
    ioreq            ifsir;
    // the structure isn\'t really defined this way, but
    // we take advantage of the layout for our purposes
    struct hndlfunc  *ifs_hndl;
    ULONG            reserved[10];
} ifsreq, *pifsreq;

PCHAR FilemonGetFullPath(fh_t filenumber,PCHAR FullName,int Drive,int ResType,int CodePage,pioreq pir)
{
    pIFSFunc        enumFunc;
    ifsreq          ifsr;
    path_t          uniFullName;
    int             retval;

    uniFullName = (path_t)IFSMgr_GetHeap( MAXPATHLEN * sizeof(WCHAR) + sizeof( path_t));
    if( uniFullName )
{
        //
        // Send a query file name request
        //
        memcpy( &ifsr, pir, sizeof( ifsreq ));

        ifsr.ifsir.ir_flags = ENUMH_GETFILENAME;
        ifsr.ifsir.ir_ppath = uniFullName;
        enumFunc = ifsr.ifs_hndl->hf_misc->hm_func[HM_ENUMHANDLE];

        retval = (**ppPrevHook)(enumFunc, IFSFN_ENUMHANDLE,
                                    Drive, ResType, CodePage,
                                    (pioreq) &ifsr);

        if( retval == ERROR_SUCCESS )
{
            //FilemonConvertParsedPath( Drive, uniFullName, FullName );
            int  i = 0;
   _QWORD  result;

   if( Drive != 0xFF )
{
       //
       // Its a volume-based path
       //
       FullName[0] = Drive+\'A\'-1;
       FullName[1] = \':\';
       i = 2;
   }
   FullName = 0;
   UniToBCSPath((unsigned char *)&FullName, uniFullName->pp_elements,
                 MAXPATHLEN-1, BCS_WANSI, &result );
   FullName[ i + result.ddLower ] = 0;
        }
        IFSMgr_RetHeap( (void *) uniFullName );
    }
    return FullName;
 }

这是vxd中求得文件路径的函数(在文件读写时),我是从copyhook的列子中考下来的.
如果是一般的操作没什么问题,可是编译vc工程时会出蓝屏.
错误是在写的时候(读没问题)
那位高手请指点一下,真是讨厌死蓝屏了 :mad:
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-25 13:35
下面是正常编译的情况
.....
/section:ICRTTEXT,rwia4!e!c
/section:ICRTEND,rwia4!e!c
 set INCLUDE= .;D:\\Win98_Tools\\NuMega\\VtoolsD\\INCLUDE;D:\\Win98_Tools\\NuMega\\VtoolsD\\INCLUDE\\DAA;
 set CL= -c -nologo -GB -GF -Gy -Gs -Zp1 -DWANTVXDWRAPS -DVTOOLSD -DALT_INIT_SEG -DIS_32 -DNTVERSION=\'WDM\' -DVXD_COMPATLIB /Od /Oi -Zi -FdFMSYSTEM.PDB -DDEBUG=1 -DWIN40 -DWIN40_OR_LATER -DWFW311_OR_LATER  /DALT_INIT_SEG /FoFileHook.OBJ
 D:\\WIN98_~1\\MICROS~1\\VC98\\bin\\CL.EXE .\\FileHook.cpp
FileHook.cpp
 D:\\WIN98_~1\\MICROS~1\\VC98\\bin\\EDITBIN.EXE @D:\\Win98_Tools\\NuMega\\VtoolsD\\include\\ebin.cmd FileHook.OBJ | D:\\Win98_Tools\\NuMega\\VtoolsD\\bin\\fltrwarn LNK4039 LNK4069
Microsoft (R) COFF Binary File Editor Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/section:_IDATA,rwia4ec
/section:_LDATA,rwia4ec
/section:_PDATA,rwia4e!c
/section:_SDATA,rwia4ec
/section:_DBODATA,rwia4ec
/section:ICRTTEXT,rwia4!e!c
/section:ICRTEND,rwia4!e!c
 copy FMSYSTEM.DEF C:NUL
        1 file(s) copied
        ~~~~~~~~~~~~~~~~~~~这句没出来就死掉了
 if not exist FMSYSTEM.VRC copy D:\\Win98_Tools\\NuMega\\VtoolsD\\include\\default.vrc FMSYSTEM.VRC
 D:\\Win98_Tools\\NuMega\\VtoolsD\\bin\\vxdver FMSYSTEM.VRC FMSYSTEM.RES
 D:\\WIN98_~1\\MICROS~1\\VC98\\bin\\link.exe @C:\\WINDOWS\\TEMP\\nma71579.
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/IGNORE:4078,4039,4070
/VXD /OUT:FMSYSTEM.VXD /PDB:FMSYSTEM.PDB /NODEFAULTLIB
/DEBUG /DEBUGTYPE:CV
/DEF:FMSYSTEM.DEF
......

哪位遇到过类似的问题?问题出在哪里?谢谢
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-27 12:32
编译的时候vxd是否已经在运行了?如果是的话,我碰到过
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-27 15:39
就是在vxd运行的时候啊,你是怎么解决的?
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-27 16:59
有没有分啊?呵呵,开玩笑:)

是因为VC编译用了Console Character FSD,
判断ResType为IFSFH_RES_CFSD的情况不做处理就OK了~
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-27 17:02
忘了说一句了,做驱动我最不怕的就是蓝屏了,因为蓝屏错误很容易找到原因所在,嘿嘿

最头疼的是死锁和把文件系统弄乱的BUG,慢慢体会吧~
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-01-28 20:06
你解决了我不少问题了,该给分,理由太充分了。呵呵~
以后还会有不少问题呢,还请多多帮忙。
我今天要回家了,过年去。顺便说声“祝大家过个好年!” :P
游客

返回顶部