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


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

[Эта функция доступна для использования в операционных системах, указанных в разделе "Требования". Он может быть изменен или недоступен в последующих версиях. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]

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

Синтаксис

WINSETUPAPI BOOL SetupScanFileQueueA(
  [in]  HSPFILEQ            FileQueue,
  [in]  DWORD               Flags,
  [in]  HWND                Window,
  [in]  PSP_FILE_CALLBACK_A CallbackRoutine,
  [in]  PVOID               CallbackContext,
  [out] PDWORD              Result
);

Параметры

[in] FileQueue

Обработка очереди файлов установки, список копирования которых должен быть сканирован или итерирован.

[in] Flags

Флаги для объединения для управления операцией сканирования очереди файлов. Обратите внимание, что необходимо указать SPQ_SCAN_FILE_PRESENCE, SPQ_SCAN_USE_CALLBACK, SPQ_SCAN_USE_CALLBACKEX или SPQ_SCAN_FILE_VALIDITY.

Флаг Значение
SPQ_SCAN_FILE_PRESENCE
Целевые файлы в очереди копирования уже присутствуют в целевом объекте.
SPQ_SCAN_FILE_VALIDITY
Целевые файлы в очереди копирования уже присутствуют в целевом объекте с допустимыми сигнатурами. Доступно в Windows 2000 и более поздних версиях.
SPQ_SCAN_USE_CALLBACK
Подпрограмма обратного вызова для каждого узла очереди. Если подпрограмма обратного вызова возвращает ненулевое значение, обработка очереди останавливается и SetupScanFileQueue возвращает ноль. Выдача кода уведомления SPFILENOTIFY_QUEUESCAN и передачи указателя на целевой путь как Param1.
SPQ_SCAN_USE_CALLBACKEX
Подпрограмма обратного вызова для каждого узла очереди. Если подпрограмма обратного вызова возвращает ненулевое значение, обработка очереди останавливается и SetupScanFileQueue возвращает ноль. Отправьте уведомление SPFILENOTIFY_QUEUESCAN_EX и передайте указатель на структуру FILEPATHS как Param1. SPQ_SCAN_USE_CALLBACKEX также проверяет наличие допустимой подписи файла. Доступно начиная с Windows 2000. Только в Windows XP можно отключить проверку подписи, объединив этот флаг с SPQ_SCAN_FILE_PRESENCE.
SPQ_SCAN_INFORM_USER
Пометка, указываемая, когда все файлы в очереди передают проверку на наличие допустимых подписей. SetupScanFileQueue сообщает пользователю, что операция требует файлов, которые уже присутствуют в целевом объекте. Этот флаг игнорируется, если SPQ_SCAN_FILE_PRESENCE или SPQ_SCAN_FILE_VALIDITY не указан. Этот флаг нельзя использовать с SPQ_SCAN_PRUNE_COPY_QUEUE или SPQ_SCAN_PRUNE_DELREN.
SPQ_SCAN_PRUNE_COPY_QUEUE
В сочетании с SPQ_SCAN_FILE_PRESENCE удаляются записи из очереди копирования. При сочетании с SPQ_SCAN_FILE_VALIDITY удаляет подписанные записи из очереди копирования. Доступно начиная с Windows 2000. Только в Windows XP файлы, указанные в очереди удаления или переименовании, не удаляются, если не указано SPQ_SCAN_PRUNE_DELREN.
SPQ_SCAN_USE_CALLBACK_SIGNERINFO
Доступно начиная с Windows XP. Проблемы SPFILENOTIFY_QUEUESCAN_SIGNERINFO уведомления и передают указатель на структуру FILEPATHS_SIGNERINFO как Param1. Проверяет каждый файл для допустимой подписи и сообщает сведения о подписи с помощью функции обратного вызова.
SPQ_SCAN_PRUNE_DELREN
В сочетании с SPQ_SCAN_FILE_PRESENCE или SPQ_SCAN_FILE_VALIDITY удаляет записи в очереди удаления или переименования, которые также находятся в очереди копирования. В сочетании с SPQ_SCAN_PRUNE_COPY_QUEUE ограничивает файлы, удаленные из очереди копирования, в файлы, которые не находятся в очередях удаления или переименования. Доступно начиная с Windows XP.

[in] Window

Необязательный дескриптор окна для собственных диалоговых окон, представленных. Этот параметр не используется, если параметр флагов не содержит SPQ_SCAN_FILE_PRESENCE или если флаг и не содержат SPQ_SCAN_INFORM_USER.

[in] CallbackRoutine

Необязательный указатель на функцию обратного вызова FileCallback FileCallback, которая будет вызываться на каждом узле очереди копирования. Код уведомления, переданный функции обратного вызова, SPFILENOTIFY_QUEUESCAN. Этот параметр требуется, если флаги включают SPQ_SCAN_USE_CALLBACK.

примечание Необходимо указать подпрограмму обратного вызова, указанную CallbackRoutine. Подпрограмма обратного вызова очереди по умолчанию не поддерживает SetupScanFileQueue.
 

[in] CallbackContext

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

[out] Result

Указатель на переменную, которая получает результат операции сканирования.

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

Функция возвращает ненулевое значение, если были обработаны все узлы в очереди.

Если установлен флаг SPQ_SCAN_USE_CALLBACK, значение в Result равно 0. Подпрограмма обратного вызова, указанная CallbackRoutine, отправляется SPFILENOTIFY_QUEUESCAN уведомления. CallbackRoutine.Param1 указывает указатель на массив, содержащий сведения о целевом пути. Указатель был приведен к целому числу без знака и должен быть переадресован в массив TCHAR элементов MAX_PATH, прежде чем подпрограмма обратного вызова может получить доступ к информации. CallbackRoutine.Param2 имеет значение SPQ_DELAYED_COPY, если текущий узел очереди используется и не может быть скопирован до перезапуска системы. В противном случае CallbackRoutine.Param2 принимает значение 0.

Если SPQ_SCAN_USE_CALLBACK не задано, результата указывает, прошла ли очередь проверку присутствия или допустимости, как показано в следующей таблице.

Возвращаемый код Описание
0
Очередь завершилась ошибкой или прошла проверку, но SPQ_SCAN_INFORM_USER была указана, и пользователь хочет создать копии файлов.
1
Очередь передала проверку и, если SPQ_SCAN_INFORM_USER была указана, пользователь указал, что копирование не требуется. Очередь копирования пуста и нет элементов в очередях удаления или переименования, поэтому вызывающий объект может пропустить фиксацию очереди.
2
Очередь передала проверку и, если SPQ_SCAN_INFORM_USER была указана, пользователь указал, что копирование не требуется. Очередь копирования пуста, но есть элементы в очередях удаления или переименования, поэтому вызывающий объект не может пропустить фиксацию очереди.
 

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

Замечания

Заметка

Заголовок setupapi.h определяет SetupScanFileQueue как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка setupapi.h
библиотеки Setupapi.lib
DLL Setupapi.dll

См. также

FileCallback

Функции

Обзор

SetupCommitFileQueue

SetupDefaultQueueCallback