阅读:1796回复:6
救命阿~~~~~~~又是蓝屏!!!
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: |
|
沙发#
发布于: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 ...... 哪位遇到过类似的问题?问题出在哪里?谢谢 |
|
板凳#
发布于:2003-01-27 12:32
编译的时候vxd是否已经在运行了?如果是的话,我碰到过
|
|
地板#
发布于:2003-01-27 15:39
就是在vxd运行的时候啊,你是怎么解决的?
|
|
地下室#
发布于:2003-01-27 16:59
有没有分啊?呵呵,开玩笑:)
是因为VC编译用了Console Character FSD, 判断ResType为IFSFH_RES_CFSD的情况不做处理就OK了~ |
|
5楼#
发布于:2003-01-27 17:02
忘了说一句了,做驱动我最不怕的就是蓝屏了,因为蓝屏错误很容易找到原因所在,嘿嘿
最头疼的是死锁和把文件系统弄乱的BUG,慢慢体会吧~ |
|
6楼#
发布于:2003-01-28 20:06
你解决了我不少问题了,该给分,理由太充分了。呵呵~
以后还会有不少问题呢,还请多多帮忙。 我今天要回家了,过年去。顺便说声“祝大家过个好年!” :P |
|