你必須知道的幾個常用函數(shù)_第1頁
你必須知道的幾個常用函數(shù)_第2頁
你必須知道的幾個常用函數(shù)_第3頁
你必須知道的幾個常用函數(shù)_第4頁
你必須知道的幾個常用函數(shù)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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ù)說明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)識啟動應(yīng)用程序所在的桌面的名字。如果該桌面存在,新進(jìn)程便與指定的桌面相關(guān)聯(lián)。 如果桌面不存在,便創(chuàng)建一個帶有默認(rèn)屬性的桌面,并使用為新進(jìn)程指定的名字。 如果lpDesktop是NULL(這是最常見的情況),那么該進(jìn)程將與當(dāng)前桌面相關(guān)聯(lián) PSTR lpTitle; /用于設(shè)定控制臺窗口的名稱。如果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ù)來創(chuàng)建它的第一個重疊窗口時, 才使用這兩個坐標(biāo)。若是創(chuàng)建控制臺窗口的應(yīng)用程序,這些成員用于指明控制臺窗口的左上角 DWORD dwXSize; /用于設(shè)定應(yī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ù)來創(chuàng)建它的第一個重疊窗口

5、時,才使用這些值。 若是創(chuàng)建控制臺窗口的應(yīng)用程序,這些成員將用于指明控制臺窗口的寬度 DWORD dwXCountChars; /用于設(shè)定子應(yīng)用程序的控制臺窗口的寬度和高度(以字符為單位) DWORD dwYCountChars; DWORD dwFillAttribute; /用于設(shè)定子應(yīng)用程序的控制臺窗口使用的文本和背景顏色 DWORD dwFlags; /請參見下一段和表4 - 7 的說明 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ù)傳遞時,該應(yīng)用程序的第一個重疊窗口應(yīng)該如何出現(xiàn)。 本成員可以是通常用于Show Wi n d o w 函數(shù)的任何一個S W _ *標(biāo)識符 WORD cbReserved2; /保留。必須被初始化為0 PBYTE lpReserved2; /保留。必須被初始化為N U L L HANDLE hStdInput; /用于設(shè)定供控制臺輸入和輸出用的緩存的句柄。 按照默認(rèn)設(shè)置,h S t d I n p u t 用于標(biāo)識鍵盤緩存, h S t d O u t p u t 和h S t d E r r o r用于標(biāo)識控制臺窗口的緩存 HANDLE hStdOutput; HANDLE hStdErr

7、or; 當(dāng)Wi n d o w s 創(chuàng)建新進(jìn)程時,它將使用該結(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用來創(chuàng)建一個新的進(jìn)程和它的 HYPERLINK /view/536183.htm t _blank 主線程,這個新進(jì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: 指向一個NULL結(jié)尾的、用來指定可執(zhí)行模塊的字符串。 這個字符串可以是可執(zhí)行模塊的絕對路徑,也可以是相對路徑,在后一種情況下,函數(shù)使用當(dāng)前驅(qū)動器和目錄建立可執(zhí)行模塊的路徑。這個參數(shù)可以被設(shè)為NULL,在這種情況下,可執(zhí)行模塊的名字必須處于 lpCommandLine 參數(shù)的最前面并由空格符與后面的字符分開。 這個被指定的模塊可以是一個Win32應(yīng)用程序。如果適當(dāng)?shù)?/p>

11、子系統(tǒng)在當(dāng)前計算機上可用的話,它也可以是其他類型的模塊(如MS-DOS 或 OS/2)。在Windows NT中,如果可執(zhí)行模塊是一個16位的應(yīng)用程序,那么這個參數(shù)應(yīng)該被設(shè)置為NULL并且應(yīng)該在lpCommandLine參數(shù)中指定可執(zhí)行模塊的名稱。16位的應(yīng)用程序是以DOS虛擬機或Win32上的Windows(WOW) 為進(jìn)程的方式運行。 2.lpCommandLine:指向一個以NULL結(jié)尾的字符串,該字符串指定要執(zhí)行的命令行。 這個參數(shù)可以為空,那么函數(shù)將使用lpApplicationName參數(shù)指定的字符串當(dāng)做要運行的程序的命令行。 如果lpApplicationName和lpComma

12、ndLine參數(shù)都不為空,那么lpApplicationName參數(shù)指定將要被運行的模塊,lpCommandLine參數(shù)指定將被運行的模塊的命令行。新運行的進(jìn)程可以使用GetCommandLine函數(shù)獲得整個命令行。C語言程序可以使用argc和argv參數(shù)。 如果lpApplicationName參數(shù)為空,那么這個字符串中的第一個被空格分隔的要素 指定可執(zhí)行模塊名。如果文件名不包含擴展名,那么.exe將被假定為默認(rèn)的擴展名。如果文件名以一個點(.)結(jié)尾且沒有擴展名,或文件名中包含路徑,.exe將不會被加到后面。如果文件名中不包含路徑,Windows將按照如下順序?qū)ふ疫@個可執(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ù)獲得這個目錄,但是它會被搜索,目錄名是SYSTEM。 5).Windows目錄??梢允褂肎etWindowsDirectory函數(shù)獲得這個目錄。 6).列在PATH環(huán)境變量中的目錄。 如果被創(chuàng)建的進(jìn)程是一個以MS-DOS或16位Wi

