| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1145 人关注过本帖
标题:求教:使用ReadFile无法读出数据,请看下有什么问题?
只看楼主 加入收藏
hwbnet
Rank: 1
等 级:新手上路
威 望:2
帖 子:355
专家分:0
注 册:2004-12-9
收藏
 问题点数:0 回复次数:5 
求教:使用ReadFile无法读出数据,请看下有什么问题?
buffer db "F:\\3d\\6\\存档\\ren.hwb",0
wenjian HANDLE ?
ff dd 41088d dup (?)


hwb proc
invoke CreateFile,ADDR buffer,\
GENERIC_READ,\
FILE_SHARE_READ,\
0,\
OPEN_EXISTING,\
FILE_ATTRIBUTE_ARCHIVE,\
0
mov wenjian,eax
cmp eax,INVALID_HANDLE_VALUE
jz @F
lea eax,ff
invoke SetFilePointer,wenjian,0,0,FILE_BEGIN
invoke ReadFile,wenjian,ff,164352d,0,0
invoke CloseHandle,wenjian
@@:
ret
hwb endp
搜索更多相关主题的帖子: ReadFile 数据 
2007-10-01 20:15
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 

;#Mode=CON

.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include libc.inc

includelib msvcrt.lib
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
include macro.asm

.data

buffer db "F:\\3d\\6\\存档\\ren.hwb",0
wenjian HANDLE ?
ff dd 41088d dup (0)

.CODE

hwb proc
local read:dword
invoke CreateFile,ADDR buffer,\
GENERIC_READ,\
FILE_SHARE_READ,\
0,\
OPEN_EXISTING,\
FILE_ATTRIBUTE_ARCHIVE,\
0
mov wenjian,eax
cmp eax,INVALID_HANDLE_VALUE
jz @F
lea eax,ff
invoke SetFilePointer,wenjian,0,0,FILE_BEGIN
invoke ReadFile,wenjian,offset ff,10000,read,0
invoke CloseHandle,wenjian
@@:
ret
hwb endp
START:
invoke hwb
invoke printf,CTXT("%s"),offset ff
;int 3h
invoke ExitProcess,0


end START

[此贴子已经被作者于2007-10-2 16:18:51编辑过]

2007-10-02 11:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
是这样吗?
2007-10-02 11:03
hwbnet
Rank: 1
等 级:新手上路
威 望:2
帖 子:355
专家分:0
注 册:2004-12-9
收藏
得分:0 
push eax
invoke ReadFile,wenjian,offset ff,10000,esp,0
pop eax
改成这样就对了,请问这样改是什么意思?

胡文斌 本人论坛:http://hwbnet.bbs./
2007-10-02 11:43
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用hwbnet在2007-10-2 11:43:34的发言:
push eax
invoke ReadFile,wenjian,offset ff,10000,esp,0
pop eax
改成这样就对了,请问这样改是什么意思?

不好理解就想想c里的指针

用调试器跟踪一下就明白了



buffer db 'aaaaaaa',0

那 buffer 就指的是‘a’ offset buffer 指的是buffer的地址

2007-10-02 15:24
hwbnet
Rank: 1
等 级:新手上路
威 望:2
帖 子:355
专家分:0
注 册:2004-12-9
收藏
得分:0 

发现原因了,错在第四个参数,改为变量地址就行了。书上是这么说的:“返回本次读入操作实际读入的字节数,在进行任何I/O或错误检查之前该参数都应先设置为0。”真是诱导人误解为参数设为0。


胡文斌 本人论坛:http://hwbnet.bbs./
2007-10-02 16:03
快速回复:求教:使用ReadFile无法读出数据,请看下有什么问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074495 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved