用createprocess函式建立程序的意義是什麼

2021-03-20 02:41:35 字數 1637 閱讀 1082

1樓:yx陳子昂

createprocess函式作為win32的一個api用來執行一個新程式。

老的介面winexec和loadmodule函式依舊可用,但是它們同樣通過呼叫createprocess函式實現。

另外createprocess函式除了建立一個程序,還建立一個執行緒物件。這個執行緒將連同一個已初始化了的堆疊一起被建立,堆疊的大小由可執行檔案的檔案頭中的描述決定。執行緒由檔案頭處開始執行。

新程序和新執行緒的控制代碼被以全域性訪問許可權建立。對於這兩個控制代碼中的任一個,如果沒有安全描述符,那麼這個控制代碼就可以在任何需要控制代碼型別作為引數的函式中被使用。當提供安全描述符時,在接下來的時候當控制代碼被使用時,總是會先進行訪問許可權的檢查,如果訪問許可權檢查拒絕訪問,請求的程序將不能使用這個控制代碼訪問這個程序。

2樓:匿名使用者

是windows呼叫的createprocess函式,並不是沒有用createprocess函式。

《windows程式設計》摘抄:

作業系統事實上並不是真的呼叫main函式,而是去呼叫c/c++執行期啟動函式,此函式初始化c/c++執行期庫。因此,在應用程式中可以呼叫malloc和free之類的函式。它也會保證在使用者的**執行之前所有的全域性的或靜態的c++物件能夠被正確的建立,即執行這些物件建構函式中的**。

組成win32程序的兩個部分:

(1)程序核心物件。作業系統使用此核心物件來管理程序,也是作業系統存放程序統計資訊的地方。

(2)私有的虛擬地址空間。此地址空間包含了所有可執行的或者是dll模組的**和資料,它也是程式動態申請記憶體的地方,比如說執行緒堆疊和程序堆。

在控制檯應用程式中,c/c++執行期啟動函式會呼叫程式入口函式main,所以如果程式中沒有main函式的實現**的話,聯結器將返回「unresolved external symbol」錯誤。win32應用程式的啟動過程就是程序的建立過程,作業系統是通過呼叫createprocess函式來建立新的程序的。當一個執行緒呼叫createprocess函式的時候,系統會建立一個程序核心物件,其使用計數初始化為1.

此程序核心物件不是程序本身,僅僅是一個系統用來管理這個程序的一個小的資料結構(pcb,process control block)。系統然後會為新的程序建立一個虛擬地址空間,載入應用程式執行時所需的**和資料。

系統接著會為新程序建立一個主執行緒,這個主執行緒通過執行c/c++執行期啟動**開始執行,c/c++執行期啟動**又會呼叫main函式。如果系統能夠成功建立新的程序和程序的主執行緒,createprocess函式返回true,否則返回false。

用c++建立程序

3樓:琦豬闖紅燈

#include

#include

#include

dword winapi fun1proc(lpvoid ipparameter);

dword winapi fun2proc(lpvoid ipparameter);

void main()

dword winapi fun1proc(lpvoid ipparameter)

dword winapi fun2proc(lpvoid ipparameter)

4樓:電視與沙發

你這個是執行緒不是程序!

用CreateProcess 建立程序為什麼失敗0大神幫

在返回抄 1前使用getlasterror函式看下錯誤碼 同學,我就不好意copy思說你 bai是電子神技大學的了。在int child1 fork printstr1.exe hprocess1 中,首先du你要保證zhi你的目錄下有printstr1.exe這個檔案,其次最好是dao使用絕對目錄...

怎麼除錯CreateProcess建立的程序命令列

宣告一個 程序資訊 變數,將其地址傳給createprocess,作為最後一個引數,建立成功後 用pi.hprocess結束就行 process information pi createprocess 0,路徑 使用createprocess建立程序會有cmd.exe嗎 createprocess...

律師函是用快遞寄過來嗎,律師函以什麼形式送上門

是的,用郵政的快遞寄過來的。警惕上當受騙,如今以此作為 的很多!當然是啊,要不然呢。你好!是的,用郵政的快遞寄過來的。如有疑問,請追問。律師函以什麼形式送上門 律師函一般是採用快遞的方式送達,因為郵寄單可以作為一項證據,並且具有證明效力。1 郵局的特快專遞比快遞公司的快遞更安全。一旦對方否認收到律師...