функция обратного вызова 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 вызывает функцию поставщика DMA providerAllocateDmaChannel для выделения канала 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. |
целевая платформа | Виндоус |
заголовка | netdma.h (include Netdma.h) |
IRQL | <= DISPATCH_LEVEL |