cvi中writefile函数怎么使用
2个回答
展开全部
WriteFile函数通常是将数据写入到内部缓冲区,然后OS会定期将缓冲区中的数据写入到磁盘。如果想在调用WriteFile之后,数据就立即写入磁盘,有如下三种方法:
1. 调用FlushFileBuffers(hFile);
Flushes the buffers of a specified file and causes all buffered data to be written to a file.
BOOL FlushFileBuffers(
HANDLE hFile // open handle to file whose buffers are to be flushed
);
该函数会将指定文件的缓存数据写入磁盘。
2. 在用CreateFile创建文件的时候,第6个参数使用标志
FILE_FLAG_WRITE_THROUGH
Instructs the operating system to write through any intermediate cache and go directly to disk. The operating system can still cache write operations, but cannot lazily flush them.
3. 关闭掉句柄
CloseHandle(hFile);
1. 调用FlushFileBuffers(hFile);
Flushes the buffers of a specified file and causes all buffered data to be written to a file.
BOOL FlushFileBuffers(
HANDLE hFile // open handle to file whose buffers are to be flushed
);
该函数会将指定文件的缓存数据写入磁盘。
2. 在用CreateFile创建文件的时候,第6个参数使用标志
FILE_FLAG_WRITE_THROUGH
Instructs the operating system to write through any intermediate cache and go directly to disk. The operating system can still cache write operations, but cannot lazily flush them.
3. 关闭掉句柄
CloseHandle(hFile);
展开全部
从文件指针指向的位置开始将数据写入到一个文件中, 且支持同步和异步操作,如果文件打开方式没有指明FILE_FLAG_OVERLAPPED的话,当程序调用成功时,它将实际写入文件的字节数保存到lpNumberOfBytesWriten指明的地址空间中如果文件要交互使用的话,当函数调用完毕时要记得调整文件指针参数说明HANDLE hFile, 需要写入数据的文件指针,这个指针指向的文件必须是GENERIC_WRITE access 访问属性的文件LPOVERLAPPED lpOverlapped OVERLAPPED结构体指针,如果文件是以FILE_FLAG_OVERLAPPED方式打开的话,那么这个指针就不能为NULLvc返回值调用成功,返回非0调用不成功,返回为0用例:DWORDdev_write(LPCVOIDbuf,DWORDNumBytes)//写数据 { DWORDwriteaddr=0; if(handle!=INVALID_HANDLE_VALUE) { WriteFile(handle,buf,NumBytes,&writeaddr,NULL); } returnwriteaddr;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询