reactos作業系統實現 54

2021-08-24 18:52:49 字數 2536 閱讀 8304

從函式runusetup的迴圈處理裡,可以看到第乙個應處理,就是啟動頁面,也就是呼叫函式setupstartpage,它的**如下:

#001 /*

#002 * start page

#003 * returns

#004 * number of the next page.

#005 */

#006 static page_number

#007 setupstartpage(pinput_record ir)

#008

#033

#034 if (sdi.numberofdisks == 0)

#035

#039

獲取源安裝目錄和根目錄路徑。

#040 /* get the source path and source root path */

#041 status = getsourcepaths(&sourcepath,

#042 &sourcerootpath,

#043 &sourcerootdir);

#044

#045 if (!nt_success(status))

#046

#051 #if 0

#052 else

#053

#058 #endif

#059

準備txtsetup.sif檔案路徑,以便載入它到記憶體。txtsetup.sif是乙個安裝資訊檔案(sif),主要用於 reactos 的文字安裝模式。

#060 /* load txtsetup.sif from install media. */

#061 wcscpy(filenamebuffer, sourcepath.buffer);

#062 wcscat(filenamebuffer, l"");

#063

#064 setupinf = setupopeninffilew(filenamebuffer,

#065 null,

#066 inf_style_win4,

#067 &errorline);

#068

#069 if (setupinf == invalid_handle_value)

#070

#074

查詢安裝資訊檔案的版本資訊。

#075 /* open 'version' section */

#076 if (!setupfindfirstlinew (setupinf, l"version", l"signature", &context))

#077

#081

#082 /* get pointer 'signature' key */

#083 if (!inf_getdata (&context, null, &value))

#084

#088

檢查版本標誌是否為reactos。

#089 /* check 'signature' string */

#090 if (_wcsicmp(value, l"$reactos$") != 0)

#091

#095

啟動即插即用事件處理執行緒。

#096 /* start pnp thread */

#097 if (hpnpthread != invalid_handle_value)

#098

#102

檢查是否需要自動安裝,也就是不需要人為地關注的安裝。

#103 checkunattendedsetup();

#104

如果自動安裝啟用,就進行系統預設的配置安裝,否則就需要人工地選擇後面的安裝功能。

#105 if (isunattendedsetup)

#106

#131

#132 listentry = getnextlistentry(listentry);

#133 }

#134 /* now layoutlist */

#135 listentry = getfirstlistentry(layoutlist);

#136

#137 while (listentry != null)

#138

#145

#146 listentry = getnextlistentry(listentry);

#147 }

#148 setconsolecodepage();

#149

#150 return install_intro_page;

#151 }

#152

在這裡返回人工安裝的下乙個功能頁面,就是語言選擇。

#153 return language_page;

#154 }

#155

通過上面這個函式,就可以開啟安裝資訊檔案,然後判斷是否自動安裝系統,如果是就進入自動安裝過程。如果不是自動安裝,就進入下一步的人工選項。

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