Функция 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 затребовал указанный канал DMA в реестре для сетевого адаптера вызывающего объекта и настроил необходимые ресурсы для последующих операций DMA драйвером мини-порта. |
|
Попытка запросить канал DMA в реестре завершилась сбоем, возможно, из-за того, что другой драйвер уже утверждал этот канал для своего устройства. В этом случае NdisMRegisterDmaChannel регистрирует ошибку. |
|
NDIS не удалось выделить системные ресурсы, необходимые для поддержки операций DMA с помощью этого драйвера мини-порта. |
|
Тип автобуса или номер автобуса выходит за пределы диапазона, или водитель объявил сетевой адаптер как автобусный 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по