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


функция обратного вызова 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 до версии 2.0 NetDMA могут игнорировать параметр DescriptorCount. Для netDMA 2.0 и более поздних версий этот параметр является числом дескрипторов в операции DMA.
 

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

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

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

Замечания

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

Источником передачи DMA является связанный список дескрипторов DMA. Элемент NextDescriptor структуры NET_DMA_DESCRIPTOR в параметре DescriptorVirtualAddres s содержит физический адрес следующей структуры 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.
целевая платформа Виндоус
заголовка netdma.h (include Netdma.h)
IRQL <= DISPATCH_LEVEL

См. также

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

providerAppendDma

ProviderResetChannel