[Function Discovery는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다.]
instance 함수가 추가, 제거 또는 변경되었음을 나타냅니다. 이 메서드는 클라이언트 프로그램에 의해 구현되며 함수 검색에서 호출됩니다.
구문
HRESULT OnUpdate(
[in] QueryUpdateAction enumQueryUpdateAction,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] IFunctionInstance *pIFunctionInstance
);
매개 변수
[in] enumQueryUpdateAction
지정된 함수 instance 함수 검색이 수행하는 작업 유형을 지정하는 QueryUpdateAction 값입니다.
[in] fdqcQueryContext
변경 알림에 등록된 컨텍스트입니다. FDQUERYCONTEXT 형식은 DWORDLONG으로 정의됩니다. 이 매개 변수는 NULL일 수 있습니다.
[in] pIFunctionInstance
업데이트의 영향을 받는 함수 instance 나타내는 IFunctionInstance 인터페이스 포인터입니다.
반환 값
클라이언트 프로그램의 OnUpdate 메서드 구현은 다음 HRESULT 값 중 하나를 호출자에게 반환해야 합니다.
| 반환 코드 | Description |
|---|---|
|
메서드가 완료되었습니다. |
|
입력 매개 변수 중 하나의 값이 잘못되었습니다. |
설명
이 메서드의 쿼리 개체에서 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 |