Обработка кодов DIF
Примечание
Функции, описанные в этом разделе, не поддерживаются, а содержащие их пакеты драйверов больше не будут получать подпись Майкрософт. См . раздел Использование универсального INF-файла.
Приложения установки устройств отправляют коды функций установки устройств (коды DIF) установщикам, вызывая SetupDiCallClassInstaller. Эта функция, в свою очередь, вызывает функцию точки входа установщика. Описание точек входа установщика см. в следующих разделах:
Интерфейс совместного установщика
Справочная страница для каждого кода DIF содержит следующие разделы:
При отправке
Описывает типичные случаи, когда и причины, по которым приложение установки устройства отправляет этот запрос DIF.
Кто обрабатывает
Указывает, каким установщикам разрешено обрабатывать этот запрос. К установщикам относятся установщики классов, совместное установщики классов (совместное установщики для всего класса установки) и совместные установщики устройств (совместные установщики для конкретных устройств).
Входные данные установщика
Помимо кода DIF, SetupDiCallClassInstaller предоставляет дополнительные сведения, относящиеся к конкретному запросу. Дополнительные сведения о данных, предоставляемых с каждым запросом, см. на странице справочника по каждому коду DIF. В следующем списке содержится общее описание дополнительных входных параметров и перечислены функции установки устройства (функции SetupDiXxx ), которые установщики могут вызывать для обработки параметров:
DeviceInfoSet
Предоставляет дескриптор набору сведений об устройстве.
Дескриптор непрозрачный. Используйте дескриптор, например, для идентификации сведений об устройстве, заданных в вызовах функций SetupDiXxx .
DeviceInfoSet может иметь связанный класс настройки устройства. Если да, вызовите SetupDiGetDeviceInfoListClass , чтобы получить GUID класса.
DeviceInfoData
При необходимости предоставляет указатель на структуру SP_DEVINFO_DATA , которая идентифицирует устройство в наборе сведений об устройстве.
Параметры установки устройства
Эти косвенные параметры предоставляют сведения об установке устройства в SP_DEVINSTALL_PARAMS структуре. Если deviceInfoData не имеет значение NULL, с DeviceInfoData связаны параметры установки устройства. Если DeviceInfoData имеет значение NULL, параметры установки устройства связаны с DeviceInfoSet.
Вызовите SetupDiGetDeviceInstallParams , чтобы получить параметры установки устройства.
Параметры установки класса
Необязательные косвенные параметры относятся к конкретному запросу DIF. По сути, это "параметры запроса DIF". Например, параметры установки класса для запроса на установку DIF_REMOVE содержатся в структуре SP_REMOVEDEVICE_PARAMS.
Каждая структура SP_XXX_PARAMS начинается с структуры SP_CLASSINSTALL_HEADER фиксированного размера.
Вызовите Метод SetupDiGetClassInstallParams , чтобы получить параметры установки класса.
Если запрос DIF содержит параметры установки класса, существует набор параметров, связанных с DeviceInfoSet , и другой набор параметров, связанных с DeviceInfoData (если запрос DIF указывает DeviceInfoData). SetupDiGetClassInstallParams возвращает наиболее конкретные доступные параметры.
Контексте
У совместного установщика есть необязательный параметр контекста.
Выходные данные установщика
Описывает выходные данные, ожидаемые для этого кода DIF.
Если установщик изменяет параметры установки устройства, установщик должен вызвать SetupDiSetDeviceInstallParams , чтобы применить изменения перед возвратом. Аналогичным образом, если установщик изменяет параметры установки класса для кода DIF, установщик должен вызвать SetupDiSetClassInstallParams.
Возвращаемое значение установщика
Указывает соответствующие возвращаемые значения для кода DIF. Дополнительные сведения о возвращаемых значениях см. на следующем рисунке.
Обработчик кода DIF по умолчанию
Указывает функцию SetupDiXxx , которая выполняет определенные системой операции по умолчанию для кода DIF. Не все коды DIF имеют обработчик по умолчанию. Если установщик совместного установщика или установщик класса не предпринимает действий, чтобы предотвратить вызов обработчика по умолчанию, SetupDiCallClassInstaller вызывает обработчик по умолчанию для кода DIF после вызова установщика класса (но перед вызовом всех соустановок, зарегистрированных для постобработки).
Если установщик класса успешно обрабатывает код DIF и SetupDiCallClassInstaller должен впоследствии вызвать обработчик по умолчанию, установщик класса возвращает ERROR_DI_DO_DEFAULT.
Если установщик класса успешно обрабатывает код DIF, включая прямой вызов обработчика по умолчанию, установщик класса должен вернуть NO_ERROR и SetupDiCallClassInstaller впоследствии не вызовет обработчик по умолчанию. Обратите внимание, что установщик класса может напрямую вызывать обработчик по умолчанию, но установщик класса никогда не должен пытаться заменять операции обработчика по умолчанию.
Если установщик класса обнаруживает ошибку, установщик должен вернуть соответствующий код ошибки Win32, и SetupDiCallClassInstaller впоследствии не вызовет обработчик по умолчанию.
Совместное установщики не должны вызывать обработчики кода DIF по умолчанию.
Операция установщика
Описание типичных действий, которые может предпринять установщик для обработки запроса DIF.
См. также
Список источников связанной информации.
На следующем рисунке показана последовательность событий в SetupDiCallClassInstaller для обработки кода DIF.
Операционная система выполняет некоторые операции для каждого кода DIF. Совместно предоставляемые поставщиком установщики и установщики классов могут участвовать в действиях установки. Обратите внимание, что SetupDiCallClassInstaller вызывает соустановщики, зарегистрированные для постобработки, даже если код DIF завершается ошибкой.