Попробуйте:
int number;
cin >> number;
char firstCharacterOfNames;
cin >> firstCharacterOfNames; // This will discard all leading white space.
// including new-line if there happen to be any.
cin.unget(); // Put back the first character of the name.
std::string names;
std::getline(cin, names); // Read the names;
Альтернативно. Если вы знаете, что число и имена всегда будут на разных строках.
cin >> number;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(cin, names);
Просто ты не можешь. C # создает промежуточный язык, который интерпретируется виртуальной машиной (.NET). Все это работает в пользовательском режиме, а драйверы WDM - в режиме ядра.
Существует DDK, но он также не поддерживается в VStudio (но вы можете сделать проект makefile для компиляции).
Разработка драйверов сложна, склонна к появлению синего экрана и требует хорошего понимания C, структур ядра и работы с мемами. Ни один из этих навыков не требуется для C # и .NET, поэтому существует длинный и болезненный путь обучения.
Из вашего описания неясно, намереваетесь ли вы разрабатывать драйверы устройств Windows или взаимодействовать с оборудованием через существующие драйверы устройств.
Например, для взаимодействия с устройствами, подключенными к вашему последовательному порту, вам не нужно писать свой собственный драйвер, и фактически вы можете получить к нему доступ через класс .NET SerialPort
.
Даже USB-устройства могут быть доступны из пользовательского пространства (и, в конечном счете, из управляемого кода) через такие платформы, как libusb-win32 , WinUSB и т. Д.
На самом деле, вы можете написать некоторые драйверы на C #, если используете UMDF, потому что он работает в пользовательском режиме (см. Начало работы с UMDF ). Но я рекомендую использовать C / C ++.
Вы не можете писать драйверы на C #; драйверы должны работать с повышенными привилегиями, чтобы иметь возможность взаимодействовать с оборудованием; управляемый код не может быть запущен в соответствующей среде.
Вы не можете писать драйверы режима ядра на C # (среда выполнения выполняется в пользовательском режиме, поэтому вы не можете войти в ring0). В этом SO Q / A есть ссылки, которые могут оказаться полезными: