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


Метод IFunctionInstanceCollectionQuery::Execute (functiondiscoveryapi.h)

[Функция обнаружения доступна для использования в операционных системах, указанных в разделе Требования. Он может быть изменен или недоступен в последующих версиях.]

Выполняет запрос, определенный iFunctionDiscovery::CreateInstanceCollectionQuery.

Синтаксис

HRESULT Execute(
  [out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);

Параметры

[out] ppIFunctionInstanceCollection

Указатель на интерфейс IFunctionInstanceCollection , который получает запрошенную коллекцию экземпляров функции.

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

Возможные возвращаемые значения включают, помимо прочего, следующие.

Код возврата Описание
S_OK
Метод завершился успешно. Результаты возвращаются синхронно в ppIFunctonInstanceCollecton.
E_OUTOFMEMORY
Метод не может выделить память, необходимую для выполнения этой операции.
E_PENDING
Некоторые результаты будут возвращены асинхронным уведомлением. См. сведения в разделе "Заметки".
 

Предопределенный запрос — это запрос многоуровневой категории. При выполнении предопределенного запроса каждый поставщик, возвращающий экземпляр функции, также возвращает значение HRESULT. Значения HRESULT поставщика агрегируются, а значение, возвращаемое методом Execute , отражает эти статистические результаты. Результаты агрегируются следующим образом:

  • Если все поставщики возвращают S_OK, функция Выполнить возвращает S_OK.
  • Если хотя бы один поставщик возвращает E_PENDING, а все остальные поставщики возвращают S_OK или E_PENDING, выполнение возвращает E_PENDING.
  • Если все поставщики возвращают значение ошибки (т. е. значение, отличное от S_OK или E_PENDING), функция Execute возвращает значение ошибки, возвращенное поставщиком сети, к которому был выполнен последний запрос. Кроме того, если клиентская процедура обратного вызова IFunctionDiscoveryNotification была предоставлена IFunctionDiscovery::CreateInstanceCollectionQuery, для каждого поставщика отправляется уведомление OnError . Каждое уведомление OnError содержит HRESULT, возвращенный поставщиком.
  • Если хотя бы один поставщик возвращает значение ошибки, а все остальные поставщики возвращают S_OK, функция Выполнить возвращает S_OK. Уведомления OnError отправляются, как описано выше.
  • Если хотя бы один поставщик возвращает значение ошибки, а по крайней мере один поставщик возвращает E_PENDING, функция Выполнить возвращает E_PENDING. Уведомления OnError отправляются, как описано выше.
Когда функция Execute возвращает S_OK, ppIFunctionInstanceCollection содержит результаты запроса. Если интерфейс IFunctionDiscoveryNotification предоставляется методу CreateInstanceCollectionQueryIFunctionDiscovery, изменения результатов будут передаваться с помощью этого интерфейса.

Когда функция Execute возвращает E_PENDING, результирующий набор возвращается асинхронно через интерфейс IFunctionDiscoveryNotification , предоставленный методу CreateInstanceCollectionQueryIFunctionDiscovery. PpIFunctionInstanceCollection может иметь значение NULL или содержать частичный результирующий набор. Перечисление завершается после вызова метода OnEventIFunctionDiscoveryNotification с FD_EVENTID_SEARCHCOMPLETE. После получения события FD_EVENTID_SEARCHCOMPLETE результаты обновляются.

Комментарии

Этот метод должен быть вызван клиентской программой, прежде чем какие-либо данные могут быть получены из объекта запроса. При вызове этот метод выполняет следующие действия:

  1. Извлекает объект коллекции экземпляра функции.
  2. Запрашивает поставщика категории, передаваемой в IFunctionDiscovery::CreateInstanceCollectionQuery.
  3. Извлекает поставщик категорий.
  4. Запрашивает поставщик категорий с использованием данных подкатегории для создания коллекции с помощью ограничений запросов.
  5. Инициирует механизм уведомления об обновлении, если адрес подпрограммы обратного вызова IFunctionDiscoveryNotification клиентской программы предоставлен для IFunctionDiscovery::CreateInstanceCollectionQuery.
  6. Кэширует данные коллекции и возвращает данные.
Поставщики сетей обнаружения функций возвращают экземпляры функций только через интерфейс IFunctionDiscoveryNotification . Они не возвращают экземпляры функций напрямую при вызове этого метода. Вместо этого метод Execute просто инициирует полностью асинхронную операцию извлечения и возвращает E_PENDING , чтобы указать, что результаты будут возвращены асинхронно. Уведомления должны использоваться для получения экземпляров функций от сетевых поставщиков обнаружения функций.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header functiondiscoveryapi.h
DLL FunDisc.dll

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

Запросы обнаружения функций

IFunctionInstanceCollectionQuery