NDIS_DEVICE_OBJECT_ATTRIBUTES 结构 (ndis.h)

NDIS_DEVICE_OBJECT_ATTRIBUTES结构定义 NDIS 筛选器或微型端口驱动程序可以传递给 NdisRegisterDeviceEx 函数的设备属性。

语法

typedef struct _NDIS_DEVICE_OBJECT_ATTRIBUTES {
  NDIS_OBJECT_HEADER Header;
  PNDIS_STRING       DeviceName;
  PNDIS_STRING       SymbolicName;
  PDRIVER_DISPATCH   *MajorFunctions;
  ULONG              ExtensionSize;
  PCUNICODE_STRING   DefaultSDDLString;
  LPCGUID            DeviceClassGuid;
} NDIS_DEVICE_OBJECT_ATTRIBUTES, *PNDIS_DEVICE_OBJECT_ATTRIBUTES;

成员

Header

NDIS_DEVICE_OBJECT_ATTRIBUTES 结构的NDIS_OBJECT_HEADER结构。 将 Header 指定的结构的 Type 成员设置为NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES,将 Revision 成员设置为NDIS_DEVICE_OBJECT_ATTRIBUTES_REVISION_1,并将 Size 成员设置为NDIS_SIZEOF_DEVICE_OBJECT_ATTRIBUTES_REVISION_1。

DeviceName

指向类型为 NDIS_STRING 的变量的指针,该变量包含以 null 结尾的 Unicode 字符串,该字符串命名设备对象。 字符串必须是完整路径名称,例如 \Device\DeviceName。 对于 Microsoft Windows 2000 及更高版本,NDIS 将NDIS_STRING类型定义为 UNICODE_STRING 类型。

SymbolicName

指向类型为 NDIS_STRING 的变量的指针,该变量包含 Unicode 字符串,该字符串是正在注册的设备的 Win32 可见名称。 通常, SymbolicName 采用以下格式:\DosDevices\SymbolicName

MajorFunctions

指向设备驱动程序调度例程的一个或多个入口点数组的指针。 驱动程序必须设置与驱动程序为设备对象处理的IRP_MJ_XXX 代码数相同的单独调度入口点数。 每个调度例程的声明如下:

NTSTATUS
  (*PDRIVER_DISPATCH) (
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP  Irp
);

调度例程具有以下参数:

DeviceObject

调度例程的设备对象。

Irp

调度例程的 IRP。

驱动程序不得为 PnP 或电源管理处理程序提供入口点,因为创建的设备对象不适用于物理设备,因此不会接收 PnP 或电源管理 IRP。

ExtensionSize

要为设备对象的设备扩展分配的驱动程序确定的字节数。 设备扩展的内部结构由驱动程序定义。

DefaultSDDLString

设备对象的默认安全设置的字符串表示形式。 应用于设备对象的安全性派生自此字符串。

安全设置是在 SDDL) 安全描述符定义语言 (子集中指定的。 还提供了一组预定义的常量 (SDDL_DEVOBJ_ XXX) 。 有关详细信息,请参阅 保护设备对象

DeviceClassGuid

为 NDIS 保留。 将此成员设置为 NULL

注解

NDIS 筛选器或微型端口驱动程序可以调用 NdisRegisterDeviceEx 函数来注册设备。 若要指定设备属性,驱动程序分配并初始化NDIS_DEVICE_OBJECT_ATTRIBUTES结构,并将该结构传递给 NdisRegisterDeviceExDeviceObjectAttributes 参数。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

NDIS_OBJECT_HEADER

NdisRegisterDeviceEx

UNICODE_STRING