다음을 통해 공유


ITextStoreACP::AdviseSink 메서드(textstor.h)

ITextStoreACP::AdviseSink 메서드는 ITextStoreACPSink 인터페이스에서 새 조언 싱크를 설치하거나 기존 조언 싱크를 수정합니다. 싱크 인터페이스는 펑크 매개 변수로 지정됩니다.

구문

HRESULT AdviseSink(
  [in] REFIID   riid,
  [in] IUnknown *punk,
  [in] DWORD    dwMask
);

매개 변수

[in] riid

싱크 인터페이스를 지정합니다.

[in] punk

싱크 인터페이스에 대한 포인터입니다. NULL일 수 없습니다.

[in] dwMask

advise 싱크에 알리는 이벤트를 지정합니다. 가능한 매개 변수 값에 대한 자세한 내용은 TS_AS_* 상수를 참조하세요.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

Description
S_OK
메서드를 성공적으로 수행했습니다.
CONNECT_E_ADVISELIMIT
싱크 인터페이스 포인터를 가져올 수 없습니다.
E_INVALIDARG
지정된 싱크 인터페이스는 지원되지 않습니다.
E_UNEXPECTED
지정된 싱크 개체를 가져올 수 없습니다.

설명

펑크 매개 변수로 표시되는 동일한 인터페이스를 사용하는 후속 호출은 dwMask 매개 변수를 업데이트하기 위한 요청으로 처리됩니다. 서버는 이러한 요청에 대한 응답으로 싱크에서 AddRef 메서드를 호출해서는 안 됩니다.

서버는 단일 연결 지점만 유지 관리합니다. 원래 싱크 개체가 제거될 때까지 두 번째 싱크 개체가 실패하도록 조언하려고 시도합니다. 애플리케이션은 알림이 필요하지 않은 경우 ITextStoreACP::UnadviseSink 메서드를 사용하여 싱크 개체의 등록을 취소해야 합니다.

이 메서드를 사용하여 ITextStoreACPServices 인터페이스를 가져옵니다 .

예제

CMyTextEditor ITextStoreACP


STDMETHODIMP CMyTextEditor::AdviseSink(REFIID riid, IUnknown *punk, DWORD dwMask)
{
        HRESULT         hr;
        IUnknown                *punkID;
        typedef struct
        {
        IUnknown                *punkID;
        ITextStoreACPSink       *pTextStoreACPSink;
        DWORD                   dwMask;
        }ADVISE_SINK, *PADVISE_SINK;    
        
        // Determine if the sink interface exists. 
        // Get the pointer to the IUnknown interface and check if the IUnknown 
        // pointer is the same as a pointer to an existing sink. 
        // If the sink exists, update the existing sink with the  
        // dwMask parameters passed to this method.      
        hr = QueryInterface(IID_IUnknown, (LPVOID*)&punkID);

        if(FAILED(hr))
        {
                hr = E_INVALIDARG;
        }       

        if(punkID == m_AdviseSink.punkID)
        {
                m_AdviseSink.dwMask = dwMask;
                hr = S_OK;
        }

        // If the sink does not exist, do the following: 
        // 1. Install a new sink. 
        // 2. Keep the pointer to the IUnknown interface to uniquely 
        //        identify this advise sink. 
        // 3. Set the dwMask parameter of this new sink to the dwMask  
        //    parameters passed to this method. 
        // 4. Increment the reference count. 
        // 5. Release the IUnknown pointer, since this pointer is no 
        //        longer required. 

        if(IsEqualIID(riid, IID_ITextStoreACPSink))
        {
                punk->QueryInterface(IID_ITextStoreACPSink,
                         (LPVOID*)&m_AdviseSink.pTextStoreACPSink);
                m_AdviseSink.punkID = punkID;
                m_AdviseSink.dwMask = dwMask;
                punkID->AddRef();
                punkID->Release();

                hr = S_OK;
        }
        return hr;
        
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 textstor.h
DLL Msctf.dll
재배포 가능 파일 Windows 2000 Professional의 TSF 1.0

추가 정보

ITextStoreACP

ITextStoreACP::UnadviseSink

ITextStoreACPServices

TS_AS_* 상수