可以写大文件,可以将网络传输的文件快速保存到当地磁盘中。
// WriteFile.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <afxinet.h>
#include <mmsystem.h>
#pragma comment(lib,"Winmm.lib")
int main(int argc, char* argv[])
{
DWORD timebegin = timeGetTime();
HANDLE hFile = CreateFile(TEXT("d:\\222.txt"),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if(hFile == NULL)
{
printf("CreateFile Error\n");
return 0;
}
DWORD dwFileLen = GetFileSize(hFile,NULL);//获取文件长度
// 创建文件映射内核对象,句柄保存于hFileMapping
HANDLE hFileMapping = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE,
0,
dwFileLen,
NULL);
if(hFileMapping == NULL){
printf("hFileMapping is NULL.\n");
return 0;
}
// 释放文件内核对象
CloseHandle(hFile);
// 偏移地址
__int64 qwFileOffset = 0;
// 将文件数据映射到进程的地址空间
LPVOID pbFile = (LPVOID)MapViewOfFile( hFileMapping,
FILE_MAP_ALL_ACCESS,
0,0,
dwFileLen);
//读到内存
char *first = (char *)pbFile;
printf("%c\n",*first);//输出文件第一个字符,以此验证映射是否正确
Sleep(10);
DWORD timeend = timeGetTime();
printf("Time:%dms\n", timeend- timebegin);
return 0;
}