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


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

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

Синтаксис

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

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

[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.

Автоинициализация

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

DmaChannelSpecified

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

DmaWidth

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

DmaSpeed

Скорость DMA как одна из совместимых , TypeA, TypeBили TypeC 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
Либо тип автобуса, либо номер автобуса выходит за пределы диапазона, либо водитель объявил сетевой адаптер главной шиной на автобусе ввода-вывода, отличном от ISA.

Замечания

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

Драйвер главного сетевого адаптера ISA также должен вызывать 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 (include Ndis.h)
библиотеки Ndis.lib
IRQL PASSIVE_LEVEL
правил соответствия DDI Irql_Miniport_Driver_Function(ndis)

См. также

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes