日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows API之WriteFile函数详细解答

發布時間:2025/5/22 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows API之WriteFile函数详细解答 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WriteFile
WriteFile函數將數據寫到一個文件中,它是為同步和異步操作而設計的。函數在文件指針指示的位置開始向文件寫入數據。寫操作完成后,文件指針將根據實際寫入的字節數進行調整,除非文件是用FILE_FLAG_OVERLAPPED打開的。如果文件句柄是為重疊的輸入和輸出(I/O)創建的,則應用程序必須在寫操作完成后調整文件指針的位置。

BOOL WriteFile (
handle hFile, //處理要寫入的文件
LPCVOID lpBuffer, //指向要寫入文件的數據的指針
DWORD nNumberOfBytesToWrite, //要寫入的字節數
LPDWORD lpNumberOfBytesWritten, //指針寫入的字節數
指向重疊I/O結構的指針
);

參數
hFile
要寫入的文件的句柄。文件句柄必須是使用對文件的GENERIC_WRITE訪問權限創建的。
Windows NT:
對于異步寫操作,hFile可以是CreateFile函數用FILE_FLAG_OVERLAPPED標記打開的任何句柄,也可以是thesocket或accept函數返回的套接字句柄。
Windows 95:
對于異步寫操作,hFile可以是通信資源、郵件槽或命名管道句柄,由CreateFile使用FILE_FLAG_OVERLAPPED標記打開,也可以是套接字或accept函數返回的套接字句柄。Windows 95不支持對磁盤文件進行異步寫操作。
lpBuffer
指向包含要寫入文件的數據的緩沖區的指針。
nNumberOfBytesToWrite
要寫入文件的字節數。
0的值指定一個空寫操作??諏懖僮鞑粚懭肴魏巫止?#xff0c;但會導致時間戳更改。

跨網絡的命名管道寫操作限制為65,535字節。

lpNumberOfBytesWritten
指向此函數調用寫入的字節數的指針。WriteFile在執行任何工作或錯誤檢查之前將此值設置為0。
如果llapped是NULL, lpNumberOfBytesWritten不能為空。

windowsnt:如果llapping不為空,lpNumberOfBytesWritten可以為空。如果這是一個重疊的寫操作,那么可以通過調用GetOverlappedResult來獲得寫的字節數。如果hFile與I/O完成端口相關聯,則可以通過調用GetQueuedCompletionStatus獲得寫入的字節數。

Windows 95和Windows 98:該參數不能為空。

lpOverlapped
指向重疊結構的指針。如果用FILE_FLAG_OVERLAPPED打開hFile,則需要這個結構。
如果用FILE_FLAG_OVERLAPPED打開hFile,則llapped參數不能為空。它必須指向有效的重疊結構。如果用FILE_FLAG_OVERLAPPED打開hFile,并且llapped為NULL,則該函數可能會錯誤地報告寫操作已經完成。

如果用FILE_FLAG_OVERLAPPED打開hFile,并且llapped不為空,則寫操作從重疊結構中指定的偏移量開始,寫文件可能在寫操作完成之前返回。在本例中,WriteFile返回FALSE, GetLastError函數返回ERROR_IO_PENDING。這允許調用進程在寫操作完成時繼續處理。在重疊結構中指定的事件在寫操作完成時被設置為有信號狀態。

如果沒有使用FILE_FLAG_OVERLAPPED打開hFile,并且llapped為NULL,則寫操作從當前文件位置開始,直到操作完成后才返回WriteFile。

如果未使用FILE_FLAG_OVERLAPPED打開hFile,并且llapped不為空,則從重疊結構中指定的偏移量處開始寫操作,直到寫操作完成后,WriteFile才返回。

返回值
如果函數成功,則返回值為非零。

如果函數失敗,則返回值為零。要獲取擴展的錯誤信息,請調用GetLastError。

講話
當使用FILE_FLAG_NO_BUFFERING打開文件時,應用程序必須滿足某些要求:

文件訪問必須從卷扇區大小的整數倍的文件中的字節偏移量開始。要確定卷的扇區大小,請調用GetDiskFreeSpace函數。
文件訪問必須是卷扇區大小的整數倍的字節數。例如,如果扇區大小是512字節,則應用程序可以請求讀寫512、1024或2048字節,但不能請求讀寫335、981或7171字節。
用于讀寫操作的緩沖區地址必須按扇區對齊(按內存中卷扇區大小的整數倍進行對齊)。扇區對齊緩沖區的一種方法是使用VirtualAlloc函數來分配緩沖區。此函數分配按地址對齊的內存

總結

以上是生活随笔為你收集整理的Windows API之WriteFile函数详细解答的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。