初始化微型端口适配器

当网络设备可用时,如果尚未加载,系统将加载所需的 NDIS 微型端口驱动程序。 随后,即插即用(PnP)管理器发送 NDIS 即插即用 IRP 来启动设备。 NDIS 调用微型端口驱动程序的 MiniportInitializeEx 函数来初始化用于网络 I/O作的适配器。 NDIS 可以在初始化驱动程序后随时调用 MiniportInitializeEx。 有关微型端口驱动程序初始化的详细信息,请参阅 初始化微型端口驱动程序

MiniportInitializeEx 返回之前,NDIS 不会提交要初始化的适配器的请求。 适配器处于初始化状态。

微型端口驱动程序通常在 MiniportInitializeEx中执行以下任务:

  1. 获取适配器的配置信息。

  2. 获取有关适配器的硬件资源的信息。

  3. 调用 NdisMSetMiniportAttributes,并提供与适配器关联的以下属性:

    • 指向驱动程序分配的上下文区域的指针。
    • 相应的属性标志。
    • 调用其 MiniportCheckForHangEx 函数的超时间隔。
    • 接口类型。
  4. 初始化特定于适配器的资源。

微型端口驱动程序指定 NDIS_MINIPORT_ADAPTER_ATTRIBUTES 结构中的适配器属性,MiniportInitializeEx 传递给 NdisMSetMiniportAttributes

通常,MiniportInitializeEx 按以下顺序分配特定于适配器的资源:

  1. 非分页池内存。

  2. NET_BUFFERNET_BUFFER_LIST 池(请参阅 微型端口驱动程序发送和接收操作)。

  3. 自旋锁。

  4. 定时器。

  5. IO 端口。

  6. DMA (请参阅分散/聚合 DMA)。

  7. 共享内存。

  8. 中断(请参阅管理中断)。

MiniportInitializeEx 成功返回后,适配器处于暂停状态。 NDIS 可以调用 MiniportRestart 函数将适配器转换为“正在运行”状态。 有关详细信息,请参阅 启动微型端口适配器

如果 MiniportInitializeEx 返回NDIS_STATUS_SUCCESS,驱动程序应释放 MiniportHaltEx 函数中适配器的所有资源。 有关详细信息,请参阅停止微型端口适配器

如果驱动程序返回 NDIS_STATUS_SUCCESS,则必须调用 NdisMSetMiniportAttributes,并在 NDIS_MINIPORT_ADAPTER_ATTRIBUTES 结构中设置 GeneralAttributes

如果 MiniportInitializeEx 失败,MiniportInitializeEx 必须释放它返回之前分配的所有资源,适配器将返回到“已停止”状态。

停止微型端口适配器

微型端口适配器状态和操作

微型端口驱动程序发送和接收操作

分散/聚合 DMA

启动微型端口适配器