windows核心程式設計 第四章 程序

2022-02-19 19:12:06 字數 2200 閱讀 6292

獲得當前目錄:

dword getfullpathname(pctstr pszfile,dword cchpath,ptstr pszpath,ptstr *ppszfilepart);

獲取c盤的當前目錄

tchar szcurdir[max_path];

getfullpathname("c",max_path,szcurdir,null);

獲得系統版本:

bool getversion(posversioninfo pversioninformation);

成功返回true //注意,如果建立程序找不到相關的dll也會返回true;

pszcommandline最好不要傳入常量,vc會把傳入的字串放入唯讀記憶體,例如:

createprocess(null,_t("notepad"),null,null,false,0,null,null,&si,&pi);

將會執行錯誤(經過自己測試,gcc不會執行錯誤,vs2005會,書上說早期的vc也不會錯誤)

最好是:

tchar szcommandline=_t("notepad");

createprocess(null,szcommandline,null,null,false,0,null,null,&si,&pi);

將會開啟notepad程式

tchar szpath="wordpad readme.txt";

createprocess("c:\\windows\\system32\\notepad.exe",szpath,null,null,false,0,null,null,&si,&pi);

開啟notepad程式,並傳入szpaht的命令

fdwcreate 用於規定如何來建立新程序,也可以設定優先順序.

ebug_process:當子程序發生某些事情,要告訴父程序

debug_only_this_process:和ebug_process類似,不過只告訴發生的某些特定時間,比如子程序再建立子程序就不告訴

create_suspended:子程序建立,父程序掛起

detached_process:組織基於gui程序對他的父程序console的訪問,並將輸出傳送到新的console視窗

create_new_console:建立新程序同時為新程序建立控制台,不可和deta_process同時使用,否則產生乙個錯誤

create_no_window:不要為新程序建立控制台視窗

create_new_process_group:當建立多個程序後,如果使用者按下ctrl+c,那麼將會同時告訴所有程序使用者按下ctrl+c;

create_default_error_mode:新程序不繼承父程序的錯誤使用模式

create_separate_wow_vdm:當在windows 2000執行16位的時候,建立單獨的dos虛擬機器

create_shared_wow_vdm:當在windows 2000執行16位的時候,除非設定create_shparate_wow_vdm,否則所有16位程式都在單獨的dos虛擬機器執行,但是可以改變登錄檔共享

create_forcedos:強制系統執行嵌入16位os/2應用程式的mos-dos應用程式

create_breakaway_from_job:使用作業中的金衡生成乙個與作業相關聯的新程序

終止執行程序:

1.主線程函式返回(最好的方法)

2.程序中的執行緒呼叫exitprocess(最好不要);

3.另外乙個程序中的執行緒(最好也不要);

4.所有執行緒自行終止

bool terminateprocess(handle hprocess,uint fuexitcode);

與eixtprocess差別:任何執行緒都可以呼叫terminateprocess

獲得目前已經撤銷程序的退出**

bool getexitcodeprocess(handle hprocess,pdword pdwexitcode);

closehandle(handle hprocess);關閉不用的控制代碼,很重要

dword waitforsingleobject(handle hobject,dword dwtimeout);

等待hobject終止執行

pvoid getmodulepreferredbaseaddr(dword dwprocessid,pvoid pvmoduleremote);

接受乙個程序id和程序模組的位址

WINDOWS 核心程式設計第四章

程序 4.1.0 程序是乙個正在執行的程式的例項,有兩部分組成 1 作業系統用來管理程序的核心物件,存放程序的統計資訊 2 位址空間,包含程序可執行模組的 和資料,和動態分配的記憶體空間 建立乙個程序後系統會自動建立乙個執行緒 成為主線程 window應用程式的進入點函式 1 int winapi ...

第四章 程序

程序由兩部分組成 載入到程序位址空間的每個可執行檔案或dll檔案均被賦予乙個獨一無二的示例控制代碼。可執行檔案的示例控制代碼作為winmain的第乙個引數hinstexe來傳遞。載入資源的函式都需要該控制代碼的值。hicon loadicon hinstance hinst,pctstr pszic...

第四章 程序(1)

程序一a 程序通常被定義為乙個正在執行的程式的例項,它由兩個部分組成 os用來管理程序的核心物件 核心物件也是系統用來存放關於程序的統計資訊的地方 位址空間 它包含所有可執行模組或 dll模組的 和資料 它還包含動態記憶體分配的空間 當建立乙個程序時,系統會自動建立它的第乙個執行緒,稱為主線程。然後...