WinCE删除文件DeleteFile失败

zhuyf87 2013-01-18 01:24:49
BOOL return_value = DeleteFile(_T("\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"));

if (!return_value)
{
DWORD error = 0;
error = GetLastError();
}


我的程序中,会使用上面这段代码删除WinCE系统上一些文件。
一般情况下都工作正常,但偶尔会出现有文件删除失败的情况,我在程序中加了日志。
出现删除失败的情况时,我用GetLastError返回错误码,返回的是-1(应该是0xffffffff吧)。
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
但现在GetLastError的返回值是-1或者说0xffffffff,并不是有效的Windows error code。
我直接手动到WinCE终端上删除这个文件,也弹出窗口,提示“删除文件失败”。
请大家帮我分析一下如果解决这个问题。谢谢。
...全文
370 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LuciferStar 2013-01-18
  • 打赏
  • 举报
回复
引用 11 楼 schlafenhamster 的回复:
"\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 既不是 相对 路径 ".\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 又是 绝对路径 "C:\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"
CE下,这个路径是对的。
schlafenhamster 2013-01-18
  • 打赏
  • 举报
回复
"\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 既不是 相对 路径 ".\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 又是 绝对路径 "C:\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"
看不见的裂痕 2013-01-18
  • 打赏
  • 举报
回复
1. DeleteFile如果文件原来就被占用的话,是删除不了的。一般如果一个函数中Create之后直接DeleteFile 是不成功的,我一般直接PostMessage走消息循环来删除 2. 我看楼主用相对路径,可以尝试下用绝对路径来测试下 3. DeleteFile是不能删除只读文件的,需要使用SHFileOperation来操作
快乐鹦鹉 2013-01-18
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/wxhanshan/2990555 百度一下,看看有没有强制删除文件的方法吧
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 7 楼 sha_jinhao 的回复:
引用 5 楼 zhuyf87 的回复:引用 4 楼 sha_jinhao 的回复:我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。 呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-我笑的是 你知道问题所在 还来提问! sorry、 ……
我是想解决问题。这个文件必须被删掉。其实我是写的一个ActiveX插件,网站那边的同事调用我ActiveX里面删除文件的接口。一定要保证这个文件必须删掉(由于业务上的需要)。我在ActiveX里面用的是Remote API。 即使我知道原因,但我现在没法解决掉。请大家出出主意,比如如何强制删除被占用的文件?我搜了一下,很多都是vc删除pc上的被占用文件。我现在想强制删除wince上的被占用文件,而且用的是RAPI。我觉得很难解决。可能要换别的思路了。唉。
jimette 2013-01-18
  • 打赏
  • 举报
回复
引用 5 楼 zhuyf87 的回复:
引用 4 楼 sha_jinhao 的回复:我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。 呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-
我笑的是 你知道问题所在 还来提问! sorry、
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 3 楼 LuciferStar 的回复:
CE下比较奇葩的。文件路径要绝对路径。没有CurrentDirectory的概念。
是的。WinCE没有当前目录的概念,也没有C盘,D盘这些。 全部都是挂在到根目录,全路径就是\\Dic\\xx.txt这样。
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 4 楼 sha_jinhao 的回复:
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-
jimette 2013-01-18
  • 打赏
  • 举报
回复
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
LuciferStar 2013-01-18
  • 打赏
  • 举报
回复
CE下比较奇葩的。文件路径要绝对路径。没有CurrentDirectory的概念。
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
可能被某些进程占用了
嗯。最大的可能就是被占用了。因为我将wince机器重新启动,就可以删除掉了。 但现在我不知道如何能解决这个问题。 也不知道是什么程序占用了这个文件。
快乐鹦鹉 2013-01-18
  • 打赏
  • 举报
回复
可能被某些进程占用了
代码下载地址: https://pan.quark.cn/s/48b01f0717eb 本文将详细研究有关rtl8822蓝牙驱动及其适配的相关信息。rtl8822是由Realtek公司设计的一种无线通信芯片,主要应用于提供Wi-Fi和蓝牙功能。该芯片被广泛应用于多种现代电子设备中,例如笔记本电脑、路由器、智能手机以及平板电脑等。 我们首先需要理解“驱动”的定义。驱动程序充当计算机硬件与操作系统之间的中介,负责将硬件指令解释为操作系统能够识别的语言。对于rtl8822芯片而言,蓝牙驱动是控制该芯片执行蓝牙通信的核心软件模块,它确保设备能够准确识别并连接其他蓝牙设备。 rtl8822驱动资料通常包括以下几个部分: 1. **Bluetooth Baseband (BB) 驱动**:这一部分负责处理蓝牙的底层通信,包括射频信号的编码与解码,以及数据包的发送和接收。 2. **Bluetooth Host Controller Interface (HCI)**:HCI层是蓝牙驱动的重要组成部分,它确立了蓝牙主机(例如CPU)与控制器(例如rtl8822芯片)之间的接口协议。借助HCI,应用程序能够与蓝牙设备进行互动,如配对、建立连接、传输数据等。 3. **移植文档**:移植文档是将rtl8822蓝牙驱动适配至不同操作系统或平台的关键指南,其中通常包含了详尽的步骤、注意事项以及可能遇到的问题的解决方案。这些文档有助于开发者理解驱动的工作原理,并根据目标系统进行必要的调整。 4. **芯片手册**:Realtek为rtl8822芯片提供的手册是开发和调试驱动的重要参考资料,其中涵盖了芯片的硬件特性、寄存器布局、接口规范、功耗管理等内容。熟悉这些信息能够帮助开发者更深入地...

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