创建指定大小的空文件

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 22:27   201   0

利用CreateFileMapping函数的可扩展文件大小的特性,创建指定大小的空文件

/*
* 创建指定大小的空文件,支持超大文件(16EB),小于4GB时,
* 参数dwHigh可传入0,
* 成功返回0, 失败返回错误代码
*/

BOOL CreateNullFile(DWORD dwHigh, DWORD dwLow, LPCTSTR lpcszFileName)
{
BOOL bResult = FALSE;
HANDLE hFile = ::CreateFile(lpcszFileName, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
return (BOOL)::GetLastError();
}

HANDLE hFileMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, dwHigh, dwLow, NULL);
if (NULL == hFileMap)
{
return (BOOL)::GetLastError();
}

::CloseHandle(hFileMap);
::CloseHandle(hFile);

return bResult;
}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP