雜亂無章
摘要: 為什么要用IO_REMOVE_LOCK?
WDM 驅(qū)動程序在處理設備刪除 IRP 并釋放驅(qū)動程序分配的內(nèi)存后可能接收到附加的 IRP。在處理附加的 IRP 時試圖引用已經(jīng)釋放的內(nèi)存會導致系統(tǒng)崩潰。驅(qū)動程序能夠接收已刪除設備的 IRP,這有兩個原因:
在設備被刪除后,另一個組件可以發(fā)送 I/O。
在設備刪除請求之前發(fā)送的 I/O 請求可能在目標驅(qū)動程序處理設備刪除請求之后到達。
閱讀全文
摘要: 聲明:本文所描述的所有資料和源碼均搜集自互聯(lián)網(wǎng),版權歸原始作者所有,所以在引用資料時我盡量注明原始作者和出處;本文所搜集資料也僅供同學們學習之用,由于用作其他用途引起的責任糾紛,本人不負任何責任。(本資料由代碼瘋子整理,歡迎訪問http://www.programlife.net/)
閱讀全文
摘要: 什么是第一輪異常?
(1)當一個程序被調(diào)試的時候,如果有異常發(fā)生調(diào)試器會得到通知,這個時候,被調(diào)試的應用程序?qū)粧炱鸩⑶艺{(diào)試器決定如何來處理這個異常。當一個異常第一次經(jīng)過這種機制就是所謂的“第一輪異常”。根據(jù)調(diào)試器的設置,調(diào)試器可能會忽略這個異常并讓程序繼續(xù)執(zhí)行,或者保持被調(diào)試程序的掛起狀態(tài)并進入調(diào)試模式。
如果應用程序無法處理這個異常,調(diào)試器會再次得到通知,這個就是所謂的“Second Chance Exception”(第二輪異常)了。同樣調(diào)試器會再次掛起被調(diào)試程序并決定如何來處理這個異常。通常情況下,當?shù)诙啴惓0l(fā)生的時候,調(diào)試器都被配置為進入調(diào)試模式,來允許用戶進行調(diào)試。
閱讀全文
摘要: (本文最初發(fā)表于程序人生 >> Copy On Write(寫時復制) 作者:代碼瘋子)
Copy On Write(寫時復制)是在編程中比較常見的一個技術,面試中也會偶爾出現(xiàn)(好像Java中就經(jīng)常有字符串寫時復制的筆試題),今天在看《More Effective C++》的引用計數(shù)時就講到了Copy On Write——寫時復制。下面簡單介紹下Copy On Write(寫時復制),我們假設STL中的string支持寫時復制(只是假設,具體未經(jīng)考證,這里以Mircosoft Visual Studio 6.0為例,如果有興趣,可以自己翻閱源碼)
Copy On Write(寫時復制)的原理是什么?
有一定經(jīng)驗的程序員應該都知道Copy On Write(寫時復制)使用了
閱讀全文
摘要: (本文最初發(fā)表于程序人生 >> Member Function Templates(成員函數(shù)模板) 作者:代碼瘋子)
Member Function Templates翻譯成中文就是成員函數(shù)模板,這個東西我個人見得少,最初是在STL的auto_ptr源代碼里面看到的,當時候也不是很明白;這幾天又翻了翻《More Effective C++》,正好看到上面介紹的比較詳細,就找了點資料總結(jié)一下。
為了更好的說明問題,我們自己定義一個Smart Pointer(智能指針,這里只是示例,所以定義是不完整和不完善的),假設現(xiàn)在我們手上有這樣三個類:MusicProduct、CD、MP3,類之間的關系圖如下:
閱讀全文
友情鏈接: