hComm=CreateFile(sPortname.utf16(),GENERIC_READ |GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);//FILE_FLAG_OVERLAPPED重叠io操作。
调试时,出现HANDLE无效的返回值。我对MFC不是很了解,各位大神,救命啊。什么情况会出现无效返回值。

解决方案 »

  1.   

    在这个语句后面 加一句:int n=GetLastError();看是什么错误:n的代码:
    GetLastError的返回值的含义:
    (0)-操作成功完成。
    (1)-功能错误。
    (2)- 系统找不到指定的文件。
    (3)-系统找不到指定的路径。
    (4)-系统无法打开文件。
    (5)-拒绝访问。
    (6)-句柄无 效。
    (7)-存储控制块被损坏。
    (8)-存储空间不足,无法处理此命令。
    (9)-存储控制块地址无效。
    (10)-环境错 误。
    (11)-试图加载格式错误的程序。
    (12)-访问码无效。
    (13)-数据无效。
    (14)-存储器不足,无法完成此 操作。
    (15)-系统找不到指定的驱动器。
    (16)-无法删除目录。
    (17)-系统无法将文件移到不同的驱动器。
    (18)- 没有更多文件。
    (19)-介质受写入保护。
    (20)-系统找不到指定的设备。
    (21)-设备未就绪。
    (22)-设备不识 别此命令。
    (23)-数据错误 (循环冗余检查)。
    (24)-程序发出命令,但命令长度不正确。
    (25)-驱动器无法找出磁盘上 特定区域或磁道的位置。
    (26)-无法访问指定的磁盘或软盘。
    (27)-驱动器找不到请求的扇区。
    (28)-打印机缺纸。
    (29)- 系统无法写入指定的设备。
    (30)-系统无法从指定的设备上读取。
    (31)-连到系统上的设备没有发挥作用。
    (32)-进程无法 访问文件,因为另一个程序正在使用此文件。
    (33)-进程无法访问文件,因为另一个程序已锁定文件的一部分。
    (36)-用来共享的打开文 件过多。
    (38)-到达文件结尾。
    (39)-磁盘已满。
    (50)-不支持网络请求。
    (51)-远程计算机不可用 。
    (52)- 在网络上已有重复的名称。
    (53)-找不到网络路径。
    (54)-网络忙。
    (55)-指定的网络资源或设备不再可用。
    (56)- 已到达网络 BIOS 命令限制。
    (57)-网络适配器硬件出错。
    (58)-指定的服务器无法运行请求的操作。
    (59)-发生意 外的网络错误。
    (60)-远程适配器不兼容。
    (61)-打印机队列已满。
    (62)-无法在服务器上获得用于保存待打印文件的空 间。
    (63)-删除等候打印的文件。
    (64)-指定的网络名不再可用。
    (65)-拒绝网络访问。
    (66)-网络资源类型 错误。
    (67)-找不到网络名。
    (68)-超过本地计算机网卡的名称限制。
    (69)-超出网络 BIOS 会话限制。
    (70)- 远程服务器已暂停,或正在启动过程中。
    (71)-当前已无法再同此远程计算机连接,因为已达到计算机的连接数目极限。
    (72)-已暂停指 定的打印机或磁盘设备。
    (80)-文件存在。
    (82)-无法创建目录或文件。
    (83)-INT 24 失败。
    (84)- 无法取得处理此请求的存储空间。
    (85)-本地设备名已在使用中。
    (86)-指定的网络密码错误。
    (87)-参数错误。
    (88)- 网络上发生写入错误。
    (89)-系统无法在此时启动另一个进程。
    (100)-无法创建另一个系统信号灯。
    (101)-另一个进程 拥有独占的信号灯。
    (102)-已设置信号灯且无法关闭。
    (103)-无法再设置信号灯。
    (104)-无法在中断时请求独占的信 号灯。
    (105)-此信号灯的前一个所有权已结束。
    (107)-程序停止,因为替代的软盘未插入。
    (108)-磁盘在使用中,或 被另一个进程锁定。
    (109)-管道已结束。
    (110)-系统无法打开指定的设备或文件。
    (111)-文件名太长。
    (112)- 磁盘空间不足。
    (113)-无法再获得内部文件的标识。
    (114)-目标内部文件的标识不正确。 (117)-应用程序制作的 IOCTL 调用错误。
    (118)-验证写入的切换参数值错误。
    (119)-系统不支持请求的命令。
    (120)-此功能只被此系 统支持。
    (121)-信号灯超时时间已到。
    (122)-传递到系统调用的数据区太小。
    (123)-文件名、目录名或卷标语法不正 确。
    (124)-系统调用级别错误。
    (125)-磁盘没有卷标。
    (126)-找不到指定的模块。
    (127)-找不到指定 的程序。
    (128)-没有等候的子进程。
    (130)-试图使用操作(而非原始磁盘 I/O)的已打开磁盘分区的文件句柄。
    (131)- 试图移动文件指针到文件开头之前。
    (132)-无法在指定的设备或文件上设置文件指针。
    (133)-包含先前加入驱动器的驱动器无法使用 JOIN 或 SUBST 命令。
    (134)-试图在已被合并的驱动器上使用 JOIN 或 SUBST 命令。
    (135)-试图在已 被合并的驱动器上使用 JOIN 或 SUBST 命令。
    (136)-系统试图解除未合并驱动器的 JOIN。
    (137)-系统试图解除 未替代驱动器的 SUBST。
    (138)-系统试图将驱动器合并到合并驱动器上的目录。
    (139)-系统试图将驱动器替代为替代驱动器上 的目录。
    (140)-系统试图将驱动器合并到替代驱动器上的目录。
    (141)-系统试图替代驱动器为合并驱动器上的目录。
    (142)- 系统无法在此时运行 JOIN 或 SUBST。
    (143)-系统无法将驱动器合并到或替代为相同驱动器上的目录。
    (144)-目录并非 根目录下的子目录。
    (145)-目录非空。
    (146)-指定的路径已在替代中使用。
    (147)-资源不足,无法处理此命令。
    (148)- 指定的路径无法在此时使用。
    (149)-企图将驱动器合并或替代为驱动器上目录是上一个替代的目标的驱动器。
    (150)-系统跟踪信息未 在 CONFIG.SYS 文件中指定,或不允许跟踪。
    (151)-为 DosMuxSemWait 指定的信号灯事件个数错误。
    (152)-DosMuxSemWait 不可运行。已设置过多的信号灯。
    (153)-DosMuxSemWait 清单错误。
    (154)-输入的卷标超过目标文件系统的长度限 制
    (155)-无法创建另一个线程。
    (156)-接收进程已拒绝此信号。
    (157)-段已被放弃且无法锁定。
    (158)- 段已解除锁定。
    (159)-线程标识的地址错误。
    (160)-传递到 DosExecPgm 的参数字符串错误。
    (161)-指 定的路径无效。
    (162)-信号已暂停。
    (164)-无法在系统中创建更多的线程。
    (167)-无法锁定文件区域。
    (170)- 请求的资源在使用中。
    (173)-对于提供取消区域进行锁定的请求不明显。
    (174)-文件系统不支持锁定类型的最小单元更改。
    (180)- 系统检测出错误的段号。
    (183)-当文件已存在时,无法创建该文件。
    (186)-传递的标志错误。
    (187)-找不到指定的系 统信号灯名称。
    (196)-操作系统无法运行此应用程序。
    (197)-操作系统当前的配置不能运行此应用程序。
    (199)-操作 系统无法运行此应用程序。
    (200)-代码段不可大于或等于 64K。
    (203)-操作系统找不到已输入的环境选项。
    (205)- 命令子树中的进程没有信号处理程序。
    (206)-文件名或扩展名太长。
    (207)-第 2 环堆栈已被占用。
    (208)-没有正 确输入文件名通配符 * 或 ?,或指定过多的文件名通配符。
    (209)-正在发送的信号错误。(210)-无法设置信号处理程序。
    (212)- 段已锁定且无法重新分配。
    (214)-连到该程序或动态链接模块的动态链接模块太多。
    (215)-无法嵌套调用 LoadModule。
    (230)- 管道状态无效。
    (231)-所有的管道实例都在使用中。
    (232)-管道正在关闭中。
    (233)-管道的另一端上无任何进程。
    (234)- 更多数据可用。
    (240)-取消会话。
    (254)-指定的扩展属性名无效。
    (255)-扩展属性不一致。
    (258)-等 待的操作过时。
    (259)-没有可用的数据了。
    (266)-无法使用复制功能。
    (267)-目录名无效。
    (275)-扩 展属性在缓冲区中不适用。
    (276)-装在文件系统上的扩展属性文件已损坏。
    (277)-扩展属性表格文件已满。http://www.cnblogs.com/carekee/articles/2196518.html
      

  2.   

    GetLastError();的返回值4294967294 ,是什么啊,
      

  3.   

    没有这个 你用error lookup 自己找找
      

  4.   

    int n=GetLastError() "-2"是什么啊
      

  5.   

    WARNING: WriteFile() error.. Bytes Sent: %d; Message Length: %d
     0 9   
    怎么解决啊 ,
      

  6.   

    ErrInf=GetLastError(); (0)-操作成功完成。为什么还不能发送数据。