Можно использовать int 13h для записи в мой arduino на моем USB-порту в реальном режиме x86 [duplicate]

Другим случаем, когда NullReferenceExceptions может случиться, является (неправильное) использование оператора as :

class Book {
    public string Name { get; set; }
}
class Car { }

Car mycar = new Car();
Book mybook = mycar as Book;   // Incompatible conversion --> mybook = null

Console.WriteLine(mybook.Name);   // NullReferenceException

Здесь Book и Car являются несовместимыми типами; a Car не может быть преобразован / передан в Book. Когда этот сбой завершается неудачно, as возвращает null. Используя mybook после этого, вы вызываете NullReferenceException.

В общем случае вы должны использовать cast или as, как показано ниже:

Если вы ожидаете преобразования типа в всегда преуспевает (т. е. вы знаете, какой объект должен быть впереди времени), тогда вы должны использовать cast:

ComicBook cb = (ComicBook)specificBook;

Если вы не уверены в типе, но хотите попробовать , чтобы использовать его как определенный тип, затем используйте as:

ComicBook cb = specificBook as ComicBook;
if (cb != null) {
   // ...
}

3
задан Greg Hewgill 4 December 2011 в 10:39
поделиться

3 ответа

Как говорит Алекс, нет универсальной поддержки USB на уровне BIOS. Тем не менее, были попытки сделать настоящие DOS-драйверы для USB-устройств. Я нашел страницу с некоторыми исходными кодами, которые вы должны использовать: http://bretjohnson.us/source/source.htm

4
ответ дан Igor Skochinsky 27 August 2018 в 05:31
поделиться

Согласно руководству GEUB ( http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html ), не-багги BIOS выведет USB в качестве жесткого диска. Таким образом, вы можете использовать прерывания жесткого диска (например, INT 0x13) для поиска и доступа к USB, как обычного оборудования. BIOS делает то же самое для CDROM (см. http://wiki.osdev.org/El-Torito нет режима эмуляции). Я думаю, что BIOS сделает это для всех поддерживаемых параметров загрузки, но я не нашел никаких документов для поддержки этого.

4
ответ дан Ahmed Ghonim 27 August 2018 в 05:31
поделиться

В BIOS для ПК не поддерживается поддержка USB-ввода-вывода, аналогичная всем другим устройствам ввода-вывода (клавиатура, дисплей, последовательный, параллельный, диск, динамик). USB пришел слишком поздно на вечеринку. Единственная связанная с USB вещь, которую вы можете получить от BIOS, - это поддержка USB-клавиатур и памяти, подключенных через USB (вы можете загрузиться с них на современных ПК). Помимо этого, вы должны реализовать свой собственный USB-накопитель.

3
ответ дан Alexey Frunze 27 August 2018 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: