從函式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...