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

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

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

Синтаксис

HRESULT Execute(
  [out] IFunctionInstance **ppIFunctionInstance
);

Параметры

[out] ppIFunctionInstance

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

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

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

Возвращаемый код или значение Описание
S_OK
Метод завершился успешно.
E_INVALIDARG
Параметр ppIFunctionInstance имеет значение NULL.
E_OUTOFMEMORY
Метод не может выделить память, необходимую для выполнения этой операции.
E_PENDING
Результаты, возвращаемые поставщиком, будут поступать через асинхронное уведомление.
HRESULT_FROM_WIN32(ERROR_OBJECT_NOT_FOUND)
0x800710d8
Экземпляр функции, представленный указанным идентификатором, не существует на этом компьютере.
HRESULT_FROM_WIN32(ERROR_KEY_DELETED)
0x800703fa
Не удалось вернуть экземпляр функции, так как ключ, соответствующий экземпляру функции, был удален другим процессом. Эта ошибка возвращается поставщиком реестра, если ключ удаляется во время обработки запроса.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
Не удалось вернуть экземпляр функции, так как не удалось найти ключ, соответствующий экземпляру функции. Эта ошибка возвращается поставщиком реестра, если поставщику не удается найти соответствующие экземпляры для запроса экземпляра.
 

Предопределенный запрос — это запрос многоуровневой категории. При выполнении предопределенного запроса каждый поставщик, возвращающий экземпляр функции, также возвращает значение 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 отправляются, как описано выше.

Комментарии

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

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

Если метод Execute вызывается дважды для одного и того же объекта запроса, первый запрос завершается до выполнения второго запроса.

Требования

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

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

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

IFunctionInstanceQuery