MSDN Windows API CreateFile 函数 中文.docx
- 文档编号:2930207
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:15
- 大小:24.01KB
MSDN Windows API CreateFile 函数 中文.docx
《MSDN Windows API CreateFile 函数 中文.docx》由会员分享,可在线阅读,更多相关《MSDN Windows API CreateFile 函数 中文.docx(15页珍藏版)》请在冰豆网上搜索。
MSDNWindowsAPICreateFile函数中文
CreateFile
CreateFile函数创建或打开以下的对象并且返回一个可被对象访问的句柄:
●控制台
●通信资源
●目录
●磁盘驱动
●文件
●邮路
●管道
HANDLECreateFile(
LPCTSTRlpFileName,//文件名
DWORDdwDesiredAccess,//访问模式
DWORDdwShareMode,//共享模式
LPSECURITY_ATTRIBUTESlpSecurityAttributes,//SD
DWORDdwCreationDisposition,//如何创建
DWORDdwFlagsAndAttributes,//文件属性
HANDLEhTemplateFile//文件模板句柄
参数
lpFileName
指针指向一个无终止符的字符串指定对象的名称,用以创建或打开。
WindowsNT/2000/XP:
在ANSI(美国信息标准)版本的函数中,名称限制最大字符串长度。
要扩展这个限制以满足大约32000长度的字符串,使用Unicode(统一字符编码标准)版本的函数,并且在路径中预加”\\?
\”。
更多信息请查看文件名规则。
Windows95/98/Me:
这个字符串必须不大于最大字符长度。
dwDesiredAccess
指定对象的访问类型。
一个应用程序可以获得读访问、写访问、读/写访问或驱动查询访问。
这个参量可以被任意的以下参数值组合:
参数值
描述
0
指定驱动查询访问给对象。
应用程序能在不需要驱动访问进行时查询驱动属性。
GENERIC_READ
指定读访问给对象。
数据能够从文件与可被移动的文件指针读入。
与GENERIC_WRITE结合可实现读/写访问。
GENERIC_WRITE
指定写访问给对象。
数据能够被写入文件和可移动的文件指针。
与GENERIC_READ结合可实现读/写访问。
另外,你可以定义以下的访问标志。
参数值
文档
DELETE
标准访问权限
READ_CONTROL
标准访问权限
WRITE_DAC
标准访问权限
WRITE_OWNER
标准访问权限
SYNCHRONIZE
标准访问权限
STANDARD_RIGHTS_REQUIRED
标准访问权限
STANDARD_RIGHTS_READ
标准访问权限
STANDARD_RIGHTS_WRITE
标准访问权限
STANDARD_RIGHTS_EXECUTE
标准访问权限
STANDARD_RIGHTS_ALL
标准访问权限
SPECIFIC_RIGHTS_ALL
访问掩码
ACCESS_SYSTEM_SECURITY
访问掩码
MAXIMUM_ALLOWED
访问掩码
GENERIC_READ
访问掩码
GENERIC_WRITE
访问掩码
GENERIC_EXECUTE
访问掩码
GENERIC_ALL
访问掩码
dwShareMode
指定对象如何被共享。
如果dwShareMode为0,并且创建文件成功,对象不能够被共享和再次打开,直到句柄关闭。
请参考备注部分关于共享冲突的信息。
为了共享对象,使用一个或多个以下参数值的集合。
参数值
描述
FILE_SHARE_DELETE
WindowsNT/2000/XP:
只有当删除访问请求时,随后在对象上的打开操作才能成功。
FILE_SHARE_READ
只有当读访问被请求时,随后在对象上的打开操作才能成功。
FILE_SHARE_WRITE
只有当写访问被请求时,随后在对象上的打开操作才能成功。
lpSecurityAttributes
指针指向一个SECURITYATTRIBUTES结构体决定句柄返回是否能够被子过程继承。
如果lpSecurityAttributes为NULL,那么句柄不能被继承。
WindowsNT/2000/XP:
结构体lpSecurityDescriptor的成员为对象指定一个安全的描述符。
如果lpSecurityAttributes为NULL,那么对象得到一个默认的安全描述符。
目标文件系统必须支持在文件和目录的安全性,以支持这个参数在文件上的影响。
dwCreationDisposition
指定文件的创建方式,并且当文件不存在时指定文件的常见方式。
关于这个参数的跟多信息请参考备注信息。
这个参数必须赋予以下值。
参数值
描述
CREATE_NEW
建立一个新文件,如果文件已经存在,将出现函数错误。
CREATE_ALWAYS
创建一个新文件,如果文件已经存在,将覆盖原来的文件,清除现有的属性,并且用dwFlagsAndAttributes与FILE_ATTRIBUTE_ARCHIVE混合文件属性和已定义标志。
OPEN_EXISTING
打开文件。
如果文件不存在,将出现函数错误。
关于为什么你需要用OPEN_EXISTING标记如果你正在使用CreateFile函数在驱动时的讨论,请参考备注。
OPEN_ALWAYS
如果文件存在,打开文件。
如果不存在,函数像dwCreationDisposition为CREATE_NEW一样创建文件。
TRUNCATE_EXISTING
打开文件。
一旦打开,文件被截断以便使其为0字节。
正在调用的过程必须打开至少是GENRIC_WRITE访问的文件。
如果文件不存在,函数错误。
dwFlagsAndAttributes
为文件指定文件属性和标记。
在dwFlagsAndAttributes参数中,任何以下属性的组合是被接受的,所有其他文件属性替代FILE_ATTRIBUTE_NORMAL属性除外.
属性
描述
FILE_ATTRIBUTE_ARCHIVE
文件被标记归档。
应用程序使用这个属性标记文件备份或移除。
FILE_ATTRIBUTE_ENCRYPTED
文件或目录标记为加密。
对一个文件而言,这个含义表示文件中的所有的数据被加密。
对目录而言,这个含义表示对新创建的文件和子目录加密方法为默认属性。
如果FILE_ATTRIBUTE_SYSTEM也被定义,这个标记将无影响。
FILE_ATTRIBUTE_HIDDEN
文件为隐藏。
它不包括在一个普通的目录列表中。
FILE_ATTRIBUTE_NORMAL
文件没有其他属性设置。
当这个属性单独使用时有效。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
文件将正在内容索引服务中被索引。
FILE_ATTRIBUTE_OFFLINE
文件数据不能立即使用。
这个属性表明文件数据已经被物理移动至脱机存储器中。
这个属性被使用在远程存储器、分层存储器存储管理软件中。
应用程序不能随意改变此属性。
FILE_ATTRIBUTE_READONLY
文件只读。
应用程序能够读文件,但不能写或删除文件。
FILE_ATTRIBUTE_SYSTEM
部分文件或全部被操作系统使用
FILE_ATTRIBUTE_TEMPORARY
文件正在被临时存储器调用。
文件系统与其试图使在内存中的所有数据存入大容量存储器倒不如更迅速地被访问。
对dwFlagsAndAttributes参数来说,以下任何标记的组合是可以允许的。
标记
描述
FILE_FLAG_WRITE_THROUGH
命令系统通过任意中级缓存并且直接写入磁盘。
系统仍能隐藏写操作,但是不能缓慢的强制刷新。
FILE_FLAG_OVERLAPPED
命令系统初始化对象,以获得一个有意义的时间数值来处理ERROR_IO_PENDING返回。
当操作完成,指定的设置被设置为规定信号。
当你指定FILE_FLAG_OVERLAPPED,文件读与写函数必须指定为OVERLAPPED结构。
就是说,当FILE_FLAG_OVERLAPPED已被指定,一个应用程序必须提供异步读和写。
当FILE_FLAG_OVERLAPPED已被指定,系统不维持文件指针。
文件位置以lpOverlapped属性(指向一个OVERLAPPED结构)被传递,用以文件读写函数。
这个标记也能使不止一个操作与句柄(例如一个联合读与写的操作)联立地执行。
FILE_FLAG_NO_BUFFERING
命令系统不需要中间缓存或高速缓存打开文件。
当联合使用FILE_FLAG_OVERLAPPED,标记给予最大的异步性能,因为I/O不依赖内存管理的同步操作。
然而,一些I/O操作将更久,因为数据不被置入高速缓存中。
当运行伴随已打开文件且有FILE_FLAG_NO_BUFFERING属性时,应用程序必然出现某些必要需要:
●文件访问必须开始于在整数倍文件扇区大小内的字节偏移。
●文件访问一定是许多整数倍文件扇区大小的字节。
例如,如果扇区大小为512字节,应用程序能够请求读和写512、1024或2048字节,但是不能是335、981、或7171字节。
●缓存区地址的读写操作与扇区对齐(对齐整数倍扇区大小的内存地址)。
依赖于磁盘,这个要求可能不会被强制执行。
一种调整缓冲区为整数倍扇区大小值的方法是使用VirtualAlloc分配缓冲区。
它调整地址以整数倍的操作系统内存页大小分配内存。
因为内存页与扇区卷标大小二者之间后者更高级,因此内存地址也对齐整数倍的扇区容量大小。
应用程序能通过GetDiskFreeSpace函数确定扇区大小。
FILE_FLAG_RANDOM_ACCESS
指示文件随机存取。
系统可以利用这个作为优化文件缓存的提示。
FILE_FLAG_SEQUENTIAL_SCAN
指示文件从开始到结尾顺序存储。
系统可以利用这个作为优化文件缓存的提示。
如果应用程序以随机访问移动文件指针,最适合的高速缓存不一定产生;然而,正确的操作仍然是有保证的。
在连续访问模式,定义这个标记能增强应用程序的读大文件的性能。
在应用程序读顺序地读大文件时性能收益能甚至更显而易见,但是偶尔会跳过小字节区间。
FILE_FLAG_DELETE_ON_CLOSE
指示操作系统在它的句柄被关闭后立即删除文件,不仅仅是处理你所指定FILE_FLAG_DELETE_ON_CLOSE属性的句柄。
随后的文件打开请求将失败,除非FILE_SHARE_DELETE被使用。
FILE_FLAG_BACKUP_SEMANTICS
WindowsNT/2000/XP:
指示一个已被打开或创建文件的备份或恢复。
假若它已有必要的权限,系统将确保调用过程不进行文件安全检测。
相关的权限如SE_BACKUP_NAME和SE_RESTORE_NAME。
你也能够设置这个标记用以获取一个目录的句柄。
一个目录句柄能够传递给一些代替文件句柄的函数。
FILE_FLAG_POSIX_SEMANTICS
指示文件权限符合POSIX规则。
包括假如文件系统支持文件的多个不同名称的命名。
谨慎使用则个选项,因为使用这个标记创建文件可能不能被MS-DOS或16位Windows应用程序的写操作接受。
FILE_FLAG_OPEN_REPARSE_POINT
设置这个标记禁止NTFS解析点重新解析操作。
当文件已被打开,无论控制解析点是否被操作,文件句柄都会被返回。
这个标记不能与CREATE_ALWAYS标记一同使用。
FILE_FLAG_OPEN_NO_RECALL
指示文件数据被请求,但是它应当贮存在远程存储器中。
它不能被存入特定的逻辑存储器中。
这个标记特别用于远程存储器系统或远程存储器管理系统中。
如果CreateFile函数打开一个已命名通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSDN Windows API CreateFile 函数 中文