Método IFunctionInstanceQuery::Execute (functiondiscoveryapi.h)

[La detección de funciones está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. Puede modificarse o no estar disponible en versiones posteriores.

Realiza la consulta definida por IFunctionDiscovery::CreateInstanceQuery.

Sintaxis

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

Parámetros

[out] ppIFunctionInstance

Puntero a un puntero de interfaz IFunctionInstance que recibe la instancia de función solicitada.

Valor devuelto

Entre los valores devueltos posibles se incluyen, entre otros, los siguientes.

Código o valor devuelto Descripción
S_OK
El método se completó correctamente.
E_INVALIDARG
El parámetro ppIFunctionInstance es NULL.
E_OUTOFMEMORY
El método no puede asignar la memoria necesaria para realizar esta operación.
E_PENDING
Los resultados que devuelve un proveedor pasarán por una notificación asincrónica.
HRESULT_FROM_WIN32(ERROR_OBJECT_NOT_FOUND)
0x800710d8
La instancia de función representada por el identificador especificado no existe en este equipo.
HRESULT_FROM_WIN32(ERROR_KEY_DELETED)
0x800703fa
No se pudo devolver la instancia de función porque otro proceso eliminó la clave correspondiente a la instancia de función. El proveedor del Registro devuelve este error si se elimina una clave mientras se está realizando el procesamiento de consultas.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
No se pudo devolver la instancia de la función porque no se encontró la clave correspondiente a la instancia de función. El proveedor del Registro devuelve este error cuando el proveedor no pudo encontrar instancias coincidentes para una consulta de instancia.
 

Una consulta predefinida es una consulta de una categoría superpuesta. Cuando se ejecuta una consulta predefinida, cada proveedor que devuelve una instancia de función también devuelve un valor HRESULT. Los valores HRESULT del proveedor se agregan y el valor devuelto por el método Execute refleja estos resultados agregados. Los resultados se agregan de la siguiente manera:

  • Si todos los proveedores devuelven S_OK, Execute devuelve S_OK.
  • Si al menos un proveedor devuelve E_PENDING y todos los demás proveedores devuelven S_OK o E_PENDING, Execute devuelve E_PENDING.
  • Si todos los proveedores devuelven un valor de error (es decir, un valor distinto de S_OK o E_PENDING), Execute devuelve el valor de error devuelto por el proveedor de red que se ha consultado por última vez. Además, si la rutina de devolución de llamada IFunctionDiscoveryNotification del cliente se proporcionó a IFunctionDiscovery::CreateInstanceCollectionQuery, se envía una notificación OnError para cada proveedor. Cada notificación OnError contiene el HRESULT devuelto por el proveedor.
  • Si al menos un proveedor devuelve un valor de error y todos los demás proveedores devuelven S_OK, Execute devuelve S_OK. Las notificaciones OnError se envían como se ha descrito anteriormente.
  • Si al menos un proveedor devuelve un valor de error y al menos un proveedor devuelve E_PENDING, Execute devuelve E_PENDING. Las notificaciones OnError se envían como se ha descrito anteriormente.

Comentarios

El programa cliente debe invocar este método para recuperar datos del objeto de consulta. Cuando se llama, este método realiza lo siguiente:

  1. Recupera la instancia de la función.
  2. Inicia el mecanismo de notificación de actualización si la dirección de la rutina de devolución de llamada IFunctionDiscoveryNotification del programa cliente se proporciona a IFunctionDiscovery::CreateInstanceQuery.
Los proveedores de red de Detección de funciones solo devuelven instancias de función a través de la interfaz IFunctionDiscoveryNotification . No devuelven instancias de función directamente cuando se invoca este método. En su lugar, Execute simplemente inicia una operación de recuperación completamente asincrónica y devuelve E_PENDING para indicar que los resultados se devolverán de forma asincrónica. Las notificaciones se deben usar para recuperar instancias de función de proveedores de red de Detección de funciones.

Si se llama a Execute dos veces en el mismo objeto de consulta, la primera consulta finaliza antes de que se ejecute la segunda consulta.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado functiondiscoveryapi.h
Archivo DLL FunDisc.dll

Consulte también

Consultas de detección de funciones

IFunctionInstanceQuery