Функция NdisMGetBusData возвращает ноль

Я пытаюсь развиваться NDIS6.0 драйвер мини-порта на основе WEC7 (Windows Embedded Compact 7) для сетевой карты PCIe.

В функции MPInitialize, когда я пытаюсь прочитать конфигурационное пространство PCI, используя функцию NdisMGetBusData, он возвращает ноль.

Из документации следует прочитать количество прочитанных байтов. Больше нет информации, доступной в документации.

Я не получаю никакого сообщения отладки от слоя оболочки NDIS.

Я добавил печать в моем OALPCICfgRead в моем слое OAL. Я не получаю этот отпечаток также.

Функция, которую я вызываю:

ulResult = NdisMGetBusData(
                       Adapter->AdapterHandle,
                       PCI_WHICHSPACE_CONFIG,
                       FIELD_OFFSET(PCI_COMMON_CONFIG, VendorID),
                       buffer,
                       PCI_COMMON_HDR_LENGTH );

Здесь ulResult равен нулю.

Не получать никаких дополнительных отладочных отпечатков от NDIS.

Отпечатки в контроллере нижнего уровня также не отображаются.

Будет полезно, если кто-нибудь поможет мне отладить эту проблему.

1 ответ

Решение

Проблема в WEC7 CEDDK.dll, Не было поддержки шины PCI HalGetBusDataByOffset а также HalSetBusDataByOffset функции для ARM в DDK_BUS.lib (они встроили поддержку для x86).

Когда я клонировал этот драйвер из открытого кода и добавил эту поддержку, функциональность теперь работает нормально.

Это кажется недокументированным в MSDN.

Другие вопросы по тегам