大家好,今天給各位分享createfile函數的一些知識,其中也會對createnewfile方法的作用進行解釋,文章篇幅可能偏長,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在就馬上開始吧!
API函數CreateFile你會用嗎
#include"stdafx.h"
#include
intmain(intargc,char*argv[])
{
HANDLEhFile=::CreateFile("test.txt",
GENERIC_ALL,//文件操作方式,讀寫刪都可
0,//此標示無法再創建test.txt文件,必須關閉句柄才可
NULL,//一般高級文件操作用
OPEN_ALWAYS,//有文件就打開,沒文件就創建
FILE_ATTRIBUTE_NORMAL,//其它標示將會覆寫此標示
NULL);//基本不用,再me/98系統下.必須是null
if(hFile==INVALID_HANDLE_VALUE){
printf("error\n");
}else{
constchar*cBuffer="helloworld";
DWORDdwLenght=strlen(cBuffer);
DWORDdwNumOfWrite;
DWORDdwPos;
dwPos=SetFilePointer(hFile,0,NULL,FILE_END);//這樣可以繼續接寫文件,而不是復寫
WriteFile(hFile,
cBuffer,
dwLenght,//寫入字數
&dwNumOfWrite,//實際寫入字數
NULL);
::CloseHandle(hFile);
printf("success\n");
}
return0;
}
注意:我個人不推薦直接操作winapi,因為除非你是非常資深技術人員,可以考慮到線程之間的影響以及兼容性,要不然就不要直接使用api,而是使用c運行庫,例如fopen,fwrite等
有錯請糾正~~
cvi中writefile函數怎么使用
WriteFile函數通常是將數據寫入到內部緩沖區,然后OS會定期將緩沖區中的數據寫入到磁盤。如果想在調用WriteFile之后,數據就立即寫入磁盤,有如下三種方法:
1.調用FlushFileBuffers(hFile);Flushesthebuffersofaspecifiedfileandcausesallbuffereddatatobewrittentoafile.BOOLFlushFileBuffers(HANDLEhFile//openhandletofilewhosebuffersaretobeflushed);該函數會將指定文件的緩存數據寫入磁盤。
2.在用CreateFile創建文件的時候,第6個參數使用標志FILE_FLAG_WRITE_THROUGHInstructstheoperatingsystemtowritethroughanyintermediatecacheandgodirectlytodisk.Theoperatingsystemcanstillcachewriteoperations,butcannotlazilyflushthem.
3.關閉掉句柄CloseHandle(hFile);
c語言如何獲取bmp數據的句柄
在C語言中,可以通過使用bmp文件的路徑進行文件的打開操作,然后利用文件流函數(fread)讀取bmp文件的頭文件信息,即BITMAPFILEHEADER和BITMAPINFOHEADER,進而獲得bmp文件的寬度、高度、顏色位數等信息。接著,利用內存分配函數(malloc)為圖像數據分配內存,并使用文件流函數(fread)將圖像數據讀取到內存中。最后,通過該內存塊的指針即可獲取bmp數據的句柄,可以用于后續的圖像處理和顯示等操作。
vb如何采集com口數據
在VB中采集COM口數據,可以通過調用WindowsAPI來實現。下面是一些基本步驟:
1.引用WindowsAPI庫:在VB項目中引用"kernel32"和"user32"庫。可以通過在代碼窗口中輸入以下代碼來實現:
DeclareFunctionCreateFileLib"kernel32"Alias"CreateFileA"(ByVallpFileNameAsString,ByValdwDesiredAccessAsLong,ByValdwShareModeAsLong,ByVallpSecurityAttributesAsLong,ByValdwCreationDispositionAsLong,ByValdwFlagsAndAttributesAsLong,ByValhTemplateFileAsLong)AsLong
DeclareFunctionReadFileLib"kernel32"(ByValhFileAsLong,ByVallpBufferAsString,ByValnNumberOfBytesToReadAsLong,lpNumberOfBytesReadAsLong,ByVallpOverlappedAsAny)AsLong
DeclareFunctionCloseHandleLib"kernel32"(ByValhObjectAsLong)AsLong
2.打開COM口:使用CreateFile函數打開COM口,指定端口名稱、波特率和其他通信參數。例如:
DimhComAsLong
hCom=CreateFile("COM1",GENERIC_READOrGENERIC_WRITE,0,0,OPEN_EXISTING,0,0)
If(hCom=INVALID_HANDLE_VALUE)Then
'打開失敗
ExitFunction
EndIf
3.讀取COM口數據:使用ReadFile函數讀取COM口接收緩沖區中的數據。例如:
DimbufferAsString*1024
DimbytesReadAsLong
bytesRead=0
ReadFile(hCom,buffer,Len(buffer),bytesRead,0)
4.關閉COM口:使用CloseHandle函數關閉COM口句柄。例如:
CloseHandle(hCom)
以上是基本的VB代碼框架。但實際上,由于不同類型的COM設備具有不同的通信協議和數據格式,因此需要根據具體的設備要求來設計和實現通信協議和數據處理方式。在實際工作中,可能還需要使用其他的VB控件、類庫或第三方工具來簡化開發過程和增強功能。
cannotcreatefile是什么意思
cannotcreatefile不能創建文件。這個提示后面一般帶個“”。引號內的部分就是你不能創建的文件名。
createFile失敗,getlasterror為32,請幫助分析原因,該怎么處理
錯誤號:32名稱:ERROR_SHARING_VIOLATION描述:Theprocesscannotaccessthefilebecauseitisbeingusedbyanotherprocess.
關于createfile函數的內容到此結束,希望對大家有所幫助。