IMoniker::Reduce 메서드(objidl.h)
모니커를 가장 간단한 형식으로 줄입니다.
구문
HRESULT Reduce(
[in] IBindCtx *pbc,
[in] DWORD dwReduceHowFar,
[in, out] IMoniker **ppmkToLeft,
[out] IMoniker **ppmkReduced
);
매개 변수
[in] pbc
이 바인딩 작업에 사용할 바인딩 컨텍스트의 IBindCtx 인터페이스에 대한 포인터입니다. 바인딩 컨텍스트는 바인딩 프로세스 중에 바인딩된 개체를 캐시하고, 바인딩 컨텍스트를 사용하여 모든 작업에 적용되는 매개 변수를 포함하며, 모니커 구현이 해당 환경에 대한 정보를 검색해야 하는 수단을 제공합니다.
[in] dwReduceHowFar
이 모니커를 얼마나 축소할지 지정합니다. 이 매개 변수는 MKRREDUCE 열거형의 값 중 하나여야 합니다.
[in, out] ppmkToLeft
항목에서 이 모니커의 왼쪽에 있는 모니커에 대한 인터페이스 포인터가 포함된 IMoniker 포인터 변수에 대한 포인터입니다. 이 매개 변수는 주로 모니커 구현자가 복합 모니커의 다양한 구성 요소 간의 협력을 가능하게 하는 데 사용됩니다. 모니커 클라이언트는 일반적으로 NULL을 전달할 수 있습니다.
반환 시 *ppmkToLeft 는 일반적으로 NULL로 설정되며, 이는 원래 모니커가 왼쪽에 변경되지 않음을 나타냅니다. 드문 경우지만 * ppmkToLeft 는 왼쪽의 이전 모니커를 무시해야 하며 *ppmkToLeft 를 통해 반환된 모니커가 대체되는 모니커임을 나타내는 모니커를 나타냅니다. 이러한 상황에서 구현은 이전 모니커의 Release 를 이 모니커의 왼쪽에 호출해야 하며 반환된 새 모니커에서 AddRef 를 호출해야 합니다. 호출자는 나중에 해제해야 합니다. 오류가 발생하면 구현에서 인터페이스 포인터를 변경하지 않고 그대로 두거나 NULL로 설정할 수 있습니다.
[out] ppmkReduced
이 모니커의 축소된 형식에 대한 인터페이스 포인터를 수신하는 IMoniker 포인터 변수에 대한 포인터로, 오류가 발생하거나 이 모니커가 아무 것도 아닌 경우 NULL 일 수 있습니다. 이 모니커를 줄일 수 없는 경우 *ppmkReduced 는 단순히 이 모니커로 설정되고 반환 값은 MK_S_REDUCED_TO_SELF. *ppmkReduced 가 NULL이 아닌 경우 구현은 새 모니커에서 AddRef 를 호출해야 합니다. 릴리스를 호출하는 것은 호출자의 책임입니다. *ppmkReduced 가 이 모니커로 설정된 경우에도 마찬가지입니다.
반환 값
이 메서드는 다음 값뿐만 아니라 E_OUTOFMEMORY 및 E_UNEXPECTED 표준 반환 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
메서드가 완료되었습니다. |
|
이 모니커는 더 이상 줄일 수 없으므로 ppmkReduced는 이 모니커를 나타냅니다. |
|
바인딩 컨텍스트의 BIND_OPTS 구조에 지정된 시간 제한 내에서 작업을 완료할 수 없습니다. |
설명
이 메서드는 다음 용도로 사용됩니다.
- 사용자 정의 매크로 또는 별칭을 새로운 종류의 모니커 클래스로 생성할 수 있습니다. 축소하면 매크로가 계산되는 모니커가 반환됩니다.
- 이동하면서 데이터를 추적하는 일종의 모니커 생성을 사용하도록 설정합니다. 축소되면 현재 위치에 있는 데이터의 모니커가 반환됩니다.
- 파일 이름과 무관한 파일에 액세스하는 식별자 기반 메서드를 지원하는 파일 시스템에서; 파일 모니커를 이러한 식별자 중 하나를 포함하는 모니커로 줄일 수 있습니다.
발신자에 대한 참고 사항
위에서 설명한 시나리오는 현재 시스템에서 제공하는 모니커 클래스에 의해 구현되지 않습니다.축소된 모니커가 가장 구체적인 형식이므로 IMoniker::IsEqual 메서드를 사용하여 두 모니커를 비교하기 전에 Reduce를 호출해야 합니다. IsEqual 은 두 모니커가 감소되기 전에 S_FALSE 반환하고 축소된 후 S_OK 반환할 수 있습니다.
구현자에 대한 참고 사항
현재 모니커를 줄일 수 있는 경우 구현에서 모니커를 현재 위치에서 줄여서는 안 됩니다. 대신 현재 모니커의 축소 상태를 나타내는 새 모니커를 반환해야 합니다. 이렇게 하면 호출자에게는 여전히 유도되지 않은 모니커를 사용할 수 있습니다(예: 해당 구성 요소 열거). 구현은 최소한 요청된 한 모니커를 줄여야 합니다.구현별 참고 사항
구현 | 참고 |
---|---|
안티 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
클래스 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
파일 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
제네릭 복합 모니커 | 이 메서드는 각 구성 요소 모니커에 대해 Reduce 를 재귀적으로 호출합니다. 구성 요소 자체가 감소하면 메서드는 S_OK 반환하고 축소된 구성 요소의 복합을 다시 전달합니다. 감소가 발생하지 않으면 메서드는 동일한 모니커를 다시 전달하고 MK_S_REDUCED_TO_SELF 반환합니다. |
항목 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
OBJREF 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
포인터 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
URL 모니커 | 이 메서드는 MK_S_REDUCED_TO_SELF 반환하고 동일한 모니커를 다시 전달합니다. |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | objidl.h |