reactos作業系統實現 129

2021-05-10 11:56:46 字數 1258 閱讀 1801

功能驅動將構造請求包,就可以傳送到底層匯流排驅動上。因此需要建立乙個irp,這就需要用iobuilddeviceiocontrolrequest建立乙個io控制碼的irp,用iocalldriver將urb傳送到底層匯流排驅動上。由於上層驅動無法知道底層驅動是同步還是非同步完成的,因此需要做乙個判斷。if語句判斷當非同步完成irp時,用事件等待匯流排驅動完成這個irp。

#001  ntstatus

#002  vfatblockdeviceiocontrol (in pdevice_object deviceobject,

#003               in ulong ctlcode,

#004               in pvoid inputbuffer optional,

#005               in ulong inputbuffersize,

#006               in out pvoid outputbuffer optional,

#007               in out pulong outputbuffersize,

#008               in boolean override)

#009 

#039 

是否需要獲取下一層的裝置棧。

#040    if (override)

#041     

#045 

#046    dprint ("calling io driver... with irp %p/n", irp);

把irp包傳送到下乙個裝置驅動程式。

#047    status = iocalldriver(deviceobject, irp);

#048 

#049    dprint ("waiting for io operation for %p/n", irp);

如果在阻塞狀態,就等待下層驅動程式完成。

#050    if (status == status_pending)

#051     

#058 

返回輸出緩衝區的大小。

#059    if (outputbuffersize)

#060     

#063 

#064    dprint("returning status %x/n", status);

#065 

#066    return status;

#067  }

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...