HANDLE CreateFile(
LPCTSTR lpFileName, // 指向文件名的指针
DWORD dwDesiredAccess, // 访问模式(写 / 读)
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针
DWORD dwCreationDisposition, // 如何创建
DWORD dwFlagsAndAttributes, // 文件属性
HANDLE hTemplateFile // 用于复制文件句柄
);
1、lpFileName
一个指向无终结符的字符串的指针,来指明要创建或打开的对象的名字。
2、dwDesiredAccess
指明对象的控制模式。一个应用程序可以包含读控制、写控制、读/写控制、设备查询控制。
这个参数的取值可以是下面这些的组合:
0 指定设备查询控制:程序可以不访问设备就查询到设备属性。
GENERIC_READ 指定读控制,可以从对象中读取数据(指针将可以移动)。
GENERIC_WRITE 指定写控制,可以向对象中写数据(指针将可以移动)。
3、dwShareMode
指定对象的共享模式。如果dwShareMode==0,表示是互斥使用的。如果CreateFile打开成功,则别的程序只能等到当前程序关闭对象句柄CloseHandle后才能在打开或使用。
使用下面这些值的组合来表示对象的共享模式:
FILE_SHARE_DELETE Windows NT/2000/XP:打开操作只有在删除请求发生时才能返回成功。
FILE_SHARE_READ 打开操作只有在读控制请求发生时才能返回成功。
FILE_SHARE_WRITE 打开操作只有在写控制请求发生时才能返回成功。
4、lpSecurityAttributes
一个指向SECURITY_ATTRIBUTES结构对象的指针,决定返回的句柄是否被子进程所继承。如果lpSecurityAttributes参数为NULL,句柄就不能被子进程继承。
在Windows NT/2000/XP平台下:lpSecurityDescriptor这个成员指明了这个对象的安全描述符。如果lpSecurityAttributes参数为NULL,对象将获得一个默认的安全描述符。目标文件系统必须为这个参数的在文件上的有效操作保证安全性。
5、dwCreationDisposition
指明当打开的对象存在或不存在的时候各需怎样处理。这个参数必须是一下值的其中之一:
CREATE_NEW 创建新文件/对象(当对象已经存在是将返回失败)。
CREATE_ALWAYS 总是创建(如果对象存在就覆盖它,清除当前属性,把文件属性和dwFlagsAndAttributes指定的标志相结合)。
OPEN_EXISTING 打开文件(如果不存在就返回失败)。
OPEN_ALWAYS 存在就打开;若不存在,假如dwCreationDisposition==CREATE_NEW就创建一个新文件。
TRUNCATE_EXISTING 存在就打开,且清空文件内容(至少要有GENERIC_WRITE权限);若文件不存在就返回失败。
6、dwFlagsAndAttributes
指定文件属性和标志。
7、hTemplateFile
把具有GENERIC_READ权限的句柄指定为一个模板文件。这个模板文件提供了文件属性和扩展属性,用于创建文件。在Windows95/98/Me平台上:这个参数必须为空。
调用如果成功,返回值时一个打开文件的句柄。
调用如果失败,返回值是INVALID_HANDLE_VALUE。要进一步了解出错原因,调用GetLastError。
实例:
HANDLE g_hCom = INVALID_HANDLE_VALUE;
TCHAR tcCom[COM_NAME_SIZE];
memset(tcCom,0,COM_NAME_SIZE);
g_hCom = CreateFile(tcCom,GENERIC_READ | GENERIC_WRITE ,0,NULL,OPEN_EXISTING,0,NULL);//一般都是这样,很好参考的。
if(g_hCom == INVALID_HANDLE_VALUE )
{
RETAILMSG(TRUE,(TEXT("[VSP]Failed to open uart port!\r\n")));
goto error;
}
else
{
g_bOpenUart = TRUE;
RETAILMSG(TRUE,(TEXT("[VSP]Succeed to open uart port!\r\n")));
}
大概记住这个就好:
lpFileName是文件或设备的名称。
dwDesiredAccess是访问属性。
dwShareMode是共享属性。
lpSecurityAttributes是安全属性。
dwCreationDisposition是创建属性。
dwFlagsAndAttributes是文件标志和属性。
hTemplateFile是文件模板。