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 在后续调用中将上下文信息传递给需要 DMA 提供程序上下文的 ProviderXxx 函数。
[in] pNetDmaProviderHandle
指向值的指针,该值是 NetDmaRegisterProvider 提供的用于标识 DMA 提供程序的句柄。 DMA 提供程序驱动程序将此句柄传递给需要提供程序句柄的 NetDmaXxx 函数。
[in] ProviderCharacteristics
指向 NET_DMA_PROVIDER_CHARACTERISTICS 结构,用于定义 DMA 提供程序的特征。
返回值
NetDmaRegisterProvider 可以返回以下值之一:
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
由于资源不足,操作失败。 |
|
操作因未指定的原因而失败。 |
注解
DMA 提供程序驱动程序调用 NetDmaRegisterProvider 函数来注册 DMA 提供程序。 DMA 提供程序驱动程序在其 AddDevice 例程中调用 NetDmaRegisterProvider。
在 AddDevice 例程中,DMA 提供程序驱动程序调用 IoCreateDevice 函数以 (FDO) 创建功能设备对象,并将其插入设备堆栈的顶部。 然后,DMA 提供程序驱动程序调用 NetDmaRegisterProvider 来注册关联的 DMA 提供程序。
DMA 提供程序驱动程序提供 NET_DMA_PROVIDER_CHARACTERISTICSNetDmaRegisterProvider 的 ProviderCharacteristics 参数的结构。 NET_DMA_PROVIDER_CHARACTERISTICS 结构指定 NetDMA 提供程序的特征,包括 ProviderXxx 函数的入口点。
DMA 提供程序驱动程序在 NetDmaRegisterProvider 的 ProviderContext 参数处提供指向驱动程序分配的上下文信息块的指针。 此上下文区域存储有关 DMA 提供程序的信息。 NetDMA 接口在后续调用中传递上下文 信息,这些 函数需要 DMA 提供程序上下文。
当 NetDmaRegisterProvider 返回时,它将在 pNetDmaProviderHandle 参数指定的位置提供句柄。 NetDMA 接口分配此句柄来标识 DMA 提供程序。 DMA 提供程序驱动程序在对 与 DMA 提供程序关联的 NetDmaXxx 函数的所有后续调用中使用此句柄。
如果计算机支持 MSI-X,则 NetDMA 接口在 NetDmaRegisterProvider 函数的上下文中调用 DMA 提供程序驱动程序的 ProviderSetDmaChannelCpuAffinity 函数,用于为每个 DMA 通道指定中断的 CPU 相关性。
如果计算机支持 MSI-X,则 DMA 提供程序驱动程序可以在处理 时指定中断相关性 IRP_MN_FILTER_RESOURCE_REQUIREMENTS Irp。 AddDevice 例程成功返回后,即插即用 (PnP) 管理器会发送 DMA 提供程序的IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP。 DMA 提供程序驱动程序必须尝试根据 NetDMA 接口传递给 ProviderSetDmaChannelCpuAffinity 的关联参数分配 MSI-X 中断资源。
若要取消注册 DMA 提供程序,DMA 提供程序驱动程序会调用 NetDmaDeregisterProvider 函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持 Windows Vista 中的 NetDMA 1.0 驱动程序。 |
目标平台 | 通用 |
标头 | netdma.h (包括 Netdma.h) |
IRQL | PASSIVE_LEVEL |