Советы по реализации и требования для нижней границы WDM
В этом разделе описываются советы и требования по реализации драйвера мини-порта NDIS-WDM. Драйвер мини-порта NDIS-WDM может вызывать как функции NDIS, так и функции, отличные от NDIS. Эти функции, не относящиеся к NDIS, включают, например, подпрограммы поддержки WDM-kernel-mode и функции для определенного интерфейса шины и драйвера.
При реализации драйвера мини-порта NDIS-WDM учитывайте следующее:
Для создания драйвера мини-порта NDIS-WDM необходимо, чтобы флаг NDIS_WDM был определен перед включением файла заголовка Ndis.h. Определение флага NDIS_WDM гарантирует, что Ndis.h автоматически включает соответствующий файл заголовка WDM. Флаг NDIS_WDM должен быть внедрен в начале исходного кода драйвера мини-порта или установлен в файле источников драйвера мини-порта. Драйверу мини-порта NDIS-WDM требуется файл заголовка WDM для вызова подпрограмм режима ядра, таких как IoCallDriver и IoAllocateIrp.
Для вызовов функций для определенного интерфейса драйвера шины требуются файлы заголовков для этого драйвера шины.
Не рекомендуется включать заголовки NDIS и не NDIS в один и тот же исходный файл, так как они могут быть несовместимыми. Это значит, что необходимо создать отдельные исходные файлы для кода, который вызывает функции NDIS, и для кода, который вызывает функции, отличные от NDIS.
Драйвер мини-порта NDIS-WDM должен вызывать соответствующие функции NDIS для выделения и освобождения ресурсов, если только драйвер мини-порта NDIS-WDM не выделяет и не освобождает ресурсы в одном из следующих сценариев:
- Ресурс, как правило, ресурс памяти, выделяется драйвером мини-порта NDIS-WDM, а затем освобождается сущностью, отличной от NDIS, например интерфейсом bus-driver.
- Ресурс, обычно ресурс памяти, выделяется сущностью, отличной от NDIS, а затем освобождается драйвером мини-порта NDIS-WDM.
В предыдущих сценариях драйвер мини-порта NDIS-WDM должен вызывать соответствующие подпрограммы WDM, чтобы выделить или освободить ресурсы для сущности, отличной от NDIS.