前面介紹怎麼樣呼叫動態連線庫里的installreactos函式,下面就來分析這個函式的**,看看這個函式是怎麼執行嚮導介面,又做了些什麼樣的工作。如下:
#001 dword winapi
#002 installreactos(hinstance hinstance)
#003
#017
建立桌面、選單、檔案關聯的快捷方式。
#018 if (!createshortcuts())
#019
#023
建立安全相關的帳號管理。
#024 /* initialize the security account manager (sam) */
#025 if (!saminitializesam())
#026
#030
為安裝使用者提供乙個隨便的電腦名稱。
#031 /* create the semi-random domain-sid */
#032 if (!createrandomsid(&domainsid))
#033
#037
把這個電腦名稱儲存到登錄檔。
#038 /* set the domain sid (aka computer sid) */
#039 if (!samsetdomainsid(domainsid))
#040
#045
#048
建立管理員帳號。
#049 /* create the administrator account */
#050 if (!samcreateuser(l"administrator", l"", adminsid))
#051
#065 }
#066
#067 rtlfreesid(adminsid);
#068 rtlfreesid(domainsid);
#069
以管理員的帳號登入。
#070 /* ros hack, as long as ntunloadkey is not implemented */
#071
#086 zeromemory(&profileinfo, sizeof(profileinfow));
#087 profileinfo.dwsize = sizeof(profileinfow);
#088 profileinfo.lpusername = l"administrator";
#089 profileinfo.dwflags = pi_noui;
#090 loaduserprofilew(htoken, &profileinfo);
#091 closehandle(htoken);
#092 }
#093 else
#094
#097 }
#098 /* end of ros hack */
#099
建立系統工作的臨時目錄。
#100 createtempdir(l"temp");
#101 createtempdir(l"tmp");
#102
建立system目錄。
#103 if (getwindowsdirectory(szbuffer, sizeof(szbuffer) / sizeof(tchar)))
#104
#109
根據syssetup.inf檔案來安裝相應的元件,還安裝pnp管理器。
#110 if (!commoninstall())
#111 return 0;
#112
初始化讓使用者選擇輸入引數的嚮導介面。
#113 installwizard();
#114
關閉syssetup.inf檔案。
#115 setupcloseinffile(hsyssetupinf);
設定系統安裝的型別。
#116 setsetuptype(0);
#117
#118 logitem(syssetup_severity_information, l"installing reactos done");
關閉安裝的log檔案。
#119 terminatesetupactionlog();
#120
獲取關閉系統的特權。
#121 /* get shutdown privilege */
#122 if (! openprocesstoken(getcurrentprocess(), token_adjust_privileges, &token))
#123
#127 if (!lookupprivilegevalue(
#128 null,
#129 se_shutdown_name,
#130 &privs.privileges[0].luid))
#131
#135 privs.privilegecount = 1;
#136 privs.privileges[0].attributes = se_privilege_enabled;
#137 if (adjusttokenprivileges(
#138 token,
#139 false,
#140 &privs,
#141 0,
#142 (ptoken_privileges)null,
#143 null) == 0)
#144
#148
退系統,並重新啟動。
#149 exitwindow***(ewx_reboot, 0);
#150 return 0;
#151 }
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...