Reads a block of bytes from a file starting at the specified file offset.
Note that StartingByteOffset in the request can be 64 bits. Requests made to NSS volumes support reading at true 64-bit offsets. Requests made to traditional volumes support reading at 32-bit offsets. Reading at offsets greater than 32 bits on a traditional volume result in an error.
If the EOF is encountered before the read request is satisfied, the server returns Successful, but BytesActuallyRead contains a count less than BytesToRead.
If the calling client does not have read access privileges to the indicated file, or if a portion of the targeted byte block is locked for use by some other client, Read File will fail.
Clients are constrained by the current negotiated file buffer size (see Negotiate Buffer Size 0x2222 33). A client cannot request more bytes of data than will fit in the currently negotiated buffer size.
For NetWare versions prior to 5.0, the client cannot request a data block that straddles a buffer-size boundary in the file. For example, if the current buffer size were 512 bytes and the client wants to read 1000 bytes starting at file offset 500, the client must issue three read requests. The first request will read 12 bytes starting at offset 500. The second request will read 512 bytes starting at offset 512. The last request will read 476 bytes starting at offset 1024.
If a client requests a block of data that starts on an odd-byte boundary within the file, the first byte of the data field returned by the server will contain garbage. The actual data from the file will start in the second byte of the data block.
FileHandle, StartingByteOffset, and BytesToRead require the input to be in Hi-Lo order. BytesActuallyRead is returned in Hi-Lo order.