Функция NetDmaRegisterProvider (netdma.h)
в Windows 8 и более поздних версий.
Синтаксис
NET_DMA_EXPORT NTSTATUS NetDmaRegisterProvider(
[in] PVOID ProviderContext,
[in] PVOID *pNetDmaProviderHandle,
[in] PNET_DMA_PROVIDER_CHARACTERISTICS ProviderCharacteristics
);
Параметры
[in] ProviderContext
Указатель на блок сведений о контексте, выделенном драйвером, в котором хранятся сведения о поставщике DMA. NetDMA передает сведения о контексте в последующих вызовах функций поставщикаXxx, которым требуется контекст поставщика DMA.
[in] pNetDmaProviderHandle
Указатель на значение, представляющее собой дескриптор, предоставляемый NetDmaRegisterProvider для идентификации поставщика DMA. Драйвер поставщика DMA передает этот дескриптор функциям NetDmaXxx , которым требуется дескриптор поставщика.
[in] ProviderCharacteristics
Указатель на NET_DMA_PROVIDER_CHARACTERISTICS структуры, определяющей характеристики поставщика DMA.
Возвращаемое значение
NetDmaRegisterProvider может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Операция выполнена успешно. |
|
Операция завершилась сбоем из-за нехватки ресурсов. |
|
Операция завершилась сбоем по неопределенным причинам. |
Комментарии
Драйверы поставщика DMA вызывают функцию NetDmaRegisterProvider для регистрации поставщика DMA. Драйверы поставщика DMA вызывают NetDmaRegisterProvider в своей процедуре AddDevice .
В подпрограмме AddDevice драйвер поставщика DMA вызывает функцию IoCreateDevice для создания функционального объекта устройства (FDO) и вставляет его в верхнюю часть стека устройств. Затем драйвер поставщика DMA вызывает NetDmaRegisterProvider для регистрации связанного поставщика DMA.
Драйвер поставщика DMA предоставляет NET_DMA_PROVIDER_CHARACTERISTICS структуру в параметре ProviderCharacteristicsобъекта NetDmaRegisterProvider. Структура NET_DMA_PROVIDER_CHARACTERISTICS определяет характеристики поставщика NetDMA, включая точки входа для функций ProviderXxx .
Драйвер поставщика DMA предоставляет указатель на блок сведений о контексте, выделенных драйвером, в параметре ProviderContextобъекта NetDmaRegisterProvider. В этой области контекста хранятся сведения о поставщике DMA. Интерфейс NetDMA передает сведения о контексте в последующих вызовах функций ProviderXxx, которым требуется контекст поставщика DMA.
Когда NetDmaRegisterProvider возвращается, он предоставляет дескриптор в расположении, указанном параметром pNetDmaProviderHandle . Интерфейс NetDMA назначает этот дескриптор для идентификации поставщика DMA. Драйвер поставщика DMA использует этот дескриптор во всех последующих вызовах функций NetDmaXxx , связанных с поставщиком DMA.
Если компьютер поддерживает MSI-X, интерфейс NetDMA в контексте функции NetDmaRegisterProvider вызывает драйвер поставщика DMA. Функция ProviderSetDmaChannelCpuAffinity для указания сходства ЦП прерывания для каждого канала DMA.
Если компьютер поддерживает MSI-X, драйвер поставщика DMA может указать сходство прерываний при обработке IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. После успешного возврата подпрограммы AddDevice диспетчер Plug and Play (PnP) отправляет IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP для поставщика DMA. Драйвер поставщика DMA должен попытаться выделить ресурсы прерываний MSI-X в соответствии с параметрами сходства, которые интерфейс NetDMA передал в ProviderSetDmaChannelCpuAffinity.
Чтобы отменить регистрацию поставщика DMA, драйвер поставщика DMA вызывает Функция NetDmaDeregisterProvider .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается для драйверов NetDMA 1.0 в Windows Vista. |
Целевая платформа | Универсальное |
Верхняя часть | netdma.h (включая Netdma.h) |
IRQL | PASSIVE_LEVEL |