FT_W32_CreateFile函数的用法

介绍 FT_W32_CreateFile函数的用法、参数、返回值、注意事项、适用的操作系统环境、调用代码示例等。

null

支持的操作系统

Linux

Mac OS X 10.4 以上版本

Windows 2000 以上版本

Windows CE 4.2 以上版本

概述

FT_W32_CreateFile 函数打开指定设备,返回对应的设备句柄。设备可以通过序列号、设备描述符、设备地址来指定。

异步IO时,需要调用 FT_W32_CreateFile 函数。

定义

FT_HANDLE FT_W32_CreateFile (PVOID pvArg1, DWORD dwAccess, DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreate, DWORD dwAttrsAndFlags,HANDLE hTemplate)

参数说明

参数 pvArg1 含义依赖于参数 dwAttrsAndFlags 的取值;如设备描述符、序列号、设备地址。这些值可以通过调用 FT_CreateDeviceInfoList、FT_GetDeviceInfoDetail 或者 FT_ListDevices 函数来获取。

dwAccess— 对设备的访问方式,可取值包括:GENERIC_READ、GENERIC_WRITE 或者 GENERIC_READ|GENERIC_WRITE.。在 Linux 平台下此参数忽略。

dwShareMode— 设备共享方式。固定取值0。

lpSecurityAttributes— 保留。设置为NULL。

dwCreate— 保留。设置为NULL。

lpSecurityAttributes— 必须设置为 OPEN_EXISTING,在 Linux 平台下忽略。

dwAttrsAndFlags— 文件属性和标志。当进行异步IO时,该参数是一个组合体,由FILE_ATTRIBUTE_NORMAL, FILE_FLAG_OVERLAPPED 组合;如果使用设备序列号,则 dwAttrsAndFlags 取值为 FT_OPEN_BY_SERIAL_NUMBER;如果使用设备描述符,则dwAttrsAndFlags 取值为 FT_OPEN_BY_DESCRIPTION。

hTemplate—固定为NULL。

返回值

成功则返回设备句柄;如果失败则返回 Win32 错误码 INVALID_HANDLE_VALUE。

备注

参数 pvArg1 的值取决于参数 dwAttrsAndFlags:

如果参数 dwAttrsAndFlags 设置为 FT_OPEN_BY_SERIAL_NUMBER 或者 FT_OPEN_BY_DESCRIPTION,参数 pvArg1 为包含终止字符的字符串,其中存储设备的序列号或者描述符;

如果参数 dwAttrsAndFlags 设置为 FT_OPEN_BY_LOCATION ,参数 pvArg1 为long类型变量,存储设备的地址编号。

参数 dwAccess 可取值为 GENERIC_READ,、GENERIC_WRITE 或者 GENERIC_READ|GENERIC_WRITE;

参数 dwShareMode 固定为0;

参数 lpSecurityAttributes 固定取值为 NULL;

参数 dwCreate 必须设置为 OPEN_EXISTING;

参数 dwAttrsAndFlags 异步IO时,取值为 FILE_ATTRIBUTE_NORMAL, FILE_FLAG_OVERLAPPED 的组合;根据需求,可以设置为FT_OPEN_BY_SERIAL_NUMBER or FT_OPEN_BY_DESCRIPTION or FT_OPEN_BY_LOCATION;

hTemplate 必须为NULL。

注意,在 Linux, Mac OS X 和 Windows CE 平台下不支持异步IO和设备地址。

代码示例

The examples that follow use these variables.
FT_STATUS ftStatus;
FT_HANDLE ftHandle;
char Buf[64];
1. Open a device for overlapped I/O using its serial number
ftStatus = FT_ListDevices(0,Buf,FT_LIST_BY_INDEX|FT_OPEN_BY_SERIAL_NUMBER);
ftHandle = FT_W32_CreateFile(Buf,GENERIC_READ|GENERIC_WRITE,0,0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED |
FT_OPEN_BY_SERIAL_NUMBER,
0);
if (ftHandle == INVALID_HANDLE_VALUE)
; // FT_W32_CreateDevice failed
2. Open a device for non-overlapped I/O using its description
ftStatus = FT_ListDevices(0,Buf,FT_LIST_BY_INDEX|FT_OPEN_BY_DESCRIPTION);
ftHandle = FT_W32_CreateFile(Buf,GENERIC_READ|GENERIC_WRITE,0,0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FT_OPEN_BY_DESCRIPTION,
0);
if (ftHandle == INVALID_HANDLE_VALUE)
; // FT_W32_CreateDevice failed
3. Open a device for non-overlapped I/O using its location
long locID;
ftStatus = FT_ListDevices(0,&locID,FT_LIST_BY_INDEX|FT_OPEN_BY_LOCATION);
ftHandle = FT_W32_CreateFile((PVOID) locID,GENERIC_READ|GENERIC_WRITE,0,0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FT_OPEN_BY_LOCATION,
0);
if (ftHandle == INVALID_HANDLE_VALUE)

; // FT_W32_CreateDevice failed

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容