2015-01-21 39 views
-3

爲什麼當我嘗試寫入扇區33時,GetLastError返回5?使用Windows API編寫扇區33

我的MASM32源代碼:

include \masm32\include\masm32rt.inc 


.data? 
hDrv HANDLE ? 


buffer byte 512 dup(?) 
tmp512 byte 512 dup(?) 

.code 

start: 

STRING p,"\\.\PhysicalDrive0" 

    call main 
    inkey 
    exit 

main proc 
local i:dword 


invoke CreateFile,addr p,GENERIC_READ or GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,0,0 
mov hDrv,eax 

mov i,1 

.while TRUE 
invoke ReadFile,hDrv,addr buffer,512,addr tmp512,NULL 
invoke WriteFile,hDrv,addr buffer,512,addr tmp512,NULL 
.if eax==1 
print str$(i),13,10,0 
inc i 
.else 
invoke GetLastError 
print str$(eax),13,10,0 
.endif 
.endw 

invoke CloseHandle,hDrv 

    ret 

main endp 


end start 
+0

它可以與其他部門合作嗎? – Mehrdad 2015-01-21 02:41:54

+0

您如何知道錯誤發生在ReadFile上?直到WriteFile調用之後才檢查返回值。您還需要檢查CreateFile的返回值。 – 2015-01-21 02:44:39

+0

是的,它適用於其他行業! – 2015-01-21 02:46:30

回答