下面來分析函式ioallocatedriverobjectextension的實現,這個函式主要實現建立驅動程式擴充套件記憶體。
#001 ntstatus
#002 ntapi
#003 ioallocatedriverobjectextension(in pdriver_object driverobject,
#004 in pvoid clientidentificationaddress,
#005 in ulong driverobjectextensionsize,
#006 out pvoid *driverobjectextension)
#007
#044
#045 /* go to the next one */
#046 driverextensions = driverextensions->nextextension;
#047 }
#048
如果沒有衝突的驅動程式擴充套件,就建立乙個新的擴充套件。
#049 /* check if we didn't collide */
#050 if (!driverextensions)
#051
#059
#060 /* release the lock */
#061 kelowerirql(oldirql);
#062
如果沒有插入到驅動程式擴充套件,說明有衝突,因此刪除之前分配的記憶體。
#063 /* check if insertion failed */
#064 if (!inserted)
#065
#070
返回驅動程式擴充套件的開始位置。
#071 /* otherwise, return the pointer */
#072 *driverobjectextension = newdriverextension + 1;
#073 return status_success;
#074 }
#075
有了驅動程式的擴充套件,就可以填寫使用者編寫驅動程式儲存資料的地方了。比如驅動程式鎖、列表、還有驅動程式要訪問的io資源等等。
reactos作業系統實現 178
sendmessagew函式主要用來向視窗傳送訊息。下面就是它的實現 001 lresult winapi 002 sendmessagew hwnd wnd,003 uint msg,004 wparam wparam,005 lparam lparam 006 028 029 填寫訊息結構。03...
reactos作業系統實現 187
隨著全球化的發展,開發軟體都是面向多語言的環境。目前大多數程式都是採用不同字型來顯示不同語言的辦法,那麼有沒有一種更好的辦法,一種字型就可以解決全球語言的顯示呢?答案肯定的,它就是採用邏輯字型ms shell dlg和ms shell dlg2。比如開發應用程式時,就看到在資源裡可以設定ms she...
reactos作業系統實現 193
selectobject函式是將物件選定到指定的裝置場境中。具體實現 如下 001 hgdiobj 002 winapi 003 selectobject hdc hdc,004 hgdiobj hgdiobj 005 016 獲取選擇dc的物件正確的控制代碼。017 hgdiobj gdifixu...