求助 DLL 中使用外部变量,或者打开文件。。???
休闲人生 2011-11-10 02:35:04 我编写一个DLL,主要是写了几个钩子函数,对createfile进行了挂钩。
但是我向在createfile的时候,先进行一些条件的的判断,这些条件是从一个文件中打开得到的。
问题:
当我是用fopen打开文件的时候,没有提示打开错误,也没有成功打开文件(没有我写的输出)
代码主要的问题出现在这里:(这里是钩子函数)
HANDLE WINAPI HookCreateFileW( LPCWSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile)
{
//cout<<(char*)lpFileName<<endl;
const TCHAR *name=NULL;
std::wstring FileName=lpFileName;
name = FileName.c_str();
cout<<"Open funciotn"<<endl;(这一句输出很多,然后停止)????????
FILE *fp;
cout<<"fopen..\n";
fp=fopen("test_rules.txt","r"); (Open文件,文件存放在当前目录下)
if(fp==NULL){
cout<<"Open error...\n";
}
cout<<"Open file OK..\n"; 没有输出???????
//---------------------------------------------------------
// 继续创建该文件
return SysCreateFileW( lpFileName, dwDesiredAccess,dwShareMode,
lpSecurityAttributes,dwCreationDisposition,
dwFlagsAndAttributes,hTemplateFile );
}
我创建文件的时候使用
hIn = CreateFile("test1.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING|CREATE_NEW,0,NULL);
这里使用char *的“test1.txt”,但是HookCreateFileW()这个函数的第一个参数是LPCWSTR类型,这个参数传递中间发生了什么?
我使用他的目的是,利用文件名查找规则(规则是从一个文件中读入[打开的时候出错,望得到帮助,解决之]),然后进行规则的判断,然后真正create文件。。。?
希望各位帮忙,时间很紧。。。
谢谢