子线程如何设置才能有和主线程一样的权限???

ac_de 2012-01-14 10:26:01
我在动态库中新建了一个子线程。在子线程中需要记录。
在创建目录的时候 直接提示错误。而函数在主程序中调用没有错误,

有时候执行到FindFirstFile 错误,有时候执行到CreateDirectory错误 。
HANDLE hHandleDir=NULL;
WIN32_FIND_DATA FindFileData;


//判断子目录是否存在sDirLog为一个字符串目录名称
hHandleDir=FindFirstFile(sDirLog,&FindFileData);
if(hHandleDir==INVALID_HANDLE_VALUE)
{
CreateDirectory(sDirLog,NULL);
}
FindClose(hHandleDir);

是否因为权限导致的???
...全文
312 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ac_de 2012-01-17
  • 打赏
  • 举报
回复
我已经说了 把创建目录,然后写文件的函数,在主程序中调用 没有任何问题。
ac_de 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 aaronwang81 的回复:]

1.权限是按进程分配的,不是线程,进程中任意线程有相同的权限。
2.如果你调用的是createdirectory,有几个事你需要保证,目录命名合法,最好是绝对路径,最重要的是,要创建的目录的上层目录必须已经存在,比如你要创建d:\a\b\c\d,那么,d:\a\b\c,这个目录是必须已经存在的,不然,一定失败。
另外,不知道为什么你用了线程,不知道你对线程了解多少。有没有处理好线程之间数据同……
[/Quote]
这个好像不涉及同步的问题把,我在线程里面写完数据后,把操作日志记录下来,仅此而已

龙凤呈祥焱 2012-01-17
  • 打赏
  • 举报
回复
1.权限是按进程分配的,不是线程,进程中任意线程有相同的权限。
2.如果你调用的是createdirectory,有几个事你需要保证,目录命名合法,最好是绝对路径,最重要的是,要创建的目录的上层目录必须已经存在,比如你要创建d:\a\b\c\d,那么,d:\a\b\c,这个目录是必须已经存在的,不然,一定失败。
另外,不知道为什么你用了线程,不知道你对线程了解多少。有没有处理好线程之间数据同步问题。
自己的代码。随便调一下就知道原因了。做为一个C/C++程序员,这是必备技能。

Gloveing 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ac_de 的回复:]
路径是绝对路径,
我在动态库中 使用了STL 的队列,通过外部程序调用插入函数,然后在线程内读取数据
是否是STL库引起?
[/Quote]变量作用域或者线程同步问题
ac_de 2012-01-16
  • 打赏
  • 举报
回复
路径是绝对路径,
我在动态库中 使用了STL 的队列,通过外部程序调用插入函数,然后在线程内读取数据
是否是STL库引起?
hhyhw2001 2012-01-16
  • 打赏
  • 举报
回复
路径是绝对路径吗?
Eleven 2012-01-16
  • 打赏
  • 举报
回复
GetLastError()的值是多少?
buyong 2012-01-16
  • 打赏
  • 举报
回复
把SaveData改成全局函数试试
ac_de 2012-01-16
  • 打赏
  • 举报
回复
子线程调用主程序中的函数
程序基于MFC DLL库,在动态库中开辟一个子线程
DWORD WINAPI ProcQuery(LPVOID lpParameter)
{
CDataTestApp *app=(CDataTestApp *)lpParameter;
///////////////////////
while(true)
{
if(::WaitForSingleObject(事件,2000)==WAIT_OBJECT_0)
{
break;
}
app->SaveData(); //在这里调用主线程中的函数 生成日志报错!!!

}



return 0;
}
ac_de 2012-01-16
  • 打赏
  • 举报
回复
不创建目录 直接在一个目录下 写文件也是出现异常错误
ac_de 2012-01-16
  • 打赏
  • 举报
回复
路径肯定是正确的,因为同样的创建目录函数 在主程序调用没有问题
jyh_baoding 2012-01-15
  • 打赏
  • 举报
回复
程序执行的上下文可能变化了
stjay 2012-01-14
  • 打赏
  • 举报
回复
先看看GetLastError
Gloveing 2012-01-14
  • 打赏
  • 举报
回复
你的目录明出问题没?

16,472

社区成员

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

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

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