Обработка запросов перечисления

Диспетчер PnP может в любое время запросить у водителя автобуса перечисление его дочерних элементов. (Если вы знакомы с интерфейсами WDM, запросы на перечисление IRP_MN_QUERY_DEVICE_RELATIONS запросы с типом связи BusRelations.) Драйверы на основе платформы не видят эти запросы. Вместо этого платформа обрабатывает запросы, используя сведения, хранящиеся в дочернем списке устройства. Драйвер отвечает за актуальность дочернего списка, чтобы платформа предоставляла правильные сведения, когда диспетчер PnP запрашивает перечисление.

Драйверы шины на основе платформы, поддерживающие динамическое перечисление, могут получать запрос на повторную настройку определенного дочернего устройства. Такой запрос может быть отправлен драйвером функции дочернего устройства после того, как драйвер обнаружит сбой устройства. (Платформа поддерживает этот тип запроса путем реализации интерфейса REENUMERATE_SELF_INTERFACE_STANDARD , который является стандартным интерфейсом, определяемым драйвером , который определен в wdm.h.)

Драйверы шины на основе платформы, поддерживающие динамическое перечисление, могут предоставлять функцию обратного вызова EvtChildListDeviceReenumerated , которую платформа вызывает, когда получает запрос на повторную нумерацию от драйвера дочернего устройства. Если эта функция обратного вызова возвращает значение TRUE или не существует, платформа помечает дочернее устройство как несуществующее и сообщает диспетчеру PnP о том, что список дочерних водителей автобуса изменился. В результате диспетчер PnP запрашивает повторную обработку, а платформа вызывает функцию обратного вызова EvtChildListCreateDevice драйвера, которая создает новое PDO для дочернего устройства.