reactos作業系統實現 90

2021-05-05 12:57:36 字數 1295 閱讀 4077

下面來分析函式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...