Solved

return value for _lread

Posted on 1998-08-10
5
361 Views
Last Modified: 2013-12-03
Hi,

I'd like to know what is the expected behavior for the _lread functions (kerlnel.dll # 82 and kernel32.dll # 596) when uBytes == 0. This is not described in the API spec.

I.e., if we ask to read 0 bytes, what will happen:

an error? which one?

what is returned by the function? 0? -1?

does that depend on wether the EOF has been reached?

does that depend on the windows' version?

Thanks.
0
Comment
Question by:zorzella
  • 3
  • 2
5 Comments
 
LVL 22

Accepted Solution

by:
nietod earned 100 total points
ID: 1413326
There is no problem reading 0 bytes.  It just does nothing and returns 0 (the number of bytes read).
0
 

Author Comment

by:zorzella
ID: 1413327
Is this valid if the file reader has just reached the EOF?

For example, imagine that EOF has already been reached, and one asks for a _lread of 0 bytes.

In the specs, it is said:

"If the number of bytes read is less than uBytes, the function has reached the end of file (EOF) before reading the specified number of bytes. "

So, would it return 0 even though EOF was reached?

Thanks
0
 
LVL 22

Expert Comment

by:nietod
ID: 1413328
assuming no error, _lread() returns the number of bytes that were read.  This is the lesser of the number requested or the number remaining after the current file position.  If you specify 0 bytes to be read, then the procedure will read 0 bytes (regardless of the current file position) and will return 0.  Thus when you read 0 bytes it doesn't matter what the current file position is.
0
 

Author Comment

by:zorzella
ID: 1413329
Thanks. BTW, did you find this documented somewhere or you just know it by use?

0
 
LVL 22

Expert Comment

by:nietod
ID: 1413330
both documentation and use---but not of _lread().  'm assuming (and it is a safe assumption) that it works like the 100s of other functions that perform the same task (C and C++ have several that work like this, DOS has a read service that works like this, Win32 has the ReadFile() function.)  Thus there is a sort-of convention to how a read() function is supposed to work and _read() will almost certainly follow it.  If it didn't it would have to have a good reason and would have to make it clear in the documentation because programmers will assume it does.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article shows a few slightly more advanced techniques for Windows 7 gadget programming, including how to save and restore user settings for your gadget and how to populate the "details" panel that is displayed in the Windows 7 gadget gallery.  …
This article describes how to add a user-defined command button to the Windows 7 Explorer toolbar.  In the previous article (http://www.experts-exchange.com/A_2172.html), we saw how to put the Delete button back there where it belongs.  "Delete" is …
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question