функция обратного вызова DMA_START_HANDLER (netdma.h)

Примечание Интерфейс NetDMA не поддерживается.

в Windows 8 и более поздних версий.

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

Синтаксис

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

Параметры

[in] ProviderChannelContext

Указатель, определяющий контекстную область канала DMA. Поставщик DMA вернул этот дескриптор в NetDMA в расположении, указанном в параметре pProviderChannelContext объекта Функция ProviderAllocateDmaChannel .

[in] DescriptorVirtualAddress

Указатель на виртуальный адрес первого NET_DMA_DESCRIPTOR структуры в связанном списке дескрипторов DMA. Соответствующий физический адрес указывается в параметре DescriptorPhysicalAddress .

[in] DescriptorPhysicalAddress

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

[in] DescriptorCount

Количество дескрипторов DMA в DescriptorVirtualAddress .

Примечание Драйверы поставщика NetDMA, предшествующие NetDMA версии 2.0, могут игнорировать параметр DescriptorCount . Для NetDMA 2.0 и более поздних версий этот параметр представляет собой количество дескрипторов в операции DMA.
 

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

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

Код возврата Описание
STATUS_SUCCESS
Операция выполнена успешно.
STATUS_RESOURCES
Операция завершилась сбоем из-за нехватки ресурсов.
STATUS_UNSUCCESSFUL
Операция завершилась сбоем по неустановленным причинам.

Комментарии

Интерфейс NetDMA вызывает функцию ProviderStartDma драйвера поставщика DMA для запуска передачи DMA. Интерфейс NetDMA может вызывать ProviderStartDma в любое время после выделения канала DMA. Интерфейс NetDMA должен вызывать ProviderStartDma после вызова ProviderAbortDma, ProviderResetChannel или Функция ProviderAllocateDmaChannel для канала DMA.

Источником передачи DMA является связанный список дескрипторов DMA. Элемент NextDescriptor структуры NET_DMA_DESCRIPTOR в параметре DescriptorVirtualAddress содержит физический адрес следующей структуры NET_DMA_DESCRIPTOR в связанном списке.

Примечание В NetDMA 2.0 и более поздних версиях связанный список дескрипторов не завершается со значением NULL. Элемент NextDescriptor в последнем дескрипторе в связанном списке указывает физический адрес структуры NET_DMA_DESCRIPTOR , которая будет использоваться при последующем вызове функции ProviderAppendDma . Драйвер поставщика NetDMA 2.0 может кэшировать адрес в NextDescriptor и использовать этот адрес в начале связанного списка для следующей операции добавления.
 
Чтобы выполнить операцию запуска, поставщик DMA должен игнорировать существующий список дескрипторов DMA после завершения обработки текущего дескриптора. Поставщик DMA должен игнорировать элемент NextDescriptor в текущей структуре NET_DMA_DESCRIPTOR и загрузить дескриптор, заданный ProviderStartDma .

После того как ProviderStartDma запустит начальную передачу DMA, интерфейс NetDMA может вызвать функцию ProviderAppendDma для добавления дополнительных данных к передаче.

NetDMA вызывает ProviderStartDma по адресу IRQL <= DISPATCH_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NetDMA 2.0 в Windows Server 2008. Поддерживается для драйверов NetDMA 1.1 в Windows Server 2008. Поддерживается для драйверов NetDMA 1.0 в Windows Server 2008 и Windows Vista.
Целевая платформа Windows
Header netdma.h (включая Netdma.h)
IRQL <= DISPATCH_LEVEL

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

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel