다음을 통해 공유


IFunctionDiscoveryNotification::OnUpdate 메서드(functiondiscoveryapi.h)

[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
S_OK
메서드가 완료되었습니다.
E_INVALIDARG
입력 매개 변수 중 하나의 값이 잘못되었습니다.

설명

이 메서드의 쿼리 개체에서 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

추가 정보

IFunctionDiscoveryNotification