16,472
社区成员
发帖
与我相关
我的任务
分享
#include<windows.h>
#include <stdio.h>
int main()
{
#define BUFFER_SIZE 1024*1024*1024 //1GB
char buf[BUFFER_SIZE];
HANDLE hfile;
OVERLAPPED ol;
//初始化
memset(buf,0,BUFFER_SIZE);
memset(&ol,0,sizeof(ol));
hfile=CreateFile("g:\\VS2012_RC_ULT_CHS.iso",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL
);
if(INVALID_HANDLE_VALUE==hfile)
{
printf("opend file erorr\n");
return -1;
}
ol.Offset=0;
DWORD numRead;
BOOL bRet=ReadFile(hfile,buf,BUFFER_SIZE,&numRead,&ol);
if(bRet)
{
}
else
{
if(ERROR_IO_PENDING==GetLastError()) //说明在读
{
//难道我在这里等待吗?? 等待岂不是傻乎?
WaitForSingleObject(hfile,-1);
//等多久??
//查询结果
bRet=GetOverlappedResult(hfile,&ol,&numRead,TRUE);
if(TRUE==bRet) //读取完毕
{
}
else //出错了
{
}
}
}
CloseHandle(hfile);
return 0;
}