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

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

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

 
Функция ProviderAllocateDmaChannel выделяет канал DMA.

Синтаксис

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

NTSTATUS DmaChannelAllocateHandler(
  [in]  PVOID ProviderContext,
  [in]  PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
  [in]  PVOID NetDmaChannelHandle,
  [out] PVOID *pProviderChannelContext
)
{...}

Параметры

[in] ProviderContext

Указатель, определяющий контекстную область поставщика DMA. Драйвер поставщика DMA передает этот дескриптор в интерфейс NetDMA при вызове Функция NetDmaRegisterProvider .

[in] ChannelParameters

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

[in] NetDmaChannelHandle

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

[out] pProviderChannelContext

Указатель на значение, которое является указателем на область контекста поставщика DMA для канала DMA. Драйвер поставщика DMA выделяет эту область контекста перед возвратом из ProviderAllocateDmaChannel. NetDMA передает указатель области контекста на функции ProviderXxx, которым требуется контекст канала поставщика.

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

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

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

Комментарии

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

Драйвер поставщика DMA пытается выделить канал DMA с прерыванием сопоставления ЦП, соответствующего биту, указанному в элементе ProcessorAffinityMask NET_DMA_CHANNEL_PARAMETERS структуру в параметре ChannelParameters . Если MSI-X не поддерживается или msi-X поддерживается, но канал DMA с соответствующим сходством ЦП прерываний недоступен, драйвер поставщика DMA выделяет любой доступный канал DMA и вызывает подпрограмму KeSetTargetProcessorDpc , чтобы задать целевой ЦП прерывания DPC в соответствии с одним из указанных битов маски сходства.

Драйвер поставщика DMA всегда возвращает номер ЦП, связанный с DPC прерывания для канала DMA, в интерфейс NetDMA в элементе CpuNumber структуры NET_DMA_CHANNEL_PARAMETERS.

Драйвер поставщика DMA предоставляет указатель на блок сведений о контексте, выделенных драйвером, в параметре pProviderChannelContextобъекта ProviderAllocateDmaChannel. В этой области контекста хранятся сведения о канале DMA. Интерфейс NetDMA передает сведения о контексте в последующих вызовах функций ProviderXxx, которым требуется контекст канала DMA.

Когда интерфейс NetDMA вызывает ProviderAllocateDmaChannel, он предоставляет дескриптор с параметром NetDmaChannelHandle . Драйвер поставщика DMA использует этот дескриптор в последующих вызовах функций NetDmaXxx , связанных с каналом DMA.

Интерфейс NetDMA вызывает функцию ProviderFreeDmaChannel , чтобы освободить ранее выделенный канал DMA.

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

Требования

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

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

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel