public override int Read([In, Out] byte[] buffer, int offset, int count) {
if (buffer==null)
throw new ArgumentNullException("buffer");
if (offset < 0 || count < 0)
throw new ArgumentOutOfRangeException((offset < 0 ? "offset" : "count"), Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
if (buffer.Length - offset < count)
throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
if (!_canRead) __Error.ReadNotSupported();
int errorCode = 0;
int result = ReadFileNative(_handle, buffer, offset, count, 0, out errorCode);
if (result == -1) {
__Error.WinIOError(errorCode, String.Empty);
}
return result;
}