Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[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.
Recibe eventos de adición, eliminación o actualización durante una notificación.
Sintaxis
HRESULT OnEvent(
[in] DWORD dwEventID,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] const WCHAR *pszProvider
);
Parámetros
[in] dwEventID
Tipo del evento.
| Valor | Significado |
|---|---|
|
Un proveedor completó la búsqueda. Normalmente, los proveedores de protocolos de red envían esta notificación, donde el protocolo especifica un intervalo definido en el que se aceptarán los resultados de búsqueda. Tanto los proveedores WSD como SSDP usan este tipo de evento.
Una vez enviada esta notificación, una consulta omite todas las respuestas entrantes a la solicitud inicial de búsqueda o sondeo. Sin embargo, la consulta seguirá supervisando los mensajes Hello o Bye (que se usan para indicar cuándo se agrega o quita un dispositivo). La consulta seguirá supervisando estos eventos hasta que se llame a Release en el objeto de consulta. Esta notificación no se enviará si se produce un error catastrófico. Para obtener información sobre cómo un proveedor específico implementa o usa este evento, siga el vínculo a la documentación del proveedor del tema Proveedores integrados . |
|
Los clientes de detección de funciones no los usan. |
|
Los clientes de detección de funciones no los usan. |
|
La dirección IP de la NIC ha cambiado. El proveedor WSD implementa esta notificación. Los eventos se pueden enviar cuando se produce un evento de alimentación (por ejemplo, cuando la máquina se reactiva de suspensión) o cuando se mueve con un portátil.
Nota Este valor no está disponible para su uso en Windows Vista. Está disponible en Windows Vista con SP1, Windows Server 2008 y versiones posteriores del sistema operativo.
|
[in] fdqcQueryContext
Contexto registrado para la notificación de cambios. El tipo FDQUERYCONTEXT se define como DWORDLONG. Este parámetro puede ser NULL.
[in] pszProvider
Nombre del proveedor.
Valor devuelto
La implementación del programa cliente del método OnEvent debe devolver uno de los siguientes valores HRESULT al autor de la llamada.
| Código devuelto | Descripción |
|---|---|
|
El método se completó correctamente. |
|
El valor de uno de los parámetros de entrada no es válido. |
Comentarios
Los proveedores de detección de funciones (SSDP y WSD) usan este método para implementar notificaciones que se completan los pasos de búsqueda.
No llame a Release en el objeto de consulta desde este método. Si lo hace, podría provocar un interbloqueo. Si se llama a Release en un objeto de consulta de otro subproceso mientras una devolución de llamada está en proceso, el objeto no se liberará hasta que finalice la devolución de llamada.
Todas las notificaciones que se pasan a la detección de funciones por parte de los proveedores se ponen en cola y se devuelven al cliente una por una. Las devoluciones de llamada se sincronizan para que un cliente solo reciba una notificación cada vez.
Dado que se pueden realizar otras llamadas al método IFunctionDiscoveryNotification en otros subprocesos, los cambios realizados en el estado del subproceso durante la llamada deben restaurarse antes de salir del método.
Ejemplos
En el ejemplo siguiente se muestra una implementación del controlador OnEvent. La clase CMyNotificationListener se define en el tema IFunctionDiscoveryNotification .
#include <windows.h>
HRESULT CMyNotificationListener::OnEvent(
IN DWORD dwEventID,
IN FDQUERYCONTEXT fdqcQueryContext,
IN const WCHAR * pszProvider
)
{
HRESULT hr = S_OK;
HANDLE hSearchComplete = INVALID_HANDLE_VALUE;
hSearchComplete = OpenEventW( EVENT_ALL_ACCESS,
FALSE,
L"SearchComplete" );
if( NULL == hSearchComplete )
{
return hr;
}
if( FD_EVENTID_SEARCHCOMPLETE == dwEventID )
{
SetEvent( hSearchComplete );
}
CloseHandle( hSearchComplete );
return hr;
}
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 |