Поделиться через


Функция SetupDiCallClassInstaller (setupapi.h)

Функция SetupDiCallClassInstaller вызывает соответствующий установщик класса и все зарегистрированные совместные установщики с указанным запросом на установку (код DIF).

Синтаксис

WINSETUPAPI BOOL SetupDiCallClassInstaller(
  [in]           DI_FUNCTION      InstallFunction,
  [in]           HDEVINFO         DeviceInfoSet,
  [in, optional] PSP_DEVINFO_DATA DeviceInfoData
);

Параметры

[in] InstallFunction

Запрос на установку устройства (ЗАПРОС DIF), который необходимо передать совместно установщикам и установщику класса. Коды DIF имеют формат DIF_XXX и определены в Setupapi.h. Дополнительные сведения см. в разделе Коды функций установки устройств .

Примечание Для некоторых запросов DIF вызывающий объект должен быть членом группы администраторов. Для таких запросов DIF это требование указано на странице справки для связанного обработчика по умолчанию.
 

[in] DeviceInfoSet

Дескриптор набора сведений об устройстве для локального компьютера. Этот набор содержит элемент установки устройства, который представляет устройство, для которого выполняется указанная функция установки.

[in, optional] DeviceInfoData

Указатель на структуру SP_DEVINFO_DATA , задающую элемент сведений об устройстве в DeviceInfoSet , представляющий устройство, для которого выполняется указанная функция установки. Этот параметр является необязательным и может иметь значение NULL. Если указан этот параметр, SetupDiCallClassInstaller выполняет указанную функцию для элемента DeviceInfoData . Если DeviceInfoData имеет значение NULL, SetupDiCallClassInstaller вызывает установщики для класса установки, связанного с DeviceInfoSet.

Возвращаемое значение

Функция возвращает ЗНАЧЕНИЕ TRUE , если оно выполнено успешно. В противном случае возвращается значение FALSE , а зарегистрированная ошибка может быть получена путем вызова Метода GetLastError.

Когда GetLastError возвращает ERROR_IN_WOW64, это означает, что вызывающее приложение является 32-разрядным приложением, которое пытается выполнить в 64-разрядной среде, что запрещено.

Комментарии

SetupDiCallClassInstaller вызывает установщик класса и любые другие установщики, зарегистрированные для устройства или класса установки устройства. Эта функция загружает установщики, если они еще не загружены. Функция также вызывает обработчик по умолчанию для запроса DIF, если имеется обработчик по умолчанию и если установщики возвращают состояние, указывающее, что обработчик по умолчанию должен быть вызван.

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

После того как SetupDiCallClassInstaller возвращает значение TRUE, приложение установки устройства должно вызвать SetupDiGetDeviceInstallParams , чтобы получить структуру SP_DEVINSTALL_PARAMS . Если установлен флаг DI_NEEDREBOOT или DI_NEEDRESTART структуры, вызывающий объект должен предложить пользователю перезапустить систему. Например, вызывающий объект может сделать это, вызвав SetupPromptReboot.

Однако имейте в виду, что приложение установки устройства должно запрашивать перезагрузку системы не более одного раза. Поэтому любое приложение установки устройства, которое создает несколько вызовов SetupDiCallClassInstaller и SetupDiGetDeviceInstallParams , должно сохранять DI_NEEDREBOOT и DI_NEEDRESTART флаги после каждого вызова. Однако он должен запрашивать пользователя только после того, как будет возвращен последний вызов.

В ответ на код DIF, предоставленный SetupDiCallClassInstaller, установщики классов и совместное установщики могут выполнять операции, требующие перезапуска системы. В таких ситуациях установщик или совместный установщик должны выполнять следующие действия.

  1. Вызовите метод SetupDiGetDeviceInstallParams , чтобы получить структуру SP_DEVINSTALL_PARAMS .
  2. Установите флаг DI_NEEDREBOOT или DI_NEEDRESTART в элементе Flags структуры.
  3. Вызовите метод SetupDiSetDeviceInstallParams, указав обновленную структуру SP_DEVINSTALL_PARAMS , чтобы сохранить измененный элемент Flags .
После возврата SetupDiCallClassInstaller приложение установки устройства, которое его вызывало, должно вызвать SetupDiGetDeviceInstallParams, проверка флаги и при необходимости запросить перезагрузку.

Набор сведений об устройстве, указанный в DeviceInfoSet , должен содержать только элементы для устройств на локальном компьютере.

Сведения о проектировании и работе совместного установщика см. в статье Создание совместного установщика.

Требования

Требование Значение
Минимальная версия клиента Доступно в Microsoft Windows 2000 и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть setupapi.h (включая Setupapi.h)
Библиотека Setupapi.lib
DLL Setupapi.dll
Набор API ext-ms-win-setupapi-classinstallers-l1-1-0 (представлено в Windows 8)

См. также раздел

SP_DEVINFO_DATA