Handle类型向FILE *类型转换问题

XSign 2009-08-12 01:37:12
问题是这样的,在A.exe中存在一个资源文件(这个资源文件仍然是一个exe文件),现在用以下代码或得了这个资源文件的句柄:

HRSRC hrsc = FindResource(NULL, MAKEINTRESOURCE(wResID), strFileType);//wResID是资源文件的id,strFileType="exe"
HGLOBAL hG = LoadResource(NULL, hrsc);
LPVOID lp=LockResource(hG);
DWORD dwSize = SizeofResource( NULL, hrsc);

load(lp);

然后是load函数,如下:

int load(LPVOID p)
{
FILE *fp = (FILE *)p;
if(fp)
{
.................

if(readPEInfo(fp,...............))
{
................
}
}
}

但是我发现在readPEInfo函数中,使用如下函数时会出错:

bool readPEInfo(FILE *fp,..............)
{
fseek(fp, 0, SEEK_END);
............................................
}

问题:
如何在 不产生文件 的情况下,完成上面的操作?
注意:
不产生文件:也就是说,不使用CreateFile之类的函数,将读取出来的资源文件写入到文件,再对该文件进行操作.
我要在内存中直接对该资源文件进行操作.
...全文
212 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XSign 2009-08-12
  • 打赏
  • 举报
回复
呃...我也知道...
但是时间比较紧....我也只能死马当活马医了....
再解释一下:
不将读出来的资源创建成新的文件,而是直接在内存中对读出来的资源进行操作.
arong1234 2009-08-12
  • 打赏
  • 举报
回复
没有任何人说过HANDLE和FILE*之间可以互相转换吧?你应该用和HANDLE相匹配的api读文件
更严重的是,你得到的那个是不是文件句柄都还得考证。建议找找专门访问资源的例子看看,不要按照自己的不可靠的假定去编程
rouchel 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 xsign 的回复:]
将读取出来的资源文件写入到文件,再对该文件进行操作.
我要在内存中直接对该资源文件进行操作.
[/Quote]
到底是啥意思?矛盾了。。。看不明白你想做什么

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