14、ndows為基礎(chǔ)的應(yīng)用程序,lpCommandLine參數(shù)應(yīng)該是一個以可執(zhí)行文件的文件名作為第一個要素的絕對路徑,因為這樣做可以使32位Windows程序工作的很好,這 樣設(shè)置lpCommandLine參數(shù)是最強壯的。 注意:Visual C+ 2005以后的版本中,如果向CreateProcess函數(shù)傳遞一個常量指針作為命令行參數(shù)的話,將會發(fā)生訪問違規(guī)錯誤。原因是系統(tǒng)在1執(zhí)行該函數(shù)時會修改lpCommandLine所指向的字符串(比如解釋轉(zhuǎn)義字符等)。因此,在調(diào)用此函數(shù)前,應(yīng)該定義一個臨時字符數(shù)組變量來保存命令行參數(shù),并將這個臨時變量作為lpCommandLine參數(shù)傳遞. 傳遞參數(shù)例子:

15、LPTSTR szCmdline = _tcsdup(TEXT(c:test.bat);/用szCmdline做CreateProcess第2參數(shù),VS2008測試通過 3.lpProcessAttributes: 指向一個SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個結(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: 指向一個SECURITY_ATTRIBUTES結(jié)構(gòu)體,這個結(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)程中的每一個可繼承的打開句柄都將被子進(jìn)程繼承。被繼承的句柄與原進(jìn)程擁有完全相同的值和訪問權(quán)限。 6.dwCreationFlags: 指定附加的、用來控制優(yōu)先類和進(jìn)程的創(chuàng)建的標(biāo)志。以下的創(chuàng)建標(biāo)志可以以除下面列出的方式外的任何方式組合后指定。 值:CREATE_DEFAULT_ERROR_MODE 含義:新的進(jìn)程不繼承調(diào)用進(jìn)程的錯誤模式。CreateProcess函數(shù)賦予新進(jìn)程當(dāng)前的默認(rèn)錯誤模式作為替代。應(yīng)用程序可以調(diào)用SetErrorMode

18、函數(shù)設(shè)置當(dāng)前的默認(rèn)錯誤模式。 這個標(biāo)志對于那些運行在沒有硬件錯誤環(huán)境下的多線程外殼程序是十分有用的。 對于CreateProcess函數(shù),默認(rèn)的行為是為新進(jìn)程繼承調(diào)用者的錯誤模式。設(shè)置這個標(biāo)志以改變默認(rèn)的處理方式。 值:CREATE_NEW_CONSOLE 含義:新的進(jìn)程將使用一個新的控制臺,而不是繼承父進(jìn)程的控制臺。這個標(biāo)志不能與DETACHED_PROCESS標(biāo)志一起使用。 值:CREATE_NEW_PROCESS_GROUP 含義:新進(jìn)程將使一個進(jìn)程樹的根進(jìn)程。進(jìn)程樹中的全部進(jìn)程都是根進(jìn)程的子進(jìn)程。新進(jìn)程樹的用戶標(biāo)識符與這個進(jìn)程的標(biāo)識符是相同的,由lpProcessInformation

19、參數(shù)返回。進(jìn)程樹經(jīng)常使用GenerateConsoleCtrlEvent函數(shù)允許發(fā)送CTRL+C或CTRL+BREAK信號到一組控制臺進(jìn)程。 值:CREATE_SEPARATE_WOW_VDM 含義:(只適用于Windows NT)這個標(biāo)志只有當(dāng)運行一個16位的 Windows應(yīng)用程序時才是有效的。如果被設(shè)置,新進(jìn)程將會在一個私有的虛擬DOS機(VDM)中運行。另外,默認(rèn)情況下所有的16位Windows應(yīng) 用程序都會在同一個共享的VDM中以線程的方式運行。單獨運行一個16位程序的優(yōu)點是一個應(yīng)用程序的崩潰只會結(jié)束這一個VDM的運行;其他那些在不同 VDM中運行的程序會繼續(xù)正常的運行。同樣的,在不

20、同VDM中運行的16位Windows應(yīng)用程序擁有不同的輸入隊列,這意味著如果一個程序暫時失去響 應(yīng),在獨立的VDM中的應(yīng)用程序能夠繼續(xù)獲得輸入。 值:CREATE_SHARED_WOW_VDM 含義:(只適用于Windows NT)這個標(biāo)志只有當(dāng)運行一個16位的Windows應(yīng)用程序時才是有效的。如果WIN.INI中的Windows段的DefaultSeparateVDM選項被設(shè)置為真,這個標(biāo)識使得CreateProcess函數(shù)越過這個選項并在共享的虛擬DOS機中運行新進(jìn)程。 值:CREATE_SUSPENDED 含義:新進(jìn)程的主線程會以暫停的狀態(tài)被創(chuàng)建,直到調(diào)用ResumeThread函數(shù)被

21、調(diào)用時才運行。 值:CREATE_UNICODE_ENRONMENT 含義:如果被設(shè)置,由lpEnvironment參數(shù)指定的環(huán)境塊使用Unicode字符,如果為空,環(huán)境塊使用ANSI字符。 值:DEBUG_PROCESS 含義:如果這個標(biāo)志被設(shè)置,調(diào)用進(jìn)程將被當(dāng)做一個調(diào)試程序,并且新進(jìn)程會被當(dāng)做被調(diào)試的進(jìn)程。系統(tǒng)把被調(diào)試程序發(fā)生的所有調(diào)試事件通知給調(diào)試器。 如果你使用這個標(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)志沒有被設(shè)置且調(diào)用進(jìn)程正在被調(diào)試,新進(jìn)

22、程將成為調(diào)試調(diào)用進(jìn)程的調(diào)試器的另一個調(diào)試對象。如果調(diào)用進(jìn)程沒有被調(diào)試,有關(guān)調(diào)試的行為就不會產(chǎn)生。 值:DETACHED_PROCESS 含義:對于控制臺進(jìn)程,新進(jìn)程沒有訪問父進(jìn)程控制臺的權(quán)限。新進(jìn)程可以通過AllocConsole函數(shù)自己創(chuàng)建一個新的控制臺。這個標(biāo)志不可以與CREATE_NEW_CONSOLE標(biāo)志一起使用。 dwCreationFlags參數(shù) 還用來控制新進(jìn)程的優(yōu)先類,優(yōu)先類用來決定此進(jìn)程的線程調(diào)度的優(yōu)先級。如果下面的優(yōu)先級類標(biāo)志都沒有被指定,那么默認(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)志中的一個: 優(yōu)先級:HIGH_PRIORITY_CLASS 含義:指示這個進(jìn)程將執(zhí)行時間臨界的任務(wù),所以它必須被立即運行以保證正確。這個優(yōu)先級的程序 優(yōu)先于正常優(yōu)先級或空閑優(yōu)先級的程序。一個例子是Windows任務(wù)列表,為了保證當(dāng)用戶調(diào)用時可以立刻響應(yīng),放棄了對系統(tǒng)負(fù)荷的考慮。確保在使用高優(yōu)先 級時應(yīng)該足夠謹(jǐn)慎,因為一個高優(yōu)先級的CPU關(guān)聯(lián)應(yīng)用程序可以占用幾乎全部的CPU可用時間。 優(yōu)先級:IDLE_PRIORITY_CLASS 含義:指示這個進(jìn)程的線程只有在系統(tǒng)空閑時才會運行并且可以被任何高優(yōu)先級的任務(wù)打斷。例如屏幕保護(hù)

24、程序??臻e優(yōu)先級會被子進(jìn)程繼承。 優(yōu)先級:NORMAL_PRIORITY_CLASS 含義:指示這個進(jìn)程沒有特殊的任務(wù)調(diào)度要求。 優(yōu)先級:REALTIME_PRIORITY_CLASS 含義:指示這個進(jìn)程擁有可用的最高優(yōu)先級。一個擁有實時優(yōu)先級的進(jìn)程的線程可以打斷所有其他進(jìn)程線程的執(zhí)行,包括正在執(zhí)行重要任務(wù)的系統(tǒng)進(jìn)程。例如,一個執(zhí)行時間稍長一點的實時進(jìn)程可能導(dǎo)致磁盤緩存不足或鼠標(biāo)反映遲鈍。 7.lpEnvironment: 指向一個新進(jìn)程的環(huán)境塊。如果此參數(shù)為空,新進(jìn)程使用調(diào)用進(jìn)程的環(huán)境。 一個環(huán)境塊存在于一個由以NULL結(jié)尾的字符串組成的塊中,這個塊也是以NULL結(jié)尾的。每個字符串都是nam

25、e=value的形式。 因為相等標(biāo)志被當(dāng)做分隔符,所以它不能被環(huán)境變量當(dāng)做變量名。 與其使用應(yīng)用程序提供的環(huán)境塊,不如直接把這個參數(shù)設(shè)為空,系統(tǒng)驅(qū)動器上的當(dāng)前目錄信息不會被自動傳遞給新創(chuàng)建的進(jìn)程。對于這個情況的探討和如何處理,請參見注釋一節(jié)。 環(huán)境塊可以包含Unicode或ANSI字符。如果lpEnvironment指向的環(huán)境塊包 含Unicode字符,那么dwCreationFlags字段的CREATE_UNICODE_ENRONMENT標(biāo)志將被設(shè)置。如果塊包含ANSI 字符,該標(biāo)志將被清空。 請注意一個ANSI環(huán)境塊是由兩個零字節(jié)結(jié)束的:一個是字符串的結(jié)尾,另一個用來結(jié)束這個快。一個Uni

26、code環(huán)境塊是由四個零字節(jié)結(jié)束的:兩個代表字符串結(jié)束,另兩個用來結(jié)束塊。 8.lpCurrentDirectory: 指向一個以NULL結(jié)尾的字符串,這個字符串用來指定子進(jìn)程的工作路徑。這個字符串必須是一個包含驅(qū)動器名的絕對路徑。如果這個參數(shù)為空,新進(jìn)程將使用與調(diào)用進(jìn)程相同的驅(qū)動器和目錄。這個選項是一個需要啟動應(yīng)用程序并指定它們的驅(qū)動器和工作目錄的外殼程序的主要條件。 9.lpStartupInfo: 指向一個用于決定新進(jìn)程的主窗體如何顯示的STARTUPINFO結(jié)構(gòu)體。 10.lpProcessInformation: 指向一個用來接收新進(jìn)程的識別信息的PROCESS_INFORMATIO

27、N結(jié)構(gòu)體。PROCESS_INFORMATION 結(jié)構(gòu)在創(chuàng)建進(jìn)程時相關(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:返回一個全局進(jìn)程標(biāo)識符。該標(biāo)識符用于標(biāo)識一個進(jìn)程。從進(jìn)程被 創(chuàng)建到終止,該值始終有效。

28、dwThreadId:返回一個全局線程標(biāo)識符。該標(biāo)識符用于標(biāo)識一個線程。從線程被創(chuàng) 建到終止,該值始終有效。GetSystemDirectory函數(shù)原型UINT WINAPI GetSystemDirectory( _out LPTSTR lpBuffer, _in UINT uSize );參數(shù)說明1這個函數(shù)能取得Windows系統(tǒng)目錄(System目錄)的完整路徑名。在這個目錄中,包含了所有必要的系統(tǒng)文件。根據(jù)微軟的標(biāo)準(zhǔn),其他定制控件和一些共享組件也可放到這個目錄。通常應(yīng)避免在這個目錄里創(chuàng)建文件。在網(wǎng)絡(luò)環(huán)境中,往往需要管理員權(quán)限才可對這個目錄進(jìn)行寫操作 返回值 Long,裝載到lpBuff

29、er緩沖區(qū)的字符數(shù)量。如lpBuffer不夠大,不能容下文件名,則返回要求的緩沖區(qū)長度 參數(shù)表 參數(shù) 類型及說明 lpBuffer String,用于裝載系統(tǒng)目錄路徑名的一個字串緩沖區(qū)。它應(yīng)事先初始化成“路徑”字符串的長度+1。通常至少要為這個緩沖區(qū)分配MAX_PATH個字符的長度 nSize Long,lpBuffer字串的最大長度#include main()char buf100=0;LONG ipbuf;ipbuf = GetSystemDirectory(buf,100);printf(path:%sn,buf);緩沖區(qū) = 取空白文本 (260) 長度 = GetSystemDir

30、ectoryA (緩沖區(qū), 260) 返回 (緩沖區(qū))GetTempPathAPI中函數(shù)原形為: DWORD WINAPI GetTempPath( _in DWORD HYPERLINK nBufferLength, _out LPTSTR HYPERLINK lpBuffer);GetTempPath有關(guān)參數(shù)說明如下:StrLen = GetTempPath(NAME_LEN, OutPath)其中:OutPath: 是輸出臨時文件夾名稱的變量,它的初始值為NAME_LEN個空格,函數(shù)調(diào)用后,就不是空格了,它會把取得的臨時文件夾名稱存入此變量。NAME_LEN: 是告訴函數(shù)OutPath變

31、量的長度。StrLen:是取得的臨時文件夾名稱的長度。舉例如下:StrLen = GetTempPath(NAME_LEN, OutPath)調(diào)用后OutPath=“C:DOCUME1LJL8891LOCALS1Temp ”那么,left(OutPath,StrLen )就是準(zhǔn)確的臨時文件夾名稱了。#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,/ 訪問模式(寫 / 讀) DWORD dwShareMode,/

33、共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes,/ 指向安全屬性的指針 DWORD dwCreationDisposition,/ 如何創(chuàng)建 DWORD dwFlagsAndAttributes,/ 文件屬性 HANDLE hTemplateFile/ 用于復(fù)制文件句柄 ); Parametes參數(shù)列表 參數(shù) 類型及說明 lpFileName String ,要打開的文件的名字 dwDesiredAccess訪問模式(寫 / 讀)Long ,如果為 GENERIC_READ 表示允許對設(shè)備進(jìn)行讀訪問;如果為 GENERIC_WRITE 表示允許對

34、設(shè)備進(jìn)行寫訪問(可組合使用);如果為零,表示只允許獲取與一個設(shè)備有關(guān)的信息 dwShareMode Long ,零表示不共享; FILE_SHARE_READ 和 / 或 FILE_SHARE_WRITE 表示允許對文件進(jìn)行共享訪問 lpSecurityAttributes SECURITY_ATTRIBUTES ,指向一個 SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針,定義了文件的安全特性(如果操作系統(tǒng)支持的話) BULL指向安全屬性的指針dwCreationDisposition Long ,下述常數(shù)之一: CREATE_NEW 創(chuàng)建文件;如文件存在則會出錯 CREATE_ALWAY

35、S 創(chuàng)建文件,會改寫前一個文件 OPEN_EXISTING 文件必須已經(jīng)存在。由設(shè)備提出要求 OPEN_ALWAYS 如文件不存在則創(chuàng)建它 TRUNCATE_EXISTING 講現(xiàn)有文件縮短為零長度 dwFlagsAndAttributes文件屬性 Long ,一個或多個下述常數(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)不得推遲對文件的寫操作 FILE_FLAG_OVERLAPPED 允許對文件進(jìn)行重疊操作 FILE_FLAG_NO_BUFFERING 禁止對文件進(jìn)行緩沖處理。文件只能寫入磁盤卷的扇區(qū)塊 FILE_FLAG_RANDOM_ACCESS 針對隨機訪問對文件緩沖進(jìn)行優(yōu)化 FILE_FLAG_SEQUENTIAL_SCAN 針對連續(xù)訪問對文件緩沖進(jìn)行優(yōu)化 FILE_FLAG_DELETE_ON_CLOSE 關(guān)閉了上一次打開的句柄后,將文件刪除。特別適合臨時文件

37、 也可在 Windows NT 下組合使用下述常數(shù)標(biāo)記: SECURITY_ANONYMOUS , SECURITY_IDENTIFICATION , SECURITY_IMPERSONATION , SECURITY_DELEGATION , SECURITY_CONTEXT_TRACKING , SECURITY_EFFECTIVE_ONLY hTemplateFile Long ,如果不為零,則指定一個文件句柄。新文件將從這個文件中復(fù)制擴展屬性 返回值 如執(zhí)行成功,則返回文件句柄。 INVALID_HANDLE_VALUE 表示出錯,會設(shè)置 HYPERLINK /online/apivb

38、/GetLastError.htm GetLastError 。即使函數(shù)成功,但若文件存在,且指定了 CREATE_ALWAYS 或 OPEN_ALWAYS , HYPERLINK /online/apivb/GetLastError.htm GetLastError 也會設(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. 指向一個空結(jié)尾字符串。該參數(shù)指定了用于創(chuàng)建或打開句柄的對象。 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 的對象是一個路徑,則有一個最大字符數(shù)的限制。不能超過常量 (MAX_PATH). 這個限制指示了 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 指定對象的訪問方式 , 程序可以獲得讀訪問權(quán) , 寫訪問權(quán) , 讀寫訪問權(quán)或者是詢問設(shè)備 (device query) 訪問權(quán) . 這個參

41、數(shù)可以是下列值的任意組合 Value( 值 )Meaning( 含義 )0Specifies device query access to the object. An application can query deviceattributes without accessing the device. 指定詢問訪問權(quán) . 程序可以在不直接訪問設(shè)備的情況下查詢設(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. 指定讀訪問權(quán) . 可以從文件中讀取數(shù)據(jù) , 并且移動文件指針.可以和 GENERIC_WRITE 組合成為讀寫訪問權(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 指定寫訪問權(quán). 可以從文件中寫入數(shù)據(jù)

43、, 并且移動文件指針 . 可以和 GENERIC_READ 組合成為 讀寫訪問權(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)志指明對象如休共享. 如果參數(shù)是 0, 對象不能夠共享. 后續(xù)的打開對象的操作將會失敗 , 直到該對象

44、的句柄關(guān)閉 . To share the object, use a combination of one or more of the following values: 使用一個或多個下列值的組合來共享一個對象 .Value( 值 )Meaning( 含義 )FILE_SHARE_DELETEWindowsNT: Subsequent open operations on the object will succeed only if delete access is requested.WINDOWS NT: 后續(xù)的僅僅請求刪除訪問權(quán)的打開操作將會成功 . FILE_SHARE_READ

45、Subsequent open operations on the object will successd only if read access is requested. 后續(xù)的僅僅請求讀訪問權(quán)的打開操作將會成功 . FILE_SHARE_WRITESubsequent open operations on the object will succeed only if write access is requested. 后續(xù)的僅僅請求寫訪問權(quán)的打開操作將會成功 . 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. 指向一個 SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針用于確定如何在子進(jìn)程中繼承這個句柄 . 如果這個參數(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)文件存在或者不存在時如何動作。關(guān)于這個參數(shù)更多的信息,參考批注部分。這個參數(shù)必須是一個或多個 下列值。 VALUE( 值 )Neaning( 含義 )CREATE_NEWCreates a new file. The function fails if the sp

48、ecified file already exists 創(chuàng)建一個新文件 . 如果該文件已經(jīng)存在函數(shù)則會失敗 .CREATE_ALWAYSCreates a new file. If the file exsts, the function overwrites the file andclears the existing attributes. 創(chuàng)建一個新文件 . 如果該文件已經(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. 打開一個文件 , 如果文件不存在函數(shù)將會失敗 . 如查你使用 CreateFile 函數(shù)為設(shè)備裝載控制臺 . 請查看批注中的 為什么使用 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. 如果文件存在 , 打開文件 . 如果文件不存在 , 并且參數(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. 打開一個文件 , 每次打開 , 文件將被截至 0 字節(jié) . 調(diào)用進(jìn)程必須用 GENERIC_WRITE 訪問模式打 開文件 . 如果文件不存在則函數(shù)就會失敗 . 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、被存檔 , 程序使用此屬性來標(biāo)志文件去備份或移除 FILE_ATTRIBUTE_HIDDENThe file is hidden. It is not to be included in an ordinary directory listing. 文件被隱藏 , 它不會在一般文件夾列表中被裝載 . FILE_ATTRIBUTE_NORMALThe file has no other attributes set. This attribute is valid only if used alone 文件沒有被設(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ù)沒有被立即用到。指出正在脫機使用該文件。 FILE_ATTRIBUTE_READONLYThe file is read only.Applications can read the file but cannot writeto it or delete it 這個文件只可讀取 . 程序可以讀文件 , 但不可以在上面寫入內(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ù)的迅迅訪問保持一塊 內(nèi)存。臨時文件應(yīng)當(dāng)在程序不用時及時刪除。 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)通過快速緩存直接寫入磁盤, 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)初始化對象, 此操作將對進(jìn)程設(shè)置一個引用計數(shù)并返回 ERROR_IO_PENDING. 處理完成后 , 指定對象將被設(shè)置為信號狀態(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ù)必須指定一個 OVERLAPPED 結(jié)構(gòu) . 并且 . 當(dāng) FILE_FLAG_OVERLAPPED 被指定 , 程序必須執(zhí)行重疊參數(shù) ( 指向 OVERLAPPED結(jié)構(gòu) ) 去進(jìn)行文件的讀寫 .這個標(biāo)志也可以有超過一個操作去執(zhí)行 . FILE_FLAG_NO_BUFFERINGInstructs the system to open the file with no intermediate buffering orcaching.When combi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論