DllImport, Kernel32.dll

Хотел разобраться в работе статических методов класса Console и хотелось написать свой метод WriteLine. Прочитал множество топиков и уроков по этой теме, вроде как понял суть.

using static System.Console;
using System.Runtime.InteropServices;


namespace ConsoleApp1
{
    class Program
    {
        private const uint STD_INPUT_HANDLE = 0xfffffff6;
        [DllImport("kernel32.dll")]
        private static extern int GetStdHandle(uint nStdHandle);
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern int WriteConsoleA(int hConsoleOutput, object lpBuffer, int nNumberOfCharsToWrite, ref int lpNumberOfCharsWritten, object lpReserved);


        static void Main()
        {
            WriteLineC("a");
        }

        public static void WriteLineC(string s)
        {
            int len = 0;
            WriteConsoleA(GetStdHandle(STD_INPUT_HANDLE), s + "\n", s.Length + 2, ref len, 0);
        }
    }
}

Однако при запуске программы ничего не происходит, спокойно завершается. Дальше уже не получается разобраться. Кто-то знает как работают методы Write, Read в классе Console? Заранее спасибо.


Ответы (0 шт):