VB聲明
Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
vb返回值
Long,TRUE(非零)表示成功,否則返回零。會設定GetLastError
參數表
參數 類型及說明
hFile Long,一個檔案的句柄
lpBuffer Any,參數類型:
指針,指向將寫入檔案的
數據緩衝區nNumberOfBytesToWrite Long,要寫入數據的位元組數量。如寫入零位元組,表示什麼都不寫入,但會更新檔案的“上一次修改時間”。針對位於遠程系統的
命名管道,限制在65535個位元組以內
lpNumberOfBytesWritten Long,實際寫入檔案的位元組數量(此變數是用來返回的 )
lpOverlapped OVERLAPPED,倘若在指定FILE_FLAG_OVERLAPPED的前提下打開檔案,這個參數就必須引用一個特殊的結構。那個結構定義了一次異步寫操作。否則,該參數應置為空(將聲明變為ByVal As Long,並傳遞零值)
註解
並不是每種作業系統都支持在任何類型的設備上進行異步操作。windows 95不支持對磁碟檔案的重疊讀取操作
VC聲明
BOOL WriteFile(HANDLE hFile,//檔案句柄LPCVOID lpBuffer,//數據快取區指針DWORD nNumberOfBytesToWrite,//你要寫的位元組數LPDWORD lpNumberOfBytesWritten,//用於保存實際寫入位元組數的存儲區域的指針LPOVERLAPPED lpOverlapped//OVERLAPPED結構體指針);
功能說明
從
檔案指針指向的位置開始將數據寫入到一個檔案中, 且支持同步和異步操作,
如果檔案打開方式沒有指明FILE_FLAG_OVERLAPPED的話,當程式調用成功時,它將實際寫入檔案的位元組數保存到lpNumberOfBytesWriten指明的
地址空間中
如果檔案要互動使用的話,當函式調用完畢時要記得調整檔案指針
參數說明
HANDLE hFile, 需要寫入數據的檔案指針,這個指針指向的檔案必須是GENERIC_WRITE access 訪問屬性的檔案
LPOVERLAPPED lpOverlapped OVERLAPPED
結構體指針,如果檔案是以FILE_FLAG_OVERLAPPED方式打開的話,那么這個指針就不能為NULL
vc返回值
調用成功,返回非0
調用不成功,返回為0
用例:
DWORDdev_write(LPCVOIDbuf,DWORDNumBytes)//寫數據 { DWORDwriteaddr=0; if(handle!=INVALID_HANDLE_VALUE) { WriteFile(handle,buf,NumBytes,&writeaddr,NULL); } returnwriteaddr;}