Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 утверждал указанный канал DMA в реестре для сетевого адаптера вызывающего абонента и настраивал необходимые ресурсы для последующих операций DMA с помощью мини-порта. |
|
Попытка утверждения канала DMA в реестре завершилась ошибкой, возможно, потому что другой драйвер уже утверждал, что канал для своего устройства. NdisMRegisterDmaChannel регистрирует ошибку, если это происходит. |
|
NDIS не удалось выделить системные ресурсы, необходимые для поддержки операций DMA с помощью этого мини-драйвера. |
|
Либо тип автобуса, либо номер автобуса выходит за пределы диапазона, либо водитель объявил сетевой адаптер главной шиной на автобусе ввода-вывода, отличном от ISA. |
Замечания
Драйвер подчиненного сетевого адаптера DMA должен вызывать NdisMRegisterDmaChannel из функции MiniportInitializeEx для резервирования системных ресурсов для последующих операций DMA и утверждения их в реестре.
Драйвер главного сетевого адаптера ISA также должен вызывать NdisMRegisterDmaChannel из MiniportInitializeEx для утверждения канала контроллера DMA системы для сетевого адаптера в реестре.
MiniportInitializeEx должен вызывать функции NdisMSetMiniportAttributes перед вызовом NdisMRegisterDmaChannel.
MiniportInitializeEx получили относительные значения шины, передаваемые NdisMRegisterDmaChannel из реестра или вызвав функцию NdisMGetBusData.
Если такой драйвер не может выделить ресурсы DMA системы, необходимые его устройству, MiniportInitializeEx должен освободить все ресурсы, уже выделенные для сетевого адаптера, а затем завершить инициализацию для этой сетевой карты.
Если драйвер успешно регистрирует канал DMA, он должен позже вызвать функцию NdisMDeregisterDmaChannel для отмены регистрации канала DMA.