用TransmitFile传输文件,怎么知道传输进度?
我是发送方。用得是个土办法,以4KB发送,然后计算。寻求更好的办法,请高手赐教。
类似回调函数之类的。
invoke CreateFile,offset szFile2,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
mov @hFile,eax
invoke GetLastError
invoke GetFileSize, @hFile,NULL
;*******************
;ebx是剩余发送的字节
;esi文件指针(可以去除)
;edi是每次发送的字节数
;
;*******************
mov ebx,eax
xor esi,esi
mov edi,4096
.while TRUE
.if ebx < edi
mov edi,ebx
.endif
invoke SetFilePointer,@hFile,esi,0,FILE_BEGIN
invoke TransmitFile,hSocket,@hFile,edi,edi,0,0,0
add esi,edi
sub ebx,edi
.break .if ebx == 0
.endw
invoke WSAGetLastError
invoke CloseHandle,@hFile