关于调用ReadFileEx、WriteFileEx的问题,请大家看代码!
Type
PInfo = ^TInfo;
TInfo = packed record
Overlap: OVERLAPPED;
Info:PInfo;
FileName:Array[0..1024] of Char;
FileObj: THandle;
chBuf: array of char;
Thread:TPartCopyThread;
IsWrite:Boolean;
end;
Var
b:Boolean;
PubInfo:PInfo;
begin
New(PubInfo);
FillMemory(PubInfo,SizeOf(TInfo),0);
New(PubInfo^.Info);
FillMemory(PubInfo^.Info,SizeOf(TInfo),0); PubInfo^.Info^.Overlap.Offset:=PubInfo^.Overlap.Offset; PubInfo^.Info^.Overlap.OffsetHigh:=PubInfo^.Info^.Overlap.OffsetHigh;
PubInfo^.FileObj:=CreateFile(PChar(SourceName), GENERIC_READ,
FILE_SHARE_READ, nil, CREATE_ALWAYS, FILE_FLAG_OVERLAPPED, 0);
PubInfo^.Info^.FileObj:=CreateFile(PChar(DescName), GENERIC_READ,
FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_FLAG_OVERLAPPED, 0)
b:=ReadFileEx(PubInfo^.FileObj,PubInfo^.chBuf,
PubInfo^.Overlap.OffsetHigh,POVERLAPPED(PubInfo),@CompletedRoutine)
if not b then
ShowMessage(IntToStr(GetLastError));
end;
这段代码b =false,GetLastError的返回值为38,即读取文件末尾.
请大家看看问题出在那?