Поделиться через


Функция NdisMRegisterDmaChannel (ndis.h)

Функция NdisMRegisterDmaChannel утверждает системный канал контроллера DMA во время инициализации для операций DMA на подчиненной сетевой карте или на сетевом адаптере isa bus-master.

Синтаксис

NDIS_STATUS NdisMRegisterDmaChannel(
  [out] PNDIS_HANDLE          MiniportDmaHandle,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  UINT                  DmaChannel,
  [in]  BOOLEAN               Dma32BitAddresses,
  [in]  PNDIS_DMA_DESCRIPTION DmaDescription,
  [in]  ULONG                 MaximumLength
);

Параметры

[out] MiniportDmaHandle

Указатель на переменную, предоставляемую вызывающим объектом, в которой эта функция возвращает дескриптор, который драйвер мини-порта использует в последующих вызовах системных функций DMA NdisMXxx .

[in] MiniportAdapterHandle

Адаптер мини-порта обрабатывает входные данные вФункция MiniportInitializeEx.

[in] DmaChannel

Не обрабатывается. Задайте канал DMA , если таковой есть, в DmaDescription .

[in] Dma32BitAddresses

Логическое значение, равное TRUE , если сетевой адаптер содержит 32 адресные строки. В противном случае — FALSE.

[in] DmaDescription

Указатель на структуру NDIS_DMA_DESCRIPTION, заполненную вызывающим элементом. Эта структура определяется следующим образом:

typedef struct _NDIS_DMA_DESCRIPTION {
    BOOLEAN DemandMode;
    BOOLEAN AutoInitialize;
    BOOLEAN DmaChannelSpecified;
    DMA_WIDTH DmaWidth;
    DMA_SPEED DmaSpeed;
    ULONG DmaPort;
    ULONG DmaChannel;
} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;

Драйвер должен инициализировать эту структуру нулями, прежде чем заполнять следующие элементы:

DemandMode

Логическое значение, равное TRUE , если подчиненный сетевой адаптер использует режим требований контроллера DMA системы. В противном случае — FALSE.

AutoInitialize

Логическое значение, равное TRUE , если подчиненный сетевой адаптер использует режим автоматической инициализации контроллера DMA системы. В противном случае — FALSE.

DmaChannelSpecified

Логическое значение, равное TRUE , если DmaChannel имеет значение относительно шины системного канала контроллера DMA, используемого сетевой картой. В противном случае — FALSE.

DmaWidth

Ширина передачи для операций DMA, одна из width8Bits, Width16Bits или Width32Bits.

DmaSpeed

Скорость DMA в формате Compatible, TypeA, TypeB или TypeC.

DmaPort

Этот элемент относится к шине MCA, которая больше не поддерживается. Этот элемент должен быть равен нулю.

DmaChannel

Относительный номер канала контроллера DMA системы, используемого сетевой картой.

[in] MaximumLength

Максимальное число байтов, которое сетевой адаптер может передать за одну операцию DMA. Если сетевой адаптер имеет неограниченную пропускную способность, задайте для этого параметра значение -1.

Возвращаемое значение

NdisMRegisterDmaChannel может возвращать одно из следующих значений состояния:

Код возврата Описание
NDIS_STATUS_SUCCESS
NDIS затребовал указанный канал DMA в реестре для сетевого адаптера вызывающего объекта и настроил необходимые ресурсы для последующих операций DMA драйвером мини-порта.
NDIS_STATUS_RESOURCE_CONFLICT
Попытка запросить канал DMA в реестре завершилась сбоем, возможно, из-за того, что другой драйвер уже утверждал этот канал для своего устройства. В этом случае NdisMRegisterDmaChannel регистрирует ошибку.
NDIS_STATUS_RESOURCES
NDIS не удалось выделить системные ресурсы, необходимые для поддержки операций DMA с помощью этого драйвера мини-порта.
NDIS_STATUS_FAILURE
Тип автобуса или номер автобуса выходит за пределы диапазона, или водитель объявил сетевой адаптер как автобусный master на автобусе ввода-вывода, отличном от ISA.

Комментарии

Драйвер подчиненного сетевого адаптера DMA должен вызывать NdisMRegisterDmaChannel из функции MiniportInitializeEx , чтобы зарезервировать системные ресурсы для последующих операций DMA и зафиксировать их в реестре.

Драйвер сетевого адаптера isa bus-master также должен вызвать NdisMRegisterDmaChannel из MiniportInitializeEx, чтобы запросить системный канал контроллера DMA для сетевого адаптера в реестре.

MiniportInitializeEx должен вызывать Функция NdisMSetMiniportAttributes перед вызовом NdisMRegisterDmaChannel.

MiniportInitializeEx получил относительные значения шины, передаваемые в NdisMRegisterDmaChannel из реестра или путем вызова функции NdisMGetBusData .

Если такой драйвер не может выделить системные ресурсы DMA, необходимые его устройству, MiniportInitializeEx должен освободить все ресурсы, уже выделенные для сетевого адаптера, а затем завершиться сбоем инициализации для этого сетевого адаптера.

Если драйвер успешно регистрирует канал DMA, он должен позже вызватьФункция NdisMDeregisterDmaChannel для отмены регистрации канала DMA.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisMRegisterDmaChannel (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisMRegisterDmaChannel (NDIS 5.1)) в Windows XP.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL PASSIVE_LEVEL
Правила соответствия DDI Irql_Miniport_Driver_Function(ndis)

См. также раздел

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes