Windows API---CreateThread函數


HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
__drv_aliasesMem LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);

 

參數
lpThreadAttributes
指向SECURITY_ATTRIBUTES 結構的指針,該結構確定子進程是否可以繼承返回的句柄。如果 lpThreadAttributes為NULL,則無法繼承句柄。

結構的lpSecurityDescriptor成員為新線程指定安全描述符。如果lpThreadAttributes為NULL,則線程獲取默認安全描述符。線程的默認安全描述符中的ACL來自創建者的主要標志。

dwStackSize
堆棧的初始大小,以字節為單位。系統將此值四舍五入到最近的頁面。如果此參數為零,則新線程使用可執行文件的默認大小。有關更多信息,請參閱線程堆棧大小。

lpStartAddress
指向由線程執行的應用程序定義函數的指針。該指針表示線程的起始地址。有關線程函數的更多信息,請參見 ThreadProc

lpParameter
指向要傳遞給線程的變量的指針。

dwCreationFlags

控制線程創建的標志。

0 :該線程在創建后立即運行。
CREATE_SUSPENDEDs 0x00000004: 線程是在掛起狀態下創建的,並且在調用ResumeThread函數之前不會運行 。
STACK_SIZE_PARAM_IS_A_RESERVATION 0x00010000:在 所述dwStackSize參數指定堆棧的初始保留大小。如果未指定此標志,則dwStackSize指定提交大小。

lpThreadId

指向接收線程標識符的變量的指針。如果此參數為 NULL,則不返回線程標識符

返回值
如果函數成功,則返回值是新線程的句柄。

如果函數失敗,則返回值為NULL。要獲取擴展錯誤信息,請調用 GetLastError。

請注意,即使lpStartAddress指向數據,代碼或無法訪問,CreateThread也可能成功 。如果線程運行時起始地址無效,則發生異常,並且線程終止。由於無效的起始地址導致的線程終止被視為線程進程的錯誤退出。此行為類似於CreateProcess的異步特性,即使它引用無效或缺少動態鏈接庫(DLL),也會創建該進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM