CM_NOTIFY_FILTER结构 (cfgmgr32.h)

设备通知筛选器结构

语法

typedef struct _CM_NOTIFY_FILTER {
  DWORD                 cbSize;
  DWORD                 Flags;
  CM_NOTIFY_FILTER_TYPE FilterType;
  DWORD                 Reserved;
  union {
    struct {
      GUID ClassGuid;
    } DeviceInterface;
    struct {
      HANDLE hTarget;
    } DeviceHandle;
    struct {
      WCHAR InstanceId[MAX_DEVICE_ID_LEN];
    } DeviceInstance;
  } u;
} CM_NOTIFY_FILTER, *PCM_NOTIFY_FILTER;

成员

cbSize

结构的大小。

Flags

以下标志的零个或多个组合:

CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES

注册以接收所有设备接口类的 PnP 事件的通知。 pFilter-u.DeviceInterface.ClassGuid> 的内存必须为零。 请勿将此标志用于CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES。 仅当 pFilter-FilterType> CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE时,此标志才有效。

CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES

注册以接收所有设备的 PnP 事件的通知。 pFilter-u.DeviceInstance.InstanceId> 必须是空字符串。 请勿将此标志用于CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES。 仅当 pFilter-FilterType> CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE时,此标志才有效。

FilterType

必须是以下值之一:

CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE

注册设备接口事件的通知。 应使用要接收通知的设备接口类的 GUID 填充 pFilter-u.DeviceInterface.ClassGuid>

CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE

注册设备句柄事件的通知。 pFilter-u.DeviceHandle.hTarget> 必须使用要接收通知的设备句柄填充。 此句柄在 CM_Register_Notification 调用期间必须保持设备的有效句柄。 但是,CM_Register_Notification返回后,可以关闭句柄,而不会影响注册接收通知的能力。

CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE

注册设备实例事件的通知。 应使用要接收通知的设备的设备实例 ID 填充 pFilter-u.DeviceInstance.InstanceId>

Reserved

设置为 0。

u

包含要接收其通知的设备相关信息的联合。

u.DeviceInterface

u.DeviceInterface.ClassGuid

要接收通知的设备接口类的 GUID。

u.DeviceHandle

要接收通知的设备句柄。

u.DeviceHandle.hTarget

u.DeviceInstance

要接收通知的设备的设备实例 ID。

u.DeviceInstance.InstanceId[MAX_DEVICE_ID_LEN]

注解

当驱动程序调用 CM_Register_Notification 函数时,它会提供指向 pFilter 参数中CM_NOTIFY_FILTER结构的指针。

要求

要求
Header cfgmgr32.h

另请参阅

CM_NOTIFY_ACTION

CM_Register_Notification