注册 登录
编程论坛 汇编论坛

最后一个盘符取不出来,请教。。

onepc 发布于 2009-09-25 15:25, 530 次点击
程序代码:
;by onepc 153785587
;;;;;;;取得本地盘符
_getdriver proc uses esi
       local @dwDriverSize
       local @szDriverBuffer[MAX_PATH]:BYTE
     invoke RtlZeroMemory,addr @szDriverBuffer,sizeof @szDriverBuffer
      
     invoke GetLogicalDriveStrings,@dwDriverSize,addr @szDriverBuffer  ;存放的是A:\,0,C:\,0   [A:\,0]这里刚才是四b
     ;就是指针加移动4之后指向值不为0时循环。取盘符
     ;invoke MessageBox,NULL,addr @szDriverBuffer,CTXT("Driver"),0 ;这里只能得到第一个盘符。遇0结束
     lea esi,@szDriverBuffer  ;把缓冲区的地址传给esi
     xor ebx,ebx
      .while TRUE
          invoke MessageBox,NULL,esi,CTXT("Driver"),0
         .break .if byte ptr [esi]==bl
         add esi,4
      .endw   

  ret
_getdriver endp
;;;;;;;取得本地盘符



我这里的G盘[最后一个盘。] 不能显示。。
4 回复
#2
东海一鱼2009-09-26 14:31
xor ebx,ebx
.while TRUE
          invoke MessageBox,NULL,esi,CTXT("Driver"),0  
         .break .if byte ptr [esi + 4] == bl         ;判断下一个,不是当前,否则最后一个误判(当前不为零,但add esi,4后可能已为0
         add esi,4
.endw   
#3
onepc2009-09-26 14:34
谢谢一条鱼兄。~
#4
onepc2009-09-26 14:42
不过还是显不出来。看上去应是这样的了。不过就是会出来一个空的对话框。
我直接用esi+X也出不来。只是一个空对话框出来。
#5
东海一鱼2009-09-26 15:22
回复 4楼 onepc
没有发现你说的现象。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[ 本帖最后由 东海一鱼 于 2009-9-26 15:25 编辑 ]
1