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


Макрос NdisMSetupDmaTransfer (ndis.h)

Функция NdisMSetupDmaTransfer настраивает контроллер DMA узла для передачи DMA.

Синтаксис

void NdisMSetupDmaTransfer(
   _S,
   _H,
   _B,
   _O,
   _L,
   _M_
);

Параметры

_S

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

NDIS_STATUS_SUCCESS

Контроллер DMA настроен для передачи указанных данных, которые были удалены на устройство или с устройства для обеспечения целостности данных.

NDIS_STATUS_RESOURCES

Попытка настроить контроллер DMA для передачи завершилась сбоем либо из-за того, что канал, назначенный MiniportDmaHandle в настоящее время использует передачу данных или так как заданная длина недопустима.

_H

Дескриптор DMA, возвращаемый функцией NdisMRegisterDmaChannel во время инициализации.

_B

Указатель на дескриптор буфера, сопоставляющий диапазон памяти узла, из которого будут передаваться данные.

_O

Смещение байтов в сопоставленный буфер, с которого должна начинаться передача. Ноль указывает, что передача должна начинаться с начального байта диапазона, указанного в буфере.

_L

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

_M_

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

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

Никакой

Замечания

Драйверы подчиненных сетевых адаптеров DMA вызывают NdisMSetupDmaTransfer в ответ на входящие запросы на отправку, для которых драйвер задает WriteToDeviceTRUE. Они задают WriteToDevice значение false false при передаче данных из сетевой карты в память узла.

Вызывающий объект NdisMSetupDmaTransfer предоставляет дескриптор буфера, сопоставляющий диапазон памяти узла, который является целевым объектом передачи или содержит данные для операции скачивания с узла на сетевой адаптер. Чтобы указать размер передачи, соответствующий ограничениям DMA сетевого адаптера, вызывающий объект может при необходимости настроить подранг для передачи с помощью параметра Offset и Length.

Вызывающий объект должен предоставить дескриптор буфера, указывающий диапазон узлов, в который будут передаваться полученные данные из сетевой карты, когда writeToDevicefalse. В противном случае дескриптор буфера в буфера был привязан к входным данным дескриптора пакета к драйверу минипорта. функция MiniportSendNetBufferLists.

Чтобы повысить производительность небольших запросов передачи, таких как запрос на отправку менее 256 байтов, мини-драйвер может скопировать данные пакета в внутренний промежуточный буфер и передать сопоставление дескриптора буфера, выделенного драйвером, в NdisMSetupDmaTransfer.

При возвращении из NdisMSetupDmaTransferконтроллер DMA узла был запрограммирован для передачи. Затем минипорт-драйвер программит сетевой адаптер для операции передачи.

После завершения передачи драйвер минипорта должен вызвать функции NdisMCompleteDmaTransfer.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. NdisMSetupDmaTransfer (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisMSetupDmaTransfer (NDIS 5.1)) в Windows XP.
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_Miniport_Driver_Function(ndis)

См. также

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel