freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

同步異步設備io-資料下載頁

2025-08-04 14:53本頁面
  

【正文】 如果以同步方式執(zhí)行ReadFile/WriteFile,成功則返回非零值,失敗返回FALSE;如果以異步方式執(zhí)行,執(zhí)行成功也會返回FALSE,利用GerLastError可以查看錯誤代碼ERROR_IO_PENDING則表示異步I/O請求已被成功加入了隊列,會在晚些時候執(zhí)行。3. 在異步I/O請求完成前,一定不能移動或是銷毀在發(fā)出I/O請求時所使用的數(shù)據(jù)緩存和OVERLAPPED結構。4. 我們必須為每一個I/O請求分配并初始化一個不同的OVERLAPPED結構 接收I/O請求完成通知這部分內容主要回到設備驅動如何告知線程I/O處理完的問題。Windows提供了四種方法,由易到難是觸發(fā)設備內核對象;觸發(fā)事件內核對象;可提醒I/O;I/O完成端口。應該說,I/O完成端口屬于目前最完美的技術,但是對于當前自己的程序而言不需要,所以只需要使用簡單的設備內核對象或者事件內核對象就可以實現(xiàn)設備I/O請求的送達。l 觸發(fā)設備內核對象由于文件本身即是一種內核對象,觸發(fā)規(guī)則為:有待處理的I/O請求時為未觸發(fā)狀態(tài),I/O請求處理完成時為觸發(fā)狀態(tài)。因而我們只需要使用WaitForSingleObject(hFile, INFINITE)一個語句即可,當然這個語句要放到一定代碼之后,估計I/O請求處理完畢之后再進入檢查文件是否觸發(fā)。我們給出一個示例代碼HANDLE hFile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...)。BYTE bBuffer[100]。OVERLAPPED ol = {0}。 = 345。BOOL bReadDone = ReadFile(hFile, bBuffer, 100, NULL, amp。ol)。DWORD dwError = GetLastError()。If (!bReadDone amp。amp。 (dwError == ERROR_IO_PENDING) ) { WaitForSingleObject(hFile, INFINITE)。 bReadDone = TRUE。}l 觸發(fā)事件內核對象只需要將文件內核對象改為事件內核對象就可以了,這里需要注意的是此時OVERLAPPED結構的最后一個成員hEvent需要和我們的事件內核對象綁定起來,我們給出一個方法來同時執(zhí)行多個異步設備I/O操作并使用同一個設備對象。HANDLE hFile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...)。BYTE bReadBuffer[10]。OVERLAPPED oRead = {0}。 = 0。 = CreateEvent(...)。ReadFile(hFile, bReadBuffer, 10, NULL, amp。oRead)。BYTE bWriteBuffer[10] = {0, 1,2, 3, 4, 5, 6, 7, 8, 9}。OVERLAPPED oWrite = {0}。 = 0。 = CreateEvent(...)。WriteFile(hFile, bWriteBuffer, _countof(bWriteBuffer), NULL, amp。oWrite)。... ... ...HANDLE h[2]。H[0] = 。H[1] = 。DWORD dw = WaitForMultipleObjects(2, h, FALSE, INFINITE)。Switch (dw WAIT_OBJECT_0){Case 0: //Read pletedbreadk。Case 1: //Write pletedBreak。}
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1