阅读:2304回复:9
关于Hook CreateFileW的问题
在用户层Hook了CreateFileW函数
在自己的函数中直接转给真正的CreateFileW,可是真正的函数 总不会执行成功,GetLastError错误为找不到指定的文件 HANDLE WINAPI MyCreateFileW(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) { HANDLE hFile; TCHAR szRet[5]; TCHAR szFileName[256]; WideCharToMultiByte(CP_ACP,0,(const unsigned short *)lpFileName,-1,szFileName,255,NULL,NULL); OutputString(_T(\"lpFileName is:\")); OutputString(szFileName); //创建文件 hFile=CreateFileW(lpFileName,dwDesiredAccess,dwShareMode, lpSecurityAttributes,dwCreationDisposition, dwFlagsAndAttributes,hTemplateFile); if(hFile=INVALID_HANDLE_VALUE) { OutputString(_T(\"CreateFileW failed!!!\\n\")); stprintf(szRet,_T(\"%u\"),GetLastError()); OutputString(szRet); } } 但是lpFileName没有经过任何变换,并且用OutputString输出无异常,为什么会找不到文件呢?请各位高手解答一下疑惑. :( |
|
|
沙发#
发布于:2005-03-22 17:51
please check every function when you may change ERR .
you should not modify ERR. (use GetLastError, SetLastError and save and pop it). we had done it and there is no problem about what you said. |
|
板凳#
发布于:2005-03-22 18:35
好奇怪,将
if(hFile=INVALID_HANDLE_VALUE) { OutputString(_T(\"CreateFileW failed!!!\\n\")); stprintf(szRet,_T(\"%u\"),GetLastError()); OutputString(szRet); } 注释掉后就没有问题了,难道我注释后就打开成功了,它们之间 有什么关系吗?为什么??? :o |
|
|
地板#
发布于:2005-03-22 19:10
hFile = INVALID_HANDLE_VALUE ===〉
hFile == INVALID_HANDLE_VALUE |
|
地下室#
发布于:2005-03-22 19:12
先挣点分吧
if(hFile=INVALID_HANDLE_VALUE) { OutputString(_T(\"CreateFileW failed!!!\\n\")); stprintf(szRet,_T(\"%u\"),GetLastError()); OutputString(szRet); } if(hFile=INVALID_HANDLE_VALUE) 错了,应该是== |
|
5楼#
发布于:2005-03-23 08:12
楼主大智若愚了。。。嘿嘿
|
|
|
6楼#
发布于:2005-03-23 08:53
if(hFile=INVALID_HANDLE_VALUE)
估计他是BASIC出身的,这中错误都能范.... 难怪有人会想 if(INVALID_HANDLE_VALUE==hFile) 的这种做法. |
|
|
7楼#
发布于:2005-03-23 09:20
我就支持if( INVALID_HANDLE_VALUE == hFile )这种做法。呵呵
|
|
|
8楼#
发布于:2005-03-24 09:35
杀了我吧,为这个我要拿出50分,无颜以对江东父老啊
BTW:我是C语言出身的..... :( |
|
|
9楼#
发布于:2005-03-31 18:59
幸亏没有加入then,呵呵
|
|