阅读:902回复:7
各位,请看这段代码
/*下面这段代码整苦了我,我反复测试了很多次,每次动态装载后都会以蓝屏告终,百思不得其解,大虾们帮助我啊!*/
BOOL MyfpDevice::OnSysDynamicDeviceInit() { if(NULL==(PrevHookProc=IFSMgr_InstallFileSystemApiHook(HookProc))) return FALSE; return TRUE; } DWORD MyfpDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams) { return 0; } int _cdecl HookProc(pIFSFunc FSDFnAddr, int FunctionNum, int Drive, int ResourceFlags, int CodePage, pioreq pir) { #ifdef DEBUG struct _QWORD Result; char ch[MAX_PATH+1]; strcpy(ch,NULL); if(NULL!=pir && NULL!=pir->ir_ppath) { UniToBCSPath((unsigned char *)ch, pir->ir_ppath->pp_elements, MAX_PATH, CodePage, &Result); ch[Result.ddLower]=\'\\0\'; } dout << ch <<endl; #endif return (*PrevHookProc)(FSDFnAddr, FunctionNum, Drive, ResourceFlags, CodePage, pir); } :o |
|
|
沙发#
发布于:2003-01-15 08:31
strcpy(ch,NULL);这句是什么意思?
|
|
板凳#
发布于:2003-01-15 14:02
以下这句你见过吧:
char *a=NULL; char b[50]; strcpy(b,a); <=> strcpy(b,NULL); 编译无警告 |
|
|
地板#
发布于:2003-01-16 07:58
我觉得它是一个逻辑错,但编译不会有错
|
|
地下室#
发布于:2003-01-16 08:13
你的这段代码在调试时会出错,release版估计不会有错
|
|
5楼#
发布于:2003-01-16 08:59
strpcy(a,NULL);就算逻辑有误,但把它视着:strcpy(a,\"\");编译时也不会有问题吧;
|
|
|
6楼#
发布于:2003-01-16 10:38
strpcy(a,NULL);strcpy(a,\"\");这两句有本质的区别,“”是一个空串,但null作为一个串什么也不是!
|
|
7楼#
发布于:2003-01-16 12:41
NULL==0==\'\\0\'==\"\" 虽然在逻辑上有些不对,但值相等。
无论如何,主要原因不在这句,就连把这句删除掉或者替换掉结果也一样。 |
|
|