IFunctionDiscoveryNotification::OnUpdate 方法 (functiondiscoveryapi.h)
[函数发现可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]
指示已添加、删除或更改函数实例。 此方法由客户端程序实现,并由函数发现调用。
语法
HRESULT OnUpdate(
[in] QueryUpdateAction enumQueryUpdateAction,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] IFunctionInstance *pIFunctionInstance
);
参数
[in] enumQueryUpdateAction
一个 QueryUpdateAction 值,该值指定函数发现对指定函数实例执行的操作类型。
[in] fdqcQueryContext
为更改通知注册的上下文。 类型 FDQUERYCONTEXT 定义为 DWORDLONG。 此参数可以为 NULL。
[in] pIFunctionInstance
一个 IFunctionInstance 接口指针,表示受更新影响的函数实例。
返回值
客户端程序的 OnUpdate 方法实现应将以下 HRESULT 值之一返回给调用方。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
其中一个输入参数的值无效。 |
备注
不要从此方法对查询对象调用 Release 。 这样做可能会导致死锁。 如果在回调正在进行时从另一个线程对查询对象调用 Release ,则在回调完成之前不会释放该对象。
提供程序传递到函数发现的所有通知都会排队,并逐个返回到客户端。 回调是同步的,因此客户端一次只接收一个通知。
由于其他 IFunctionDiscoveryNotification 方法调用可能在其他线程中进行,因此必须在退出方法之前还原调用期间对线程状态所做的任何更改。
示例
以下代码演示 OnUpdate 处理程序实现。 CMyNotificationListener 类在 IFunctionDiscoveryNotification 主题中定义。
#include <windows.h>
HRESULT STDMETHODCALLTYPE CMyNotificationListener::OnUpdate(
IN QueryUpdateAction Action,
IN FDQUERYCONTEXT fdqcQueryContext,
IN IFunctionInstance *pInstance)
{
HRESULT hr = S_OK;
switch (Action) {
case QUA_ADD:
SetEvent( m_hAddEvent );
break;
case QUA_REMOVE:
SetEvent( m_hRemoveEvent );
break;
case QUA_CHANGE:
SetEvent( m_hChangeEvent );
break;
}
return S_OK;
}
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | functiondiscoveryapi.h |
请参阅
反馈
提交和查看相关反馈