System.IO.__ConsoleStream.WriteFileNative C# (CSharp) Méthode

WriteFileNative() private méthode

private WriteFileNative ( System.IO.SafeFileHandle hFile, byte bytes, int offset, int count, int mustBeZero, int &errorCode ) : int
hFile System.IO.SafeFileHandle
bytes byte
offset int
count int
mustBeZero int
errorCode int
Résultat int
        private static unsafe int WriteFileNative(SafeFileHandle hFile, byte[] bytes, int offset, int count, int mustBeZero, out int errorCode) {
            BCLDebug.Assert(offset >= 0, "offset >= 0");
            BCLDebug.Assert(count >= 0, "count >= 0");
            BCLDebug.Assert(bytes != null, "bytes != null");
            BCLDebug.Assert(bytes.Length >= offset + count, "bytes.Length >= offset + count");

            // You can't use the fixed statement on an array of length 0.
            if (bytes.Length==0) {
                errorCode = 0;
                return 0;
            }

            int numBytesWritten = 0;
            int r;
            fixed(byte* p = bytes) {
                r = WriteFile(hFile, p + offset, count, out numBytesWritten, Win32Native.NULL);
            }
            if (r==0) {
                errorCode = Marshal.GetLastWin32Error();
                if (errorCode==ERROR_NO_DATA || errorCode==ERROR_BROKEN_PIPE)
                    return 0;
                return -1;
            }
            else {
                errorCode = 0;
            }
            return numBytesWritten;          
        }