同步裝置IO

2021-06-19 21:29:07 字數 1716 閱讀 1805

檔案裝置

createfile:可以指定是同步還是非同步,失敗返回invalid_handle_value而不是null,非同步裝置開啟成功函式getlaseerror返回error_io_pending錯誤碼

getfilesizeex:獲取檔案的邏輯大小

setendoffile:設定檔案尾,可以利用其強制設定檔案大小

handle hfile = createfile(...);

large_integer lidistancetomove;

lidistancetomove.quadpart=1024;

setfilepointerex(hfile, lidistancetomove, null, file_begin);

setendoffile(hfile);

closehandle(hfile);

以上將檔案設定為1024位元組

readfile:讀取檔案

writefile:寫檔案

flushfilebuffers:強制將緩衝資料寫入到裝置

cancelsynchronousio(handle hthread):將乙個給定的執行緒尚未完成的同步i/o請求取消

以上是一些檔案api的介紹下面來個例子

#include #include #include using namespace std;
unsigned winapi read( void *p )

void main()

else

else

} flushfilebuffers( hfile );

large_integer lisize = ; 

getfilesizeex( hfile, &lisize );

cout << "邏輯大小" << lisize.quadpart << endl;

ularge_integer ulisize = ;

ulisize.lowpart = getfilesize( hfile, &ulisize.highpart );

cout << "物理大小" << ulisize.quadpart << endl;

large_integer lidistancetomove;

lidistancetomove.quadpart = 2048;

setfilepointerex( hfile, lidistancetomove, null, file_begin );

setendoffile( hfile );

dwbyteswritten = 0;

zeromemory( databuffer, 100 );

lidistancetomove.quadpart = 5;

setfilepointerex( hfile, lidistancetomove, null, file_begin );

if ( readfile( hfile, databuffer, 4, &dwbyteswritten, null ) )

else

cout << "read failure!!" << endl;

cout << databuffer << endl;

closehandle(hfile);

}

同步IO和非同步IO

同步io和非同步io 簡單的說 同步在程式設計裡,一般是指某個io操作執行完後,才可以執行後面的操作。非同步則是,將某個操作給系統,主線程去忙別的事情,等核心完成操作後通知主線程非同步操作已經完成。i windows同步i o與非同步i o 執行後的效果如下 winxp sp2 vc6.0 4 心得...

同步IO和非同步IO

同步io和非同步io 有兩種型別的檔案io同步 同步檔案io和非同步檔案io。非同步檔案io也就是重疊io。在同步檔案io中,執行緒啟動乙個io操作然後就立即進入等待狀態,直到io操作完成後才醒來繼續執行。而 非同步檔案io方式中,執行緒傳送乙個io請求到核心,然後繼續處理其他的事情,核心完成io請...

同步IO與非同步IO

非同步檔案io也就是重疊io。在同步檔案io中,執行緒啟動乙個io操作然後就立即進入等待狀態,直到io操作完成後才醒來繼續執行。而非同步檔案io方式中,執行緒傳送乙個io請求到核心,然後繼續處理其他的事情,核心完成io請求後,將會通知執行緒io操作完成了。同步io在同一時刻只允許乙個io操作,也就是...