Как драйверы windows общаются с оборудованием? - PullRequest
0 голосов
/ 06 апреля 2020

Мне любопытно, как драйверы windows взаимодействуют с оборудованием. Например, некоторые драйверы могут использовать функцию, другие - макрос, а другие могут жестко закодировать адреса регистров непосредственно в свой код. Возможно, есть и другие способы.

  1. Может кто-нибудь, пожалуйста, дайте мне знать о различных способах взаимодействия.
  2. Кроме того, я хотел бы знать, учитывая конкретный драйвер, как мы можем узнать, как он взаимодействует, если у нас есть все исходные файлы, включая .vcxproj и другие двоичные файлы. ?

Любая помощь очень ценится.

TIA. : -)

1 Ответ

0 голосов
/ 08 апреля 2020

Зависит от типа устройства. например, если это универсальное c устройство PCI, то доступ к аппаратному обеспечению осуществляется «напрямую» к HW, что означает Windows сопоставление PCI MMIO с некоторым виртуальным адресом, и драйвер взаимодействует с ним.

Microsoft рекомендовала использовать функцию HAL для предотвращения проблем с оптимизацией компилятора, например, использовать макрос READ_REGISTER_UCHAR() для чтения BYTE из регистра устройства.

Например, USB подсистема с большим стеком и контроллером USB, который управляет доступом к устройству. поэтому в этом случае вам понадобится использовать функцию для доступа к реестру устройства.

Вы можете найти множество примеров драйверов Microsoft в GitHub

...