The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: justnew on January 08, 2011, 04:33:26 PM

Title: Invalid Filehandle
Post by: justnew on January 08, 2011, 04:33:26 PM
Hi
I'm realy confused. First the code worked but from the one to the other second I get an invalid FIlehandle when I open a file.
That's my bugy code:

.386
.model flat, stdcall
option casemap:none

[...]

.data
[...]

.data?
hFile HANDLE ?

.code
[...]
;Read File
invoke CreateFile,addr file,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
mov hFile,eax
.if hFile == INVALID_HANDLE_VALUE
call errorBox
.endif
invoke ReadFile,hFile,addr buffer,sizeof buffer,addr bread,addr rckeep   ;Here I get the error
.if eax == FALSE
call errorBox
.endif
invoke CloseHandle,hFile

The Filehandle is 34 and nothing overwrites it (I watched at the debugger).

If you want I can upload the exe too (its about 13kb but 10kb is used for data).
Title: Re: Invalid Filehandle
Post by: clive on January 08, 2011, 04:43:35 PM
ZIP it up an attach. Providing incomplete code makes it difficult to debug or review.

What the heck is rckeep doing, you surely aren't doing overlapped io, for most cases you should use NULL, because that parameter is a handle too.
Title: Re: Invalid Filehandle
Post by: japheth on January 08, 2011, 04:48:46 PM

For overlapped I/O, it might be necessary to set FILE_FLAG_OVERLAPPED in CreateFile().
Title: Re: Invalid Filehandle
Post by: justnew on January 08, 2011, 05:13:43 PM
Quote from: clive on January 08, 2011, 04:43:35 PM
What the heck is rckeep doing, you surely aren't doing overlapped io, for most cases you should use NULL, because that parameter is a handle too.

I luv u XD.
Yeah rckeep was the invalid handle. Thank you very much.
The next time I should read the documantation more carefully :S.