你必须知道的几个常用函数_第1页
你必须知道的几个常用函数_第2页
你必须知道的几个常用函数_第3页
你必须知道的几个常用函数_第4页
你必须知道的几个常用函数_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常用函数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;参数说明STARTUPINFO结构该结构用于指定新进程的主窗口特性 DWORD cb;

3、 /包含STARTUPINFO结构中的字节数.应用程序必须将cb初始化为sizeof(STARTUPINFO) PSTR lpReserved; /保留。必须初始化为N U L L PSTR lpDesktop; /用于标识启动应用程序所在的桌面的名字。如果该桌面存在,新进程便与指定的桌面相关联。 如果桌面不存在,便创建一个带有默认属性的桌面,并使用为新进程指定的名字。 如果lpDesktop是NULL(这是最常见的情况),那么该进程将与当前桌面相关联 PSTR lpTitle; /用于设定控制台窗口的名称。如果l p Ti t l e 是N U L L ,则可执行文件的名字将用作窗口名 DW

4、ORD dwX; /用于设定应用程序窗口在屏幕上应该放置的位置的x 和y 坐标(以像素为单位)。 DWORD dwY; 只有当子进程用CW_USEDEFAULT作为CreateWindow的x参数来创建它的第一个重叠窗口时, 才使用这两个坐标。若是创建控制台窗口的应用程序,这些成员用于指明控制台窗口的左上角 DWORD dwXSize; /用于设定应用程序窗口的宽度和长度(以像素为单位)只有dwYsize DWORD dwYSize; 当子进程将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参数来创建它的第一个重叠窗口

5、时,才使用这些值。 若是创建控制台窗口的应用程序,这些成员将用于指明控制台窗口的宽度 DWORD dwXCountChars; /用于设定子应用程序的控制台窗口的宽度和高度(以字符为单位) DWORD dwYCountChars; DWORD dwFillAttribute; /用于设定子应用程序的控制台窗口使用的文本和背景颜色 DWORD dwFlags; /请参见下一段和表4 - 7 的说明 WORD wShowWindow; /用于设定如果子应用程序初次调用的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、参数传递时,该应用程序的第一个重叠窗口应该如何出现。 本成员可以是通常用于Show Wi n d o w 函数的任何一个S W _ *标识符 WORD cbReserved2; /保留。必须被初始化为0 PBYTE lpReserved2; /保留。必须被初始化为N U L L HANDLE hStdInput; /用于设定供控制台输入和输出用的缓存的句柄。 按照默认设置,h S t d I n p u t 用于标识键盘缓存, h S t d O u t p u t 和h S t d E r r o r用于标识控制台窗口的缓存 HANDLE hStdOutput; HANDLE hStdErr

7、or; 当Wi n d o w s 创建新进程时,它将使用该结构的有关成员。大多数应用程序将要求生成的应用程序仅仅使用默认值。至少应该将该结构中的所有成员初始化为零,然后将c b 成员设置为该结构的大小: STARTUPINFO si = sizeof(si) ; CreateProcess(.,&si,.);CreateProcessWIN32API函数CreateProcess用来创建一个新的进程和它的 HYPERLINK /view/536183.htm t _blank 主线程,这个新进程运行指定的 HYPERLINK /view/159830.htm t _blank 可执行文件。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); 参数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结尾的、用来指定可执行模块的字符串。 这个字符串可以是可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于 lpCommandLine 参数的最前面并由空格符与后面的字符分开。 这个被指定的模块可以是一个Win32应用程序。如果适当的

11、子系统在当前计算机上可用的话,它也可以是其他类型的模块(如MS-DOS 或 OS/2)。在Windows NT中,如果可执行模块是一个16位的应用程序,那么这个参数应该被设置为NULL并且应该在lpCommandLine参数中指定可执行模块的名称。16位的应用程序是以DOS虚拟机或Win32上的Windows(WOW) 为进程的方式运行。 2.lpCommandLine:指向一个以NULL结尾的字符串,该字符串指定要执行的命令行。 这个参数可以为空,那么函数将使用lpApplicationName参数指定的字符串当做要运行的程序的命令行。 如果lpApplicationName和lpComma

