NDIS 微型端口驱动程序调用 NdisMRegisterInterruptEx 函数来注册中断。
语法
NDIS_STATUS NdisMRegisterInterruptEx(
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_HANDLE MiniportInterruptContext,
[in] PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
[out] PNDIS_HANDLE NdisInterruptHandle
);
参数
[in] MiniportAdapterHandle
传递给 NDIS 的微型端口适配器句柄 MiniportInitializeEx 函数。
[in] MiniportInterruptContext
指向上下文信息的块的指针。 微型端口驱动程序分配此内存来存储有关中断的信息。 NDIS 在后续调用中将上下文信息块传递给与中断关联的其他函数。
[in] MiniportInterruptCharacteristics
指向 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 微型端口驱动程序创建的结构。 驱动程序使用定义中断特征的处理程序入口点和配置参数初始化此结构。
[out] NdisInterruptHandle
指向 NDIS 句柄的指针。 NDIS 将新创建的中断对象的句柄写入 NdisInterruptHandle 指针所指定的地址。
返回值
NdisMRegisterInterruptEx 可以返回以下值之一:
返回代码 | 描述 |
---|---|
|
NDIS 初始化了中断对象,并在 NdisInterruptHandle 提供了有效的中断句柄。 NDIS 声明硬件资源,并设置它在发生中断时调用的函数。 |
|
NdisMRegisterInterruptEx 由于资源不足而失败。 |
|
由于上述列表中的中断对象以外的原因,初始化中断对象的尝试失败。 |
言论
如果微型端口驱动程序管理生成中断的 NIC,则必须从其 MiniportInitializeEx 函数调用 NdisMRegisterInterruptEx。
MiniportInitializeEx 必须调用在调用 NdisMRegisterInterruptEx之前, NdisMSetMiniportAttributes 函数。
微型端口驱动程序必须指定以下中断服务函数的入口点:
MiniportDisableInterruptEx如果 NIC 支持消息信号中断(MSI),微型端口驱动程序应为以下 MSI 服务函数指定入口点:
MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterrupt如果驱动程序为 MSI 指定入口点,则它还必须为非 MSI 中断服务函数指定入口点。 此外,如果 NdisMRegisterInterruptEx 返回NDIS_STATUS_SUCCESS,驱动程序必须检查 InterruptType 成员的值 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构,以确定授予的中断 NDIS 的类型。 如果 NDIS 无法授予 MSI 支持,它将授予对基于行的中断的支持。
当在 NIC 上启用中断时,驱动程序的 MiniportInterrupt(或 MiniportMessageInterrupt)函数可以在驱动程序调用 NdisMRegisterInterruptEx后随时调用,甚至在 NdisMRegisterInterruptEx 返回之前。 因此,驱动程序在准备好处理中断之前,不应调用 NdisMRegisterInterruptEx。
驱动程序调用 NdisMDeregisterInterruptEx 函数释放以前使用 NdisMRegisterInterruptEx分配的资源。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.0 及更高版本中受支持。 |
目标平台 | 普遍 |
标头 | ndis.h (包括 Ndis.h) |
库 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | Init_DeRegisterInterrupt(ndis)、Init_RegisterInterrupt(ndis)、Irql_Interrupt_Function(ndis)、NdisMDeregisterInterruptEx(ndis) |