NdisRegisterDeviceEx 函数 (ndis.h)

NdisRegisterDeviceEx 函数创建基于指定属性的设备对象。

语法

NDIS_STATUS NdisRegisterDeviceEx(
  [in]  NDIS_HANDLE                    NdisHandle,
  [in]  PNDIS_DEVICE_OBJECT_ATTRIBUTES DeviceObjectAttributes,
  [out] PDEVICE_OBJECT                 *pDeviceObject,
  [out] PNDIS_HANDLE                   NdisDeviceHandle
);

参数

[in] NdisHandle

调用方通过调用 获取的微型端口驱动程序句柄或筛选器驱动程序句柄 NdisMRegisterMiniportDriver 函数或 NdisFRegisterFilterDriver 函数分别。

[in] DeviceObjectAttributes

指向 的指针 NDIS_DEVICE_OBJECT_ATTRIBUTES 结构,其中包含新设备的属性。

[out] pDeviceObject

一个指针,指向指向新创建的 DEVICE_OBJECT 结构的指针(如果调用成功)。 如果调用失败, pDeviceObject 设置为指向 NULL

[out] NdisDeviceHandle

指向调用方提供的变量的指针,如果成功,此函数将返回设备对象的句柄。 此句柄是驱动程序随后调用的 NdisDeregisterDeviceEx 函数的必需参数。

返回值

NdisRegisterDeviceEx 返回以下状态值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
NdisRegisterDeviceEx 已成功注册设备。
NDIS_STATUS_NOT_SUPPORTED
调用方不是 NDIS 驱动程序。
NDIS_STATUS_XXX 或 NTSTATUS_XXX
驱动程序尝试注册设备失败。 通常,此类错误状态是从 NdisXxx 函数或内核模式支持例程传播的。

注解

微型端口驱动程序和筛选器驱动程序可以调用 NdisRegisterDeviceEx 来注册虚拟设备。

注意NDIS 驱动程序不得修改 NdisRegisterDeviceEx 创建的 DEVICE_OBJECT 结构的 DeviceExtension 成员。
 
如果 NDIS 驱动程序需要空间来存储设备对象中的上下文信息,则驱动程序可以为 中的 ExtensionSize 成员传递非零值DeviceObjectAttributes 参数处NDIS_DEVICE_OBJECT_ATTRIBUTES结构。 在这种情况下,NDIS 为驱动程序分配扩展,并且驱动程序可以调用 NdisGetDeviceReservedExtension 函数,用于获取指向扩展的指针。

当不再需要设备时,驱动程序随后必须调用 NdisDeregisterDeviceEx 函数。 如果 NdisRegisterDeviceEx 分配了扩展, 则 NdisDeregisterDeviceEx 释放该扩展。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 Irql_Miscellaneous_Function (ndis)

另请参阅

DEVICE_OBJECT

NDIS_DEVICE_OBJECT_ATTRIBUTES

NdisDeregisterDeviceEx

NdisFRegisterFilterDriver

NdisGetDeviceReservedExtension

NdisMRegisterMiniportDriver