版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、常用函數(shù)STARTUPINFOtypedef struct _STARTUPINFO DWORD HYPERLINK cb; LPTSTR HYPERLINK lpReserved; LPTSTR HYPERLINK lpDesktop; LPTSTR HYPERLINK lpTitle; DWORD HYPERLINK dwX; DWORD HYPERLINK dwY; DWORD HYPERLINK dwXSize; DWORD HYPERLINK dwYSize; DWORD HYPERLINK dwXCountChars; DWORD HYPERLINK dwYCountChars;
2、DWORD HYPERLINK dwFillAttribute; DWORD HYPERLINK dwFlags; WORD HYPERLINK wShowWindow; WORD HYPERLINK cbReserved2; LPBYTE HYPERLINK lpReserved2; HANDLE HYPERLINK hStdInput; HANDLE HYPERLINK hStdOutput; HANDLE HYPERLINK hStdError; STARTUPINFO, *LPSTARTUPINFO;參數(shù)說(shuō)明STARTUPINFO結(jié)構(gòu)該結(jié)構(gòu)用于指定新進(jìn)程的主窗口特性 DWORD cb;
3、 /包含STARTUPINFO結(jié)構(gòu)中的字節(jié)數(shù).應(yīng)用程序必須將cb初始化為sizeof(STARTUPINFO) PSTR lpReserved; /保留。必須初始化為N U L L PSTR lpDesktop; /用于標(biāo)識(shí)啟動(dòng)應(yīng)用程序所在的桌面的名字。如果該桌面存在,新進(jìn)程便與指定的桌面相關(guān)聯(lián)。 如果桌面不存在,便創(chuàng)建一個(gè)帶有默認(rèn)屬性的桌面,并使用為新進(jìn)程指定的名字。 如果lpDesktop是NULL(這是最常見(jiàn)的情況),那么該進(jìn)程將與當(dāng)前桌面相關(guān)聯(lián) PSTR lpTitle; /用于設(shè)定控制臺(tái)窗口的名稱。如果l p Ti t l e 是N U L L ,則可執(zhí)行文件的名字將用作窗口名 DW
4、ORD dwX; /用于設(shè)定應(yīng)用程序窗口在屏幕上應(yīng)該放置的位置的x 和y 坐標(biāo)(以像素為單位)。 DWORD dwY; 只有當(dāng)子進(jìn)程用CW_USEDEFAULT作為CreateWindow的x參數(shù)來(lái)創(chuàng)建它的第一個(gè)重疊窗口時(shí), 才使用這兩個(gè)坐標(biāo)。若是創(chuàng)建控制臺(tái)窗口的應(yīng)用程序,這些成員用于指明控制臺(tái)窗口的左上角 DWORD dwXSize; /用于設(shè)定應(yīng)用程序窗口的寬度和長(zhǎng)度(以像素為單位)只有dwYsize DWORD dwYSize; 當(dāng)子進(jìn)程將C W _ U S E D E FA U LT 用作C r e a t e Wi n d o w 的 n Wi d t h參數(shù)來(lái)創(chuàng)建它的第一個(gè)重疊窗口
5、時(shí),才使用這些值。 若是創(chuàng)建控制臺(tái)窗口的應(yīng)用程序,這些成員將用于指明控制臺(tái)窗口的寬度 DWORD dwXCountChars; /用于設(shè)定子應(yīng)用程序的控制臺(tái)窗口的寬度和高度(以字符為單位) DWORD dwYCountChars; DWORD dwFillAttribute; /用于設(shè)定子應(yīng)用程序的控制臺(tái)窗口使用的文本和背景顏色 DWORD dwFlags; /請(qǐng)參見(jiàn)下一段和表4 - 7 的說(shuō)明 WORD wShowWindow; /用于設(shè)定如果子應(yīng)用程序初次調(diào)用的S h o w Wi n d o w 將S W _ S H O W D E FA U LT 作為 n C m d S h o w
6、參數(shù)傳遞時(shí),該應(yīng)用程序的第一個(gè)重疊窗口應(yīng)該如何出現(xiàn)。 本成員可以是通常用于Show Wi n d o w 函數(shù)的任何一個(gè)S W _ *標(biāo)識(shí)符 WORD cbReserved2; /保留。必須被初始化為0 PBYTE lpReserved2; /保留。必須被初始化為N U L L HANDLE hStdInput; /用于設(shè)定供控制臺(tái)輸入和輸出用的緩存的句柄。 按照默認(rèn)設(shè)置,h S t d I n p u t 用于標(biāo)識(shí)鍵盤(pán)緩存, h S t d O u t p u t 和h S t d E r r o r用于標(biāo)識(shí)控制臺(tái)窗口的緩存 HANDLE hStdOutput; HANDLE hStdErr
7、or; 當(dāng)Wi n d o w s 創(chuàng)建新進(jìn)程時(shí),它將使用該結(jié)構(gòu)的有關(guān)成員。大多數(shù)應(yīng)用程序?qū)⒁笊傻膽?yīng)用程序僅僅使用默認(rèn)值。至少應(yīng)該將該結(jié)構(gòu)中的所有成員初始化為零,然后將c b 成員設(shè)置為該結(jié)構(gòu)的大小: STARTUPINFO si = sizeof(si) ; CreateProcess(.,&si,.);CreateProcessWIN32API函數(shù)CreateProcess用來(lái)創(chuàng)建一個(gè)新的進(jìn)程和它的 HYPERLINK /view/536183.htm t _blank 主線程,這個(gè)新進(jìn)程運(yùn)行指定的 HYPERLINK /view/159830.htm t _blank 可執(zhí)行文件。B
8、OOL CreateProcess( LPCWSTR HYPERLINK pszImageName, LPCWSTR HYPERLINK pszCmdLine, LPSECURITY_ATTRIBUTES HYPERLINK psaProcess, LPSECURITY_ATTRIBUTES HYPERLINK psaThread, BOOL HYPERLINK fInheritHandles, DWORD HYPERLINK fdwCreate, LPVOID HYPERLINK pvEnvironment, LPWSTR HYPERLINK pszCurDir, LPSTARTUPINFO
9、W HYPERLINK psiStartInfo, LPPROCESS_INFORMATION HYPERLINK pProcInfo); 參數(shù)BOOL CreateProcess ( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。 LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTST
10、R lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );1.lpApplicationName: 指向一個(gè)NULL結(jié)尾的、用來(lái)指定可執(zhí)行模塊的字符串。 這個(gè)字符串可以是可執(zhí)行模塊的絕對(duì)路徑,也可以是相對(duì)路徑,在后一種情況下,函數(shù)使用當(dāng)前驅(qū)動(dòng)器和目錄建立可執(zhí)行模塊的路徑。這個(gè)參數(shù)可以被設(shè)為NULL,在這種情況下,可執(zhí)行模塊的名字必須處于 lpCommandLine 參數(shù)的最前面并由空格符與后面的字符分開(kāi)。 這個(gè)被指定的模塊可以是一個(gè)Win32應(yīng)用程序。如果適當(dāng)?shù)?/p>
11、子系統(tǒng)在當(dāng)前計(jì)算機(jī)上可用的話,它也可以是其他類型的模塊(如MS-DOS 或 OS/2)。在Windows NT中,如果可執(zhí)行模塊是一個(gè)16位的應(yīng)用程序,那么這個(gè)參數(shù)應(yīng)該被設(shè)置為NULL并且應(yīng)該在lpCommandLine參數(shù)中指定可執(zhí)行模塊的名稱。16位的應(yīng)用程序是以DOS虛擬機(jī)或Win32上的Windows(WOW) 為進(jìn)程的方式運(yùn)行。 2.lpCommandLine:指向一個(gè)以NULL結(jié)尾的字符串,該字符串指定要執(zhí)行的命令行。 這個(gè)參數(shù)可以為空,那么函數(shù)將使用lpApplicationName參數(shù)指定的字符串當(dāng)做要運(yùn)行的程序的命令行。 如果lpApplicationName和lpComma
12、ndLine參數(shù)都不為空,那么lpApplicationName參數(shù)指定將要被運(yùn)行的模塊,lpCommandLine參數(shù)指定將被運(yùn)行的模塊的命令行。新運(yùn)行的進(jìn)程可以使用GetCommandLine函數(shù)獲得整個(gè)命令行。C語(yǔ)言程序可以使用argc和argv參數(shù)。 如果lpApplicationName參數(shù)為空,那么這個(gè)字符串中的第一個(gè)被空格分隔的要素 指定可執(zhí)行模塊名。如果文件名不包含擴(kuò)展名,那么.exe將被假定為默認(rèn)的擴(kuò)展名。如果文件名以一個(gè)點(diǎn)(.)結(jié)尾且沒(méi)有擴(kuò)展名,或文件名中包含路徑,.exe將不會(huì)被加到后面。如果文件名中不包含路徑,Windows將按照如下順序?qū)ふ疫@個(gè)可執(zhí)行文件: 1).當(dāng)前
13、應(yīng)用程序的目錄。 2).父進(jìn)程的目錄。 3).Windows 95:Windows系統(tǒng)目錄,可以使用GetSystemDirectory函數(shù)獲得。 Windows NT:32位Windows系統(tǒng)目錄。可以使用GetSystemDirectory函數(shù)獲得,目錄名是SYSTEM32。 4).在Windows NT中:16位Windows系統(tǒng)目錄。不可以使用Win32函數(shù)獲得這個(gè)目錄,但是它會(huì)被搜索,目錄名是SYSTEM。 5).Windows目錄??梢允褂肎etWindowsDirectory函數(shù)獲得這個(gè)目錄。 6).列在PATH環(huán)境變量中的目錄。 如果被創(chuàng)建的進(jìn)程是一個(gè)以MS-DOS或16位Wi
14、ndows為基礎(chǔ)的應(yīng)用程序,lpCommandLine參數(shù)應(yīng)該是一個(gè)以可執(zhí)行文件的文件名作為第一個(gè)要素的絕對(duì)路徑,因?yàn)檫@樣做可以使32位Windows程序工作的很好,這 樣設(shè)置lpCommandLine參數(shù)是最強(qiáng)壯的。 注意:Visual C+ 2005以后的版本中,如果向CreateProcess函數(shù)傳遞一個(gè)常量指針作為命令行參數(shù)的話,將會(huì)發(fā)生訪問(wèn)違規(guī)錯(cuò)誤。原因是系統(tǒng)在1執(zhí)行該函數(shù)時(shí)會(huì)修改lpCommandLine所指向的字符串(比如解釋轉(zhuǎn)義字符等)。因此,在調(diào)用此函數(shù)前,應(yīng)該定義一個(gè)臨時(shí)字符數(shù)組變量來(lái)保存命令行參數(shù),并將這個(gè)臨時(shí)變量作為lpCommandLine參數(shù)傳遞. 傳遞參數(shù)例子:
15、LPTSTR szCmdline = _tcsdup(TEXT(c:test.bat);/用szCmdline做CreateProcess第2參數(shù),VS2008測(cè)試通過(guò) 3.lpProcessAttributes: 指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體決定是否返回的句柄可以被子進(jìn)程繼承。如果lpProcessAttributes參數(shù)為空(NULL),那么句柄不能被繼承。 在Windows NT中:SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員指定了新進(jìn)程的安全描述符,如果參數(shù)為空,新進(jìn)程使用默認(rèn)的安全描述符。 在Window
16、s95中:SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員被忽略。 4.lpThreadAttributes: 指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體決定是否返回的指向線程的句柄可以被子進(jìn)程繼承。如果lpThreadAttributes參數(shù)為空(NULL),那么句柄不能被繼承。 在Windows NT中,SECURITY_ATTRIBUTES結(jié)構(gòu)的lpSecurityDescriptor成員指定了主線程的安全描述符,如果參數(shù)為空,主線程使用默認(rèn)的安全描述符。 在Windows95中:SECURITY_ATTRIBUTES結(jié)構(gòu)的l
17、pSecurityDescriptor成員被忽略。 5.bInheritHandles: 指示新進(jìn)程是否從調(diào)用進(jìn)程處繼承了句柄。 如果參數(shù)的值為真,調(diào)用進(jìn)程中的每一個(gè)可繼承的打開(kāi)句柄都將被子進(jìn)程繼承。被繼承的句柄與原進(jìn)程擁有完全相同的值和訪問(wèn)權(quán)限。 6.dwCreationFlags: 指定附加的、用來(lái)控制優(yōu)先類和進(jìn)程的創(chuàng)建的標(biāo)志。以下的創(chuàng)建標(biāo)志可以以除下面列出的方式外的任何方式組合后指定。 值:CREATE_DEFAULT_ERROR_MODE 含義:新的進(jìn)程不繼承調(diào)用進(jìn)程的錯(cuò)誤模式。CreateProcess函數(shù)賦予新進(jìn)程當(dāng)前的默認(rèn)錯(cuò)誤模式作為替代。應(yīng)用程序可以調(diào)用SetErrorMode
18、函數(shù)設(shè)置當(dāng)前的默認(rèn)錯(cuò)誤模式。 這個(gè)標(biāo)志對(duì)于那些運(yùn)行在沒(méi)有硬件錯(cuò)誤環(huán)境下的多線程外殼程序是十分有用的。 對(duì)于CreateProcess函數(shù),默認(rèn)的行為是為新進(jìn)程繼承調(diào)用者的錯(cuò)誤模式。設(shè)置這個(gè)標(biāo)志以改變默認(rèn)的處理方式。 值:CREATE_NEW_CONSOLE 含義:新的進(jìn)程將使用一個(gè)新的控制臺(tái),而不是繼承父進(jìn)程的控制臺(tái)。這個(gè)標(biāo)志不能與DETACHED_PROCESS標(biāo)志一起使用。 值:CREATE_NEW_PROCESS_GROUP 含義:新進(jìn)程將使一個(gè)進(jìn)程樹(shù)的根進(jìn)程。進(jìn)程樹(shù)中的全部進(jìn)程都是根進(jìn)程的子進(jìn)程。新進(jìn)程樹(shù)的用戶標(biāo)識(shí)符與這個(gè)進(jìn)程的標(biāo)識(shí)符是相同的,由lpProcessInformation
19、參數(shù)返回。進(jìn)程樹(shù)經(jīng)常使用GenerateConsoleCtrlEvent函數(shù)允許發(fā)送CTRL+C或CTRL+BREAK信號(hào)到一組控制臺(tái)進(jìn)程。 值:CREATE_SEPARATE_WOW_VDM 含義:(只適用于Windows NT)這個(gè)標(biāo)志只有當(dāng)運(yùn)行一個(gè)16位的 Windows應(yīng)用程序時(shí)才是有效的。如果被設(shè)置,新進(jìn)程將會(huì)在一個(gè)私有的虛擬DOS機(jī)(VDM)中運(yùn)行。另外,默認(rèn)情況下所有的16位Windows應(yīng) 用程序都會(huì)在同一個(gè)共享的VDM中以線程的方式運(yùn)行。單獨(dú)運(yùn)行一個(gè)16位程序的優(yōu)點(diǎn)是一個(gè)應(yīng)用程序的崩潰只會(huì)結(jié)束這一個(gè)VDM的運(yùn)行;其他那些在不同 VDM中運(yùn)行的程序會(huì)繼續(xù)正常的運(yùn)行。同樣的,在不
20、同VDM中運(yùn)行的16位Windows應(yīng)用程序擁有不同的輸入隊(duì)列,這意味著如果一個(gè)程序暫時(shí)失去響 應(yīng),在獨(dú)立的VDM中的應(yīng)用程序能夠繼續(xù)獲得輸入。 值:CREATE_SHARED_WOW_VDM 含義:(只適用于Windows NT)這個(gè)標(biāo)志只有當(dāng)運(yùn)行一個(gè)16位的Windows應(yīng)用程序時(shí)才是有效的。如果WIN.INI中的Windows段的DefaultSeparateVDM選項(xiàng)被設(shè)置為真,這個(gè)標(biāo)識(shí)使得CreateProcess函數(shù)越過(guò)這個(gè)選項(xiàng)并在共享的虛擬DOS機(jī)中運(yùn)行新進(jìn)程。 值:CREATE_SUSPENDED 含義:新進(jìn)程的主線程會(huì)以暫停的狀態(tài)被創(chuàng)建,直到調(diào)用ResumeThread函數(shù)被
21、調(diào)用時(shí)才運(yùn)行。 值:CREATE_UNICODE_ENRONMENT 含義:如果被設(shè)置,由lpEnvironment參數(shù)指定的環(huán)境塊使用Unicode字符,如果為空,環(huán)境塊使用ANSI字符。 值:DEBUG_PROCESS 含義:如果這個(gè)標(biāo)志被設(shè)置,調(diào)用進(jìn)程將被當(dāng)做一個(gè)調(diào)試程序,并且新進(jìn)程會(huì)被當(dāng)做被調(diào)試的進(jìn)程。系統(tǒng)把被調(diào)試程序發(fā)生的所有調(diào)試事件通知給調(diào)試器。 如果你使用這個(gè)標(biāo)志創(chuàng)建進(jìn)程,只有調(diào)用進(jìn)程(調(diào)用CreateProcess函數(shù)的進(jìn)程)可以調(diào)用WaitForDebugEvent函數(shù)。 值:DEBUG_ONLY_THIS_PROCESS 含義:如果此標(biāo)志沒(méi)有被設(shè)置且調(diào)用進(jìn)程正在被調(diào)試,新進(jìn)
22、程將成為調(diào)試調(diào)用進(jìn)程的調(diào)試器的另一個(gè)調(diào)試對(duì)象。如果調(diào)用進(jìn)程沒(méi)有被調(diào)試,有關(guān)調(diào)試的行為就不會(huì)產(chǎn)生。 值:DETACHED_PROCESS 含義:對(duì)于控制臺(tái)進(jìn)程,新進(jìn)程沒(méi)有訪問(wèn)父進(jìn)程控制臺(tái)的權(quán)限。新進(jìn)程可以通過(guò)AllocConsole函數(shù)自己創(chuàng)建一個(gè)新的控制臺(tái)。這個(gè)標(biāo)志不可以與CREATE_NEW_CONSOLE標(biāo)志一起使用。 dwCreationFlags參數(shù) 還用來(lái)控制新進(jìn)程的優(yōu)先類,優(yōu)先類用來(lái)決定此進(jìn)程的線程調(diào)度的優(yōu)先級(jí)。如果下面的優(yōu)先級(jí)類標(biāo)志都沒(méi)有被指定,那么默認(rèn)的優(yōu)先類是NORMAL_PRIORITY_CLASS,除非被創(chuàng)建的進(jìn)程是IDLE_PRIORITY_CLASS。在這種情況下子進(jìn)
23、程的默認(rèn)優(yōu)先類是IDLE_PRIORITY_CLASS。 可以下面的標(biāo)志中的一個(gè): 優(yōu)先級(jí):HIGH_PRIORITY_CLASS 含義:指示這個(gè)進(jìn)程將執(zhí)行時(shí)間臨界的任務(wù),所以它必須被立即運(yùn)行以保證正確。這個(gè)優(yōu)先級(jí)的程序 優(yōu)先于正常優(yōu)先級(jí)或空閑優(yōu)先級(jí)的程序。一個(gè)例子是Windows任務(wù)列表,為了保證當(dāng)用戶調(diào)用時(shí)可以立刻響應(yīng),放棄了對(duì)系統(tǒng)負(fù)荷的考慮。確保在使用高優(yōu)先 級(jí)時(shí)應(yīng)該足夠謹(jǐn)慎,因?yàn)橐粋€(gè)高優(yōu)先級(jí)的CPU關(guān)聯(lián)應(yīng)用程序可以占用幾乎全部的CPU可用時(shí)間。 優(yōu)先級(jí):IDLE_PRIORITY_CLASS 含義:指示這個(gè)進(jìn)程的線程只有在系統(tǒng)空閑時(shí)才會(huì)運(yùn)行并且可以被任何高優(yōu)先級(jí)的任務(wù)打斷。例如屏幕保護(hù)
24、程序??臻e優(yōu)先級(jí)會(huì)被子進(jìn)程繼承。 優(yōu)先級(jí):NORMAL_PRIORITY_CLASS 含義:指示這個(gè)進(jìn)程沒(méi)有特殊的任務(wù)調(diào)度要求。 優(yōu)先級(jí):REALTIME_PRIORITY_CLASS 含義:指示這個(gè)進(jìn)程擁有可用的最高優(yōu)先級(jí)。一個(gè)擁有實(shí)時(shí)優(yōu)先級(jí)的進(jìn)程的線程可以打斷所有其他進(jìn)程線程的執(zhí)行,包括正在執(zhí)行重要任務(wù)的系統(tǒng)進(jìn)程。例如,一個(gè)執(zhí)行時(shí)間稍長(zhǎng)一點(diǎn)的實(shí)時(shí)進(jìn)程可能導(dǎo)致磁盤(pán)緩存不足或鼠標(biāo)反映遲鈍。 7.lpEnvironment: 指向一個(gè)新進(jìn)程的環(huán)境塊。如果此參數(shù)為空,新進(jìn)程使用調(diào)用進(jìn)程的環(huán)境。 一個(gè)環(huán)境塊存在于一個(gè)由以NULL結(jié)尾的字符串組成的塊中,這個(gè)塊也是以NULL結(jié)尾的。每個(gè)字符串都是nam
25、e=value的形式。 因?yàn)橄嗟葮?biāo)志被當(dāng)做分隔符,所以它不能被環(huán)境變量當(dāng)做變量名。 與其使用應(yīng)用程序提供的環(huán)境塊,不如直接把這個(gè)參數(shù)設(shè)為空,系統(tǒng)驅(qū)動(dòng)器上的當(dāng)前目錄信息不會(huì)被自動(dòng)傳遞給新創(chuàng)建的進(jìn)程。對(duì)于這個(gè)情況的探討和如何處理,請(qǐng)參見(jiàn)注釋一節(jié)。 環(huán)境塊可以包含Unicode或ANSI字符。如果lpEnvironment指向的環(huán)境塊包 含Unicode字符,那么dwCreationFlags字段的CREATE_UNICODE_ENRONMENT標(biāo)志將被設(shè)置。如果塊包含ANSI 字符,該標(biāo)志將被清空。 請(qǐng)注意一個(gè)ANSI環(huán)境塊是由兩個(gè)零字節(jié)結(jié)束的:一個(gè)是字符串的結(jié)尾,另一個(gè)用來(lái)結(jié)束這個(gè)快。一個(gè)Uni
26、code環(huán)境塊是由四個(gè)零字節(jié)結(jié)束的:兩個(gè)代表字符串結(jié)束,另兩個(gè)用來(lái)結(jié)束塊。 8.lpCurrentDirectory: 指向一個(gè)以NULL結(jié)尾的字符串,這個(gè)字符串用來(lái)指定子進(jìn)程的工作路徑。這個(gè)字符串必須是一個(gè)包含驅(qū)動(dòng)器名的絕對(duì)路徑。如果這個(gè)參數(shù)為空,新進(jìn)程將使用與調(diào)用進(jìn)程相同的驅(qū)動(dòng)器和目錄。這個(gè)選項(xiàng)是一個(gè)需要啟動(dòng)應(yīng)用程序并指定它們的驅(qū)動(dòng)器和工作目錄的外殼程序的主要條件。 9.lpStartupInfo: 指向一個(gè)用于決定新進(jìn)程的主窗體如何顯示的STARTUPINFO結(jié)構(gòu)體。 10.lpProcessInformation: 指向一個(gè)用來(lái)接收新進(jìn)程的識(shí)別信息的PROCESS_INFORMATIO
27、N結(jié)構(gòu)體。PROCESS_INFORMATION 結(jié)構(gòu)在創(chuàng)建進(jìn)程時(shí)相關(guān)的數(shù)據(jù)結(jié)構(gòu)之一,該結(jié)構(gòu)返回有關(guān)新進(jìn)程及其主線程的信息。其結(jié)構(gòu)定義如下。 typedef struct_PROCESS_INFORMATION HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; PROCESS_INFORMATION; 其中成員含義如下。 hProcess:返回新進(jìn)程的句柄。 hThread:返回主線程的句柄。 dwProcessId:返回一個(gè)全局進(jìn)程標(biāo)識(shí)符。該標(biāo)識(shí)符用于標(biāo)識(shí)一個(gè)進(jìn)程。從進(jìn)程被 創(chuàng)建到終止,該值始終有效。
28、dwThreadId:返回一個(gè)全局線程標(biāo)識(shí)符。該標(biāo)識(shí)符用于標(biāo)識(shí)一個(gè)線程。從線程被創(chuàng) 建到終止,該值始終有效。GetSystemDirectory函數(shù)原型UINT WINAPI GetSystemDirectory( _out LPTSTR lpBuffer, _in UINT uSize );參數(shù)說(shuō)明1這個(gè)函數(shù)能取得Windows系統(tǒng)目錄(System目錄)的完整路徑名。在這個(gè)目錄中,包含了所有必要的系統(tǒng)文件。根據(jù)微軟的標(biāo)準(zhǔn),其他定制控件和一些共享組件也可放到這個(gè)目錄。通常應(yīng)避免在這個(gè)目錄里創(chuàng)建文件。在網(wǎng)絡(luò)環(huán)境中,往往需要管理員權(quán)限才可對(duì)這個(gè)目錄進(jìn)行寫(xiě)操作 返回值 Long,裝載到lpBuff
29、er緩沖區(qū)的字符數(shù)量。如lpBuffer不夠大,不能容下文件名,則返回要求的緩沖區(qū)長(zhǎng)度 參數(shù)表 參數(shù) 類型及說(shuō)明 lpBuffer String,用于裝載系統(tǒng)目錄路徑名的一個(gè)字串緩沖區(qū)。它應(yīng)事先初始化成“路徑”字符串的長(zhǎng)度+1。通常至少要為這個(gè)緩沖區(qū)分配MAX_PATH個(gè)字符的長(zhǎng)度 nSize Long,lpBuffer字串的最大長(zhǎng)度#include main()char buf100=0;LONG ipbuf;ipbuf = GetSystemDirectory(buf,100);printf(path:%sn,buf);緩沖區(qū) = 取空白文本 (260) 長(zhǎng)度 = GetSystemDir
30、ectoryA (緩沖區(qū), 260) 返回 (緩沖區(qū))GetTempPathAPI中函數(shù)原形為: DWORD WINAPI GetTempPath( _in DWORD HYPERLINK nBufferLength, _out LPTSTR HYPERLINK lpBuffer);GetTempPath有關(guān)參數(shù)說(shuō)明如下:StrLen = GetTempPath(NAME_LEN, OutPath)其中:OutPath: 是輸出臨時(shí)文件夾名稱的變量,它的初始值為NAME_LEN個(gè)空格,函數(shù)調(diào)用后,就不是空格了,它會(huì)把取得的臨時(shí)文件夾名稱存入此變量。NAME_LEN: 是告訴函數(shù)OutPath變
31、量的長(zhǎng)度。StrLen:是取得的臨時(shí)文件夾名稱的長(zhǎng)度。舉例如下:StrLen = GetTempPath(NAME_LEN, OutPath)調(diào)用后OutPath=“C:DOCUME1LJL8891LOCALS1Temp ”那么,left(OutPath,StrLen )就是準(zhǔn)確的臨時(shí)文件夾名稱了。#include main()char TempBuf100=0;GetTempPath(100, TempBuf); printf(TempPath:%sn, TempBuf);CreateFile The CreateFile function can create a new file or
32、open an existing file. You must specify the file name, creation instructions, and other attributes. When an application creates a new file, the operating system adds it to the specified directory.HANDLE CreateFile(LPCTSTR lpFileName,/ 指向文件名的指針 DWORD dwDesiredAccess,/ 訪問(wèn)模式(寫(xiě) / 讀) DWORD dwShareMode,/
33、共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes,/ 指向安全屬性的指針 DWORD dwCreationDisposition,/ 如何創(chuàng)建 DWORD dwFlagsAndAttributes,/ 文件屬性 HANDLE hTemplateFile/ 用于復(fù)制文件句柄 ); Parametes參數(shù)列表 參數(shù) 類型及說(shuō)明 lpFileName String ,要打開(kāi)的文件的名字 dwDesiredAccess訪問(wèn)模式(寫(xiě) / 讀)Long ,如果為 GENERIC_READ 表示允許對(duì)設(shè)備進(jìn)行讀訪問(wèn);如果為 GENERIC_WRITE 表示允許對(duì)
34、設(shè)備進(jìn)行寫(xiě)訪問(wèn)(可組合使用);如果為零,表示只允許獲取與一個(gè)設(shè)備有關(guān)的信息 dwShareMode Long ,零表示不共享; FILE_SHARE_READ 和 / 或 FILE_SHARE_WRITE 表示允許對(duì)文件進(jìn)行共享訪問(wèn) lpSecurityAttributes SECURITY_ATTRIBUTES ,指向一個(gè) SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針,定義了文件的安全特性(如果操作系統(tǒng)支持的話) BULL指向安全屬性的指針dwCreationDisposition Long ,下述常數(shù)之一: CREATE_NEW 創(chuàng)建文件;如文件存在則會(huì)出錯(cuò) CREATE_ALWAY
35、S 創(chuàng)建文件,會(huì)改寫(xiě)前一個(gè)文件 OPEN_EXISTING 文件必須已經(jīng)存在。由設(shè)備提出要求 OPEN_ALWAYS 如文件不存在則創(chuàng)建它 TRUNCATE_EXISTING 講現(xiàn)有文件縮短為零長(zhǎng)度 dwFlagsAndAttributes文件屬性 Long ,一個(gè)或多個(gè)下述常數(shù) FILE_ATTRIBUTE_ARCHIVE 標(biāo)記歸檔屬性 FILE_ATTRIBUTE_COMPRESSED 將文件標(biāo)記為已壓縮,或者標(biāo)記為文件在目錄中的默認(rèn)壓縮方式 FILE_ATTRIBUTE_NORMAL 默認(rèn)屬性 FILE_ATTRIBUTE_HIDDEN 隱藏文件或目錄 FILE_ATTRIBUTE_RE
36、ADONLY 文件為只讀 FILE_ATTRIBUTE_SYSTEM 文件為系統(tǒng)文件 FILE_FLAG_WRITE_THROUGH 操作系統(tǒng)不得推遲對(duì)文件的寫(xiě)操作 FILE_FLAG_OVERLAPPED 允許對(duì)文件進(jìn)行重疊操作 FILE_FLAG_NO_BUFFERING 禁止對(duì)文件進(jìn)行緩沖處理。文件只能寫(xiě)入磁盤(pán)卷的扇區(qū)塊 FILE_FLAG_RANDOM_ACCESS 針對(duì)隨機(jī)訪問(wèn)對(duì)文件緩沖進(jìn)行優(yōu)化 FILE_FLAG_SEQUENTIAL_SCAN 針對(duì)連續(xù)訪問(wèn)對(duì)文件緩沖進(jìn)行優(yōu)化 FILE_FLAG_DELETE_ON_CLOSE 關(guān)閉了上一次打開(kāi)的句柄后,將文件刪除。特別適合臨時(shí)文件
37、 也可在 Windows NT 下組合使用下述常數(shù)標(biāo)記: SECURITY_ANONYMOUS , SECURITY_IDENTIFICATION , SECURITY_IMPERSONATION , SECURITY_DELEGATION , SECURITY_CONTEXT_TRACKING , SECURITY_EFFECTIVE_ONLY hTemplateFile Long ,如果不為零,則指定一個(gè)文件句柄。新文件將從這個(gè)文件中復(fù)制擴(kuò)展屬性 返回值 如執(zhí)行成功,則返回文件句柄。 INVALID_HANDLE_VALUE 表示出錯(cuò),會(huì)設(shè)置 HYPERLINK /online/apivb
38、/GetLastError.htm GetLastError 。即使函數(shù)成功,但若文件存在,且指定了 CREATE_ALWAYS 或 OPEN_ALWAYS , HYPERLINK /online/apivb/GetLastError.htm GetLastError 也會(huì)設(shè)為 ERROR_ALREADY_EXISTS lpFileNamePointer to a null-terminated string that specifies the name of the object(file, pipe, mailslot, communications resource, disk dev
39、ice, console, or directory) to create or open. 指向一個(gè)空結(jié)尾字符串。該參數(shù)指定了用于創(chuàng)建或打開(kāi)句柄的對(duì)象。 if *lpFileName is a path, there is a default string size limit of MAX_PATH characters, This limit isrelated to how the CreateFile function parses paths. 如果 lpFileName 的對(duì)象是一個(gè)路徑,則有一個(gè)最大字符數(shù)的限制。不能超過(guò)常量 (MAX_PATH). 這個(gè)限制指示了 Create
40、File 函數(shù)如何解析路徑 . dwDesiredAccessSpecifies the type of access to the object. An application can obtain read access, write access,read-write access, or device query access, This parameter can be any combination of the followingvalues 指定對(duì)象的訪問(wèn)方式 , 程序可以獲得讀訪問(wèn)權(quán) , 寫(xiě)訪問(wèn)權(quán) , 讀寫(xiě)訪問(wèn)權(quán)或者是詢問(wèn)設(shè)備 (device query) 訪問(wèn)權(quán) . 這個(gè)參
41、數(shù)可以是下列值的任意組合 Value( 值 )Meaning( 含義 )0Specifies device query access to the object. An application can query deviceattributes without accessing the device. 指定詢問(wèn)訪問(wèn)權(quán) . 程序可以在不直接訪問(wèn)設(shè)備的情況下查詢?cè)O(shè)備的屬性 . GENERIC_READSpecifies read access to the object, Data can be read from the file and the file pointer can be mo
42、ved. Combine with GENERIC_WRITE for read-write access. 指定讀訪問(wèn)權(quán) . 可以從文件中讀取數(shù)據(jù) , 并且移動(dòng)文件指針.可以和 GENERIC_WRITE 組合成為讀寫(xiě)訪問(wèn)權(quán). GENERIC_WRITEspecifies write access to the object. Data can be written to the file and the file pointer can be moved. Combine with GENERIC_READ fro read-write access 指定寫(xiě)訪問(wèn)權(quán). 可以從文件中寫(xiě)入數(shù)據(jù)
43、, 并且移動(dòng)文件指針 . 可以和 GENERIC_READ 組合成為 讀寫(xiě)訪問(wèn)權(quán) . dwShareModeSet of bit flags that specifies how the object can be shared, If dwShareMode is 0, the object cannotbe shared. Subsequent open operations on the object will fail, until the handle is closed. 設(shè)置位標(biāo)志指明對(duì)象如休共享. 如果參數(shù)是 0, 對(duì)象不能夠共享. 后續(xù)的打開(kāi)對(duì)象的操作將會(huì)失敗 , 直到該對(duì)象
44、的句柄關(guān)閉 . To share the object, use a combination of one or more of the following values: 使用一個(gè)或多個(gè)下列值的組合來(lái)共享一個(gè)對(duì)象 .Value( 值 )Meaning( 含義 )FILE_SHARE_DELETEWindowsNT: Subsequent open operations on the object will succeed only if delete access is requested.WINDOWS NT: 后續(xù)的僅僅請(qǐng)求刪除訪問(wèn)權(quán)的打開(kāi)操作將會(huì)成功 . FILE_SHARE_READ
45、Subsequent open operations on the object will successd only if read access is requested. 后續(xù)的僅僅請(qǐng)求讀訪問(wèn)權(quán)的打開(kāi)操作將會(huì)成功 . FILE_SHARE_WRITESubsequent open operations on the object will succeed only if write access is requested. 后續(xù)的僅僅請(qǐng)求寫(xiě)訪問(wèn)權(quán)的打開(kāi)操作將會(huì)成功 . lpSecurityAttributespointer to a SECURITY_ATTRIBUTES structu
46、re that determines whether the returned handle can be inherited by child processes, if lpSecurityAttributes is NULL, the handle cannot be inherited. 指向一個(gè) SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針用于確定如何在子進(jìn)程中繼承這個(gè)句柄 . 如果這個(gè)參數(shù)是 NULL, 則該句柄不可繼承 . dwCreationDispositionSpecifies which action to take on files that exist, and
47、 which action to take when files do not exist.For more information about this parameter, see the remarks section. This parameter must be one of thefollowing values 指定當(dāng)文件存在或者不存在時(shí)如何動(dòng)作。關(guān)于這個(gè)參數(shù)更多的信息,參考批注部分。這個(gè)參數(shù)必須是一個(gè)或多個(gè) 下列值。 VALUE( 值 )Neaning( 含義 )CREATE_NEWCreates a new file. The function fails if the sp
48、ecified file already exists 創(chuàng)建一個(gè)新文件 . 如果該文件已經(jīng)存在函數(shù)則會(huì)失敗 .CREATE_ALWAYSCreates a new file. If the file exsts, the function overwrites the file andclears the existing attributes. 創(chuàng)建一個(gè)新文件 . 如果該文件已經(jīng)存在 , 函數(shù)將覆蓋已存在的文件并清除已存在的文件屬性 OPEN_EXISTINGOpens the file. The function fails if the file does not exist.See t
49、he Remarks section for a discussion of why you should use the OPEN_EXISTING flag if you are using the CreateFile function for devices,including the console. 打開(kāi)一個(gè)文件 , 如果文件不存在函數(shù)將會(huì)失敗 . 如查你使用 CreateFile 函數(shù)為設(shè)備裝載控制臺(tái) . 請(qǐng)查看批注中的 為什么使用 OPEN_EXISTING 標(biāo)志 的部分 .OPEN_ALWAYSOpens the file, if it exsts. If the file
50、does not exist, the function createsthe file as if dwCreationDisposition were CREATE_NEW. 如果文件存在 , 打開(kāi)文件 . 如果文件不存在 , 并且參數(shù)中有 CREATE_NEW 標(biāo)志 , 則創(chuàng)建文件 . TRUNCATE_EXISTINGOpens the file. Once opened, the file is truncated so that its size is zero bytes The calling process must open the file with at least G
51、ENERIC_WRITE access.The function fails if the file does not exist. 打開(kāi)一個(gè)文件 , 每次打開(kāi) , 文件將被截至 0 字節(jié) . 調(diào)用進(jìn)程必須用 GENERIC_WRITE 訪問(wèn)模式打 開(kāi)文件 . 如果文件不存在則函數(shù)就會(huì)失敗 . dwFlagsAndatributesSpecifies the file attributes and flags for the file. 為文件指定屬性和標(biāo)志位 Any combination of the following attributes is acceptable for the d
52、wFlagsAndAttributes parameter,except all other file attributes override FILE_ATTRIBUTE_NORMAL. 該參數(shù)可以接收下列屬性的任意組合 . 除非其它所有的文件屬性忽略 FILE_ATTRIBUTE_NORMAL.Attribute( 屬性 )Meaning( 標(biāo)志 )FILE_ATTRIBUTE_ARCHIVEThe ifle should be archived. Application use this attribute to mark files for backup or removal. 文件將
53、被存檔 , 程序使用此屬性來(lái)標(biāo)志文件去備份或移除 FILE_ATTRIBUTE_HIDDENThe file is hidden. It is not to be included in an ordinary directory listing. 文件被隱藏 , 它不會(huì)在一般文件夾列表中被裝載 . FILE_ATTRIBUTE_NORMALThe file has no other attributes set. This attribute is valid only if used alone 文件沒(méi)有被設(shè)置任何屬性 . FILE_ATTRIBUTE_OFFLINEThe data of
54、 the file is not immediately available. Indicates that the file data has been physically moved to offline storage. 文件的數(shù)據(jù)沒(méi)有被立即用到。指出正在脫機(jī)使用該文件。 FILE_ATTRIBUTE_READONLYThe file is read only.Applications can read the file but cannot writeto it or delete it 這個(gè)文件只可讀取 . 程序可以讀文件 , 但不可以在上面寫(xiě)入內(nèi)容 , 也不可刪除 . FILE_
55、ATTRIBUTE_SYSTEMThe file is part of or is used exclusively by the operation system. 文件是系統(tǒng)的一部分 , 或是系統(tǒng)專用的 . FILE_ATTRIBUTE_TEMPORARYThe file is being used for temporary storage. File systems attemptto keep all of the data in memory for quicker access rather than flushing the data back to mass storage.
56、 A temporary file should be deleted by the application as soon as it is no longer needed. 文件被使用后,文件系統(tǒng)將努力為(文件的)所有數(shù)據(jù)的迅迅訪問(wèn)保持一塊 內(nèi)存。臨時(shí)文件應(yīng)當(dāng)在程序不用時(shí)及時(shí)刪除。 Any combination of the following flags is acceptable for the dwFlagsAndAttributes parameter.dwFlagAndAttributes 可以接受下列標(biāo)志的任意組合。 FLAG (標(biāo)志) Meaning( 含義 )FILE_
57、FLAG_WRITE_THROUGHInstructs the system to write through any intermediate cache and godirectly to disk. The system can still cache write operations, but cannot lazily flush them. 指示系統(tǒng)通過(guò)快速緩存直接寫(xiě)入磁盤(pán), FILE_FLAG_OVERLAPPEDInstructs the system to initialize the object, so that operations thattake a signifi
58、cant amount of time to process return ERROR_IO_PENDING.When the operation is finished, the specified event is set to the signaled state. 指示系統(tǒng)初始化對(duì)象, 此操作將對(duì)進(jìn)程設(shè)置一個(gè)引用計(jì)數(shù)并返回 ERROR_IO_PENDING. 處理完成后 , 指定對(duì)象將被設(shè)置為信號(hào)狀態(tài) . When you specify FILE_FLAG_OVERLAPPED, the file read and write functionsmust specify an OVE
59、RLAPPED structure. That is, when FILE_FLAG_OVERLAPPEDis specified, an application must perform overlapped parameter(pointingto an OVERLAPPED structure)to the file read and write functions.This flag also enables more than one operation to be performedsimultaneously with the handle(a simultaneous read
60、 and write operation,for example). 當(dāng)你指定 FILE_FLAG_OVERLAPPED 時(shí), 讀寫(xiě)文件的函數(shù)必須指定一個(gè) OVERLAPPED 結(jié)構(gòu) . 并且 . 當(dāng) FILE_FLAG_OVERLAPPED 被指定 , 程序必須執(zhí)行重疊參數(shù) ( 指向 OVERLAPPED結(jié)構(gòu) ) 去進(jìn)行文件的讀寫(xiě) .這個(gè)標(biāo)志也可以有超過(guò)一個(gè)操作去執(zhí)行 . FILE_FLAG_NO_BUFFERINGInstructs the system to open the file with no intermediate buffering orcaching.When combi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 15561-2024數(shù)字指示軌道衡
- 農(nóng)業(yè)副產(chǎn)品高值化利用趨勢(shì)
- 高一化學(xué)教案:專題第二單元第一課時(shí)化學(xué)反應(yīng)中的熱量變化(一)
- 2024高中化學(xué)第四章生命中的基礎(chǔ)有機(jī)化學(xué)物質(zhì)1油脂課時(shí)作業(yè)含解析新人教版選修5
- 2024高中地理課時(shí)作業(yè)8區(qū)域工業(yè)化與城市化-以我國(guó)珠江三角洲地區(qū)為例含解析新人教版必修3
- 2024高中語(yǔ)文第1單元論語(yǔ)蚜第1課天下有道丘不與易也練習(xí)含解析新人教版選修先秦諸子蚜
- 2024高中語(yǔ)文第五單元散而不亂氣脈中貫文與可筼筜谷偃竹記訓(xùn)練含解析新人教版選修中國(guó)古代詩(shī)歌散文欣賞
- 2024高中語(yǔ)文精讀課文一第2課3魯迅:深刻與偉大的另一面是平和三課堂練習(xí)含解析新人教版選修中外傳記蚜
- 2024高考地理一輪復(fù)習(xí)第七單元自然環(huán)境對(duì)人類活動(dòng)的影響練習(xí)含解析
- 2025新人教版英語(yǔ)七年級(jí)下不規(guī)則動(dòng)詞表
- 美的洗衣機(jī)MG60-N1003E使用說(shuō)明書(shū)
- 人教版六年級(jí)語(yǔ)文上冊(cè)期末考試卷(完整版)
- 2023-2024學(xué)年第一學(xué)期期末質(zhì)量檢測(cè)九年級(jí)物理試題(帶答案)
- 建筑幕墻物理性能分級(jí)
- 河南省2024年道法中考熱點(diǎn)備考重難專題:發(fā)展航天事業(yè)建設(shè)航天強(qiáng)國(guó)(課件)
- 臨床診療規(guī)范與操作指南制度
- DLT 5285-2018 輸變電工程架空導(dǎo)線(800mm以下)及地線液壓壓接工藝規(guī)程
- 新員工入職培訓(xùn)測(cè)試題附有答案
- 勞動(dòng)合同續(xù)簽意見(jiàn)單
- 大學(xué)生國(guó)家安全教育意義
- 2024年保育員(初級(jí))培訓(xùn)計(jì)劃和教學(xué)大綱-(目錄版)
評(píng)論
0/150
提交評(píng)論