12、ndLine参数都不为空,那么lpApplicationName参数指定将要被运行的模块,lpCommandLine参数指定将被运行的模块的命令行。新运行的进程可以使用GetCommandLine函数获得整个命令行。C语言程序可以使用argc和argv参数。 如果lpApplicationName参数为空,那么这个字符串中的第一个被空格分隔的要素 指定可执行模块名。如果文件名不包含扩展名,那么.exe将被假定为默认的扩展名。如果文件名以一个点(.)结尾且没有扩展名,或文件名中包含路径,.exe将不会被加到后面。如果文件名中不包含路径,Windows将按照如下顺序寻找这个可执行文件: 1).当前

13、应用程序的目录。 2).父进程的目录。 3).Windows 95:Windows系统目录,可以使用GetSystemDirectory函数获得。 Windows NT:32位Windows系统目录。可以使用GetSystemDirectory函数获得,目录名是SYSTEM32。 4).在Windows NT中:16位Windows系统目录。不可以使用Win32函数获得这个目录,但是它会被搜索,目录名是SYSTEM。 5).Windows目录。可以使用GetWindowsDirectory函数获得这个目录。 6).列在PATH环境变量中的目录。 如果被创建的进程是一个以MS-DOS或16位Wi

14、ndows为基础的应用程序,lpCommandLine参数应该是一个以可执行文件的文件名作为第一个要素的绝对路径,因为这样做可以使32位Windows程序工作的很好,这 样设置lpCommandLine参数是最强壮的。 注意:Visual C+ 2005以后的版本中,如果向CreateProcess函数传递一个常量指针作为命令行参数的话,将会发生访问违规错误。原因是系统在1执行该函数时会修改lpCommandLine所指向的字符串(比如解释转义字符等)。因此,在调用此函数前,应该定义一个临时字符数组变量来保存命令行参数,并将这个临时变量作为lpCommandLine参数传递. 传递参数例子:

