dll调用出错,附源码
bool fnLoadFileHeader(const char *pchFileName, TFILEHEADER *ptfhHeader)
{
HANDLE hLoadFile = NULL;
DWORD dwRead = 0;
hLoadFile = CreateFile( pchFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL);
if (hLoadFile != NULL) //本来是==,我为了测试,用!=
{ //发现在满足条件的时候,
CloseHandle(hLoadFile); //这句不执行,为什么。
return false;
}
if (ReadFile(hLoadFile, ptfhHeader, sizeof(TFILEHEADER), &dwRead,NULL))
{
CloseHandle(hLoadFile);
return true;
}
else
{
CloseHandle(hLoadFile);
return false;
}
}
我打算用另外一个程序静态链接(隐式链接),却读不出来数据。
我刚开始学vc,请大侠指点。有说的不明白地,请发问,我在线等。
问题点数:40、回复次数:10Top
1 楼ylb_and_xy(黑狐狸)回复于 2002-04-04 17:02:29 得分 5
if (hLoadFile != INVALID_HANDLE_VALUE)Top
2 楼qunta(J2Y2)回复于 2002-04-04 17:02:56 得分 5
if (hLoadFile ==INVALID_HANDLE_VALUE)
{
return false;
}Top
3 楼Greenwillow(^_^,~_~)回复于 2002-04-04 17:08:42 得分 0
没明白你所说的,你的程序是想实现什么功能,还有在关闭文件句柄时就读不出数据来了呀Top
4 楼lemonnony(有点意思)回复于 2002-04-04 17:38:49 得分 0
回复人: qunta(旺财1860) ( ) 信誉:100 2002-04-04 17:02:00 得分:0
if (hLoadFile ==INVALID_HANDLE_VALUE)
{
return false;
}
是不是就不用在closehandle了,closehandle 干了什么事?
Top
5 楼llb2000(失去小雪,赢了世界又如何)回复于 2002-04-04 17:55:40 得分 5
CloseHandle执行了的,只不过程序单步执行时,不会在这停Top
6 楼lemonnony(有点意思)回复于 2002-04-04 18:18:29 得分 0
CloseHandle执行了的,只不过程序单步执行时,不会在这停
?
llb2000(五代) 为什么?Top
7 楼huangama(huangama)回复于 2002-04-04 18:42:08 得分 5
CloseHandle可以执行,但没有释放任何指针,because create nothing.Top
8 楼qunta(J2Y2)回复于 2002-04-04 18:59:54 得分 10
问题不在于CloseHandle,
在于CreateFile失败时返回的不是NULL,
而是INVALID_HANDLE_VALUE,
如果返回的是INVALID_HANDLE_VALUE,
对它CloseHandle(INVALID_HANDLE_VALUE) 会执行过去但没有任何意义Top
9 楼wiler(@_@)回复于 2002-04-04 19:00:36 得分 3
if (hLoadFile != INVALID_HANDLE_VALUE)Top
10 楼yongdu()回复于 2002-04-04 19:44:25 得分 5
一般来说,一个函数成功执行返回TRUE,失败返回FALSE,但CreateFile例外,它失败回INVALID_HANDLE_VALUE,被定义为-1。要注意Top
11 楼zhubo(rickyzhu.com)回复于 2002-04-04 19:51:36 得分 2
你可以用GetLastError看看出了什么错误,跟一下,或者设置一个变量@err,hr
就能看出错误代码,然后查看MSDN帮助!
Top




