функция обратного вызова DMA_CHANNEL_ALLOCATE_HANDLER (netdma.h)
в Windows 8 и более поздних версий.
Синтаксис
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 возвращает одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Операция выполнена успешно. |
|
Операция завершилась сбоем из-за нехватки ресурсов. |
|
Операция завершилась сбоем по неустановленным причинам. |
Комментарии
Интерфейс 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 |