15、LPTSTR szCmdline = _tcsdup(TEXT(c:test.bat);/用szCmdline做CreateProcess第2参数,VS2008测试通过 3.lpProcessAttributes: 指向一个SECURITY_ATTRIBUTES结构体,这个结构体决定是否返回的句柄可以被子进程继承。如果lpProcessAttributes参数为空(NULL),那么句柄不能被继承。 在Windows NT中:SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员指定了新进程的安全描述符,如果参数为空,新进程使用默认的安全描述符。 在Window

16、s95中:SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员被忽略。 4.lpThreadAttributes: 指向一个SECURITY_ATTRIBUTES结构体,这个结构体决定是否返回的指向线程的句柄可以被子进程继承。如果lpThreadAttributes参数为空(NULL),那么句柄不能被继承。 在Windows NT中,SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员指定了主线程的安全描述符,如果参数为空,主线程使用默认的安全描述符。 在Windows95中:SECURITY_ATTRIBUTES结构的l

17、pSecurityDescriptor成员被忽略。 5.bInheritHandles: 指示新进程是否从调用进程处继承了句柄。 如果参数的值为真,调用进程中的每一个可继承的打开句柄都将被子进程继承。被继承的句柄与原进程拥有完全相同的值和访问权限。 6.dwCreationFlags: 指定附加的、用来控制优先类和进程的创建的标志。以下的创建标志可以以除下面列出的方式外的任何方式组合后指定。 值:CREATE_DEFAULT_ERROR_MODE 含义:新的进程不继承调用进程的错误模式。CreateProcess函数赋予新进程当前的默认错误模式作为替代。应用程序可以调用SetErrorMode

18、函数设置当前的默认错误模式。 这个标志对于那些运行在没有硬件错误环境下的多线程外壳程序是十分有用的。 对于CreateProcess函数,默认的行为是为新进程继承调用者的错误模式。设置这个标志以改变默认的处理方式。 值:CREATE_NEW_CONSOLE 含义:新的进程将使用一个新的控制台,而不是继承父进程的控制台。这个标志不能与DETACHED_PROCESS标志一起使用。 值:CREATE_NEW_PROCESS_GROUP 含义:新进程将使一个进程树的根进程。进程树中的全部进程都是根进程的子进程。新进程树的用户标识符与这个进程的标识符是相同的,由lpProcessInformation

19、参数返回。进程树经常使用GenerateConsoleCtrlEvent函数允许发送CTRL+C或CTRL+BREAK信号到一组控制台进程。 值:CREATE_SEPARATE_WOW_VDM 含义:(只适用于Windows NT)这个标志只有当运行一个16位的 Windows应用程序时才是有效的。如果被设置,新进程将会在一个私有的虚拟DOS机(VDM)中运行。另外,默认情况下所有的16位Windows应 用程序都会在同一个共享的VDM中以线程的方式运行。单独运行一个16位程序的优点是一个应用程序的崩溃只会结束这一个VDM的运行;其他那些在不同 VDM中运行的程序会继续正常的运行。同样的,在不

20、同VDM中运行的16位Windows应用程序拥有不同的输入队列,这意味着如果一个程序暂时失去响 应,在独立的VDM中的应用程序能够继续获得输入。 值:CREATE_SHARED_WOW_VDM 含义:(只适用于Windows NT)这个标志只有当运行一个16位的Windows应用程序时才是有效的。如果WIN.INI中的Windows段的DefaultSeparateVDM选项被设置为真,这个标识使得CreateProcess函数越过这个选项并在共享的虚拟DOS机中运行新进程。 值:CREATE_SUSPENDED 含义:新进程的主线程会以暂停的状态被创建,直到调用ResumeThread函数被

21、调用时才运行。 值:CREATE_UNICODE_ENRONMENT 含义:如果被设置,由lpEnvironment参数指定的环境块使用Unicode字符,如果为空,环境块使用ANSI字符。 值:DEBUG_PROCESS 含义:如果这个标志被设置,调用进程将被当做一个调试程序,并且新进程会被当做被调试的进程。系统把被调试程序发生的所有调试事件通知给调试器。 如果你使用这个标志创建进程,只有调用进程(调用CreateProcess函数的进程)可以调用WaitForDebugEvent函数。 值:DEBUG_ONLY_THIS_PROCESS 含义:如果此标志没有被设置且调用进程正在被调试,新进

22、程将成为调试调用进程的调试器的另一个调试对象。如果调用进程没有被调试,有关调试的行为就不会产生。 值:DETACHED_PROCESS 含义:对于控制台进程,新进程没有访问父进程控制台的权限。新进程可以通过AllocConsole函数自己创建一个新的控制台。这个标志不可以与CREATE_NEW_CONSOLE标志一起使用。 dwCreationFlags参数 还用来控制新进程的优先类,优先类用来决定此进程的线程调度的优先级。如果下面的优先级类标志都没有被指定,那么默认的优先类是NORMAL_PRIORITY_CLASS,除非被创建的进程是IDLE_PRIORITY_CLASS。在这种情况下子进

23、程的默认优先类是IDLE_PRIORITY_CLASS。 可以下面的标志中的一个: 优先级:HIGH_PRIORITY_CLASS 含义:指示这个进程将执行时间临界的任务,所以它必须被立即运行以保证正确。这个优先级的程序 优先于正常优先级或空闲优先级的程序。一个例子是Windows任务列表,为了保证当用户调用时可以立刻响应,放弃了对系统负荷的考虑。确保在使用高优先 级时应该足够谨慎,因为一个高优先级的CPU关联应用程序可以占用几乎全部的CPU可用时间。 优先级:IDLE_PRIORITY_CLASS 含义:指示这个进程的线程只有在系统空闲时才会运行并且可以被任何高优先级的任务打断。例如屏幕保护

24、程序。空闲优先级会被子进程继承。 优先级:NORMAL_PRIORITY_CLASS 含义:指示这个进程没有特殊的任务调度要求。 优先级:REALTIME_PRIORITY_CLASS 含义:指示这个进程拥有可用的最高优先级。一个拥有实时优先级的进程的线程可以打断所有其他进程线程的执行,包括正在执行重要任务的系统进程。例如,一个执行时间稍长一点的实时进程可能导致磁盘缓存不足或鼠标反映迟钝。 7.lpEnvironment: 指向一个新进程的环境块。如果此参数为空,新进程使用调用进程的环境。 一个环境块存在于一个由以NULL结尾的字符串组成的块中,这个块也是以NULL结尾的。每个字符串都是nam

25、e=value的形式。 因为相等标志被当做分隔符,所以它不能被环境变量当做变量名。 与其使用应用程序提供的环境块,不如直接把这个参数设为空,系统驱动器上的当前目录信息不会被自动传递给新创建的进程。对于这个情况的探讨和如何处理,请参见注释一节。 环境块可以包含Unicode或ANSI字符。如果lpEnvironment指向的环境块包 含Unicode字符,那么dwCreationFlags字段的CREATE_UNICODE_ENRONMENT标志将被设置。如果块包含ANSI 字符,该标志将被清空。 请注意一个ANSI环境块是由两个零字节结束的:一个是字符串的结尾,另一个用来结束这个快。一个Uni

26、code环境块是由四个零字节结束的:两个代表字符串结束,另两个用来结束块。 8.lpCurrentDirectory: 指向一个以NULL结尾的字符串,这个字符串用来指定子进程的工作路径。这个字符串必须是一个包含驱动器名的绝对路径。如果这个参数为空,新进程将使用与调用进程相同的驱动器和目录。这个选项是一个需要启动应用程序并指定它们的驱动器和工作目录的外壳程序的主要条件。 9.lpStartupInfo: 指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体。 10.lpProcessInformation: 指向一个用来接收新进程的识别信息的PROCESS_INFORMATIO

27、N结构体。PROCESS_INFORMATION 结构在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息。其结构定义如下。 typedef struct_PROCESS_INFORMATION HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; PROCESS_INFORMATION; 其中成员含义如下。 hProcess:返回新进程的句柄。 hThread:返回主线程的句柄。 dwProcessId:返回一个全局进程标识符。该标识符用于标识一个进程。从进程被 创建到终止,该值始终有效。

28、dwThreadId:返回一个全局线程标识符。该标识符用于标识一个线程。从线程被创 建到终止,该值始终有效。GetSystemDirectory函数原型UINT WINAPI GetSystemDirectory( _out LPTSTR lpBuffer, _in UINT uSize );参数说明1这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作 返回值 Long,装载到lpBuff

29、er缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度 参数表 参数 类型及说明 lpBuffer String,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成“路径”字符串的长度+1。通常至少要为这个缓冲区分配MAX_PATH个字符的长度 nSize Long,lpBuffer字串的最大长度#include main()char buf100=0;LONG ipbuf;ipbuf = GetSystemDirectory(buf,100);printf(path:%sn,buf);缓冲区 = 取空白文本 (260) 长度 = GetSystemDir

30、ectoryA (缓冲区, 260) 返回 (缓冲区)GetTempPathAPI中函数原形为: DWORD WINAPI GetTempPath( _in DWORD HYPERLINK nBufferLength, _out LPTSTR HYPERLINK lpBuffer);GetTempPath有关参数说明如下:StrLen = GetTempPath(NAME_LEN, OutPath)其中:OutPath: 是输出临时文件夹名称的变量,它的初始值为NAME_LEN个空格,函数调用后,就不是空格了,它会把取得的临时文件夹名称存入此变量。NAME_LEN: 是告诉函数OutPath变

31、量的长度。StrLen:是取得的临时文件夹名称的长度。举例如下:StrLen = GetTempPath(NAME_LEN, OutPath)调用后OutPath=“C:DOCUME1LJL8891LOCALS1Temp ”那么,left(OutPath,StrLen )就是准确的临时文件夹名称了。#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,/ 如何创建 DWORD dwFlagsAndAttributes,/ 文件属性 HANDLE hTemplateFile/ 用于复制文件句柄 ); Parametes参数列表 参数 类型及说明 lpFileName String ,要打开的文件的名字 dwDesiredAccess访问模式(写 / 读)Long ,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对

34、设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息 dwShareMode Long ,零表示不共享; FILE_SHARE_READ 和 / 或 FILE_SHARE_WRITE 表示允许对文件进行共享访问 lpSecurityAttributes SECURITY_ATTRIBUTES ,指向一个 SECURITY_ATTRIBUTES 结构的指针,定义了文件的安全特性(如果操作系统支持的话) BULL指向安全属性的指针dwCreationDisposition Long ,下述常数之一: CREATE_NEW 创建文件;如文件存在则会出错 CREATE_ALWAY

35、S 创建文件,会改写前一个文件 OPEN_EXISTING 文件必须已经存在。由设备提出要求 OPEN_ALWAYS 如文件不存在则创建它 TRUNCATE_EXISTING 讲现有文件缩短为零长度 dwFlagsAndAttributes文件属性 Long ,一个或多个下述常数 FILE_ATTRIBUTE_ARCHIVE 标记归档属性 FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式 FILE_ATTRIBUTE_NORMAL 默认属性 FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录 FILE_ATTRIBUTE_RE

36、ADONLY 文件为只读 FILE_ATTRIBUTE_SYSTEM 文件为系统文件 FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作 FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作 FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块 FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化 FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化 FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

37、 也可在 Windows NT 下组合使用下述常数标记: SECURITY_ANONYMOUS , SECURITY_IDENTIFICATION , SECURITY_IMPERSONATION , SECURITY_DELEGATION , SECURITY_CONTEXT_TRACKING , SECURITY_EFFECTIVE_ONLY hTemplateFile Long ,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性 返回值 如执行成功,则返回文件句柄。 INVALID_HANDLE_VALUE 表示出错,会设置 HYPERLINK /online/apivb

38、/GetLastError.htm GetLastError 。即使函数成功,但若文件存在,且指定了 CREATE_ALWAYS 或 OPEN_ALWAYS , HYPERLINK /online/apivb/GetLastError.htm GetLastError 也会设为 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. 指向一个空结尾字符串。该参数指定了用于创建或打开句柄的对象。 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 的对象是一个路径,则有一个最大字符数的限制。不能超过常量 (MAX_PATH). 这个限制指示了 Create

40、File 函数如何解析路径 . 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 指定对象的访问方式 , 程序可以获得读访问权 , 写访问权 , 读写访问权或者是询问设备 (device query) 访问权 . 这个参

41、数可以是下列值的任意组合 Value( 值 )Meaning( 含义 )0Specifies device query access to the object. An application can query deviceattributes without accessing the device. 指定询问访问权 . 程序可以在不直接访问设备的情况下查询设备的属性 . 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. 指定读访问权 . 可以从文件中读取数据 , 并且移动文件指针.可以和 GENERIC_WRITE 组合成为读写访问权. 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 指定写访问权. 可以从文件中写入数据

43、, 并且移动文件指针 . 可以和 GENERIC_READ 组合成为 读写访问权 . 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. 设置位标志指明对象如休共享. 如果参数是 0, 对象不能够共享. 后续的打开对象的操作将会失败 , 直到该对象

44、的句柄关闭 . 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: 后续的仅仅请求删除访问权的打开操作将会成功 . FILE_SHARE_READ

45、Subsequent open operations on the object will successd only if read access is requested. 后续的仅仅请求读访问权的打开操作将会成功 . FILE_SHARE_WRITESubsequent open operations on the object will succeed only if write access is requested. 后续的仅仅请求写访问权的打开操作将会成功 . 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 结构的指针用于确定如何在子进程中继承这个句柄 . 如果这个参数是 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 指定当文件存在或者不存在时如何动作。关于这个参数更多的信息,参考批注部分。这个参数必须是一个或多个 下列值。 VALUE( 值 )Neaning( 含义 )CREATE_NEWCreates a new file. The function fails if the sp

48、ecified file already exists 创建一个新文件 . 如果该文件已经存在函数则会失败 .CREATE_ALWAYSCreates a new file. If the file exsts, the function overwrites the file andclears the existing attributes. 创建一个新文件 . 如果该文件已经存在 , 函数将覆盖已存在的文件并清除已存在的文件属性 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. 打开一个文件 , 如果文件不存在函数将会失败 . 如查你使用 CreateFile 函数为设备装载控制台 . 请查看批注中的 为什么使用 OPEN_EXISTING 标志 的部分 .OPEN_ALWAYSOpens the file, if it exsts. If the file

50、does not exist, the function createsthe file as if dwCreationDisposition were CREATE_NEW. 如果文件存在 , 打开文件 . 如果文件不存在 , 并且参数中有 CREATE_NEW 标志 , 则创建文件 . 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 字节 . 调用进程必须用 GENERIC_WRITE 访问模式打 开文件 . 如果文件不存在则函数就会失败 . dwFlagsAndatributesSpecifies the file attributes and flags for the file. 为文件指定属性和标志位 Any combination of the following attributes is acceptable for the d

52、wFlagsAndAttributes parameter,except all other file attributes override FILE_ATTRIBUTE_NORMAL. 该参数可以接收下列属性的任意组合 . 除非其它所有的文件属性忽略 FILE_ATTRIBUTE_NORMAL.Attribute( 属性 )Meaning( 标志 )FILE_ATTRIBUTE_ARCHIVEThe ifle should be archived. Application use this attribute to mark files for backup or removal. 文件将

53、被存档 , 程序使用此属性来标志文件去备份或移除 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 文件没有被设置任何属性 . FILE_ATTRIBUTE_OFFLINEThe data of

54、 the file is not immediately available. Indicates that the file data has been physically moved to offline storage. 文件的数据没有被立即用到。指出正在脱机使用该文件。 FILE_ATTRIBUTE_READONLYThe file is read only.Applications can read the file but cannot writeto it or delete it 这个文件只可读取 . 程序可以读文件 , 但不可以在上面写入内容 , 也不可删除 . FILE_

55、ATTRIBUTE_SYSTEMThe file is part of or is used exclusively by the operation system. 文件是系统的一部分 , 或是系统专用的 . 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. 文件被使用后,文件系统将努力为(文件的)所有数据的迅迅访问保持一块 内存。临时文件应当在程序不用时及时删除。 Any combination of the following flags is acceptable for the dwFlagsAndAttributes parameter.dwFlagAndAttributes 可以接受下列标志的任意组合。 FLAG (标志) 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. 指示系统通过快速缓存直接写入磁盘, 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. 指示系统初始化对象, 此操作将对进程设置一个引用计数并返回 ERROR_IO_PENDING. 处理完成后 , 指定对象将被设置为信号状态 . 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). 当你指定 FILE_FLAG_OVERLAPPED 时, 读写文件的函数必须指定一个 OVERLAPPED 结构 . 并且 . 当 FILE_FLAG_OVERLAPPED 被指定 , 程序必须执行重叠参数 ( 指向 OVERLAPPED结构 ) 去进行文件的读写 .这个标志也可以有超过一个操作去执行 . 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论