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 |
---|---|
|
메서드를 성공적으로 수행했습니다. |
|
싱크 인터페이스 포인터를 가져올 수 없습니다. |
|
지정된 싱크 인터페이스는 지원되지 않습니다. |
|
지정된 싱크 개체를 가져올 수 없습니다. |
설명
펑크 매개 변수로 표시되는 동일한 인터페이스를 사용하는 후속 호출은 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 |