怪问题,从STDIN中读入字符串不能用于CREATEFILE吗??????
929 2003-12-15 04:33:59 ;----------------
;编译模式="CON"
;----------------
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
;-------------------------------------------------------
.DATA
szMsg db "Please Input the FileName:",13,10,0
errMsg db "Error In Open File",13,10,0
buffer db 256 dup(?),0
fileName db 64 dup(?)
fileName1 db 'f:\dos1.asm',0
fh dd ?
dwRead dd ?
dwOverLap dd ?
.CODE
START:
invoke locate,2,2 ;输出文本的坐标
invoke StdOut,ADDR szMsg
invoke locate,2,3
invoke StdIn,ADDR fileName,sizeof fileName
invoke StdOut,ADDR fileName
invoke CreateFile,addr fileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
;在这个调用中运行后返回INVALID_HANDLE_VALUE,为什么呀????
.if(eax==INVALID_HANDLE_VALUE)
invoke StdOut,addr errMsg
invoke ExitProcess,1
.ENDIF
mov fh,eax
.repeat
invoke ReadFile,fh,addr buffer,250,addr dwRead,NULL
mov ebx,dwRead
;inc bx
mov buffer[bx],0
invoke StdOut,addr buffer
;invoke StdIn,Addr buffer,256
.until(dwRead!=250)
invoke CloseHandle,fh
invoke ExitProcess,0
end START