IMoniker::Reduce-Methode (objidl.h)
Reduziert einen Moniker auf seine einfachste Form.
Syntax
HRESULT Reduce(
[in] IBindCtx *pbc,
[in] DWORD dwReduceHowFar,
[in, out] IMoniker **ppmkToLeft,
[out] IMoniker **ppmkReduced
);
Parameter
[in] pbc
Ein Zeiger auf die IBindCtx-Schnittstelle im Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Der Bindungskontext zwischenspeichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge gelten, die den Bindungskontext verwenden, und stellt die Mittel bereit, mit denen die moniker-Implementierung Informationen zu ihrer Umgebung abrufen soll.
[in] dwReduceHowFar
Gibt an, in welchem Umfang dieser Moniker reduziert werden soll. Dieser Parameter muss einer der Werte aus der MKRREDUCE-Enumeration sein.
[in, out] ppmkToLeft
Beim Einstieg ein Zeiger auf eine IMoniker-Zeigervariable , die den Schnittstellenzeiger auf den Moniker links von diesem Moniker enthält. Dieser Parameter wird hauptsächlich von Moniker-Implementierern verwendet, um die Zusammenarbeit zwischen den verschiedenen Komponenten eines zusammengesetzten Monikers zu ermöglichen; moniker-Clients können normalerweise NULL übergeben.
Bei der Rückgabe wird *ppmkToLeft normalerweise auf NULL festgelegt, was angibt, dass sich der ursprüngliche Moniker links nicht ändert. In seltenen Fällen gibt *ppmkToLeft einen Moniker an, der angibt, dass der vorherige Moniker links ignoriert werden sollte und der moniker, der über *ppmkToLeft zurückgegeben wird, der Ersatz ist. In einer solchen Situation muss die Implementierung Release auf dem alten Moniker links von diesem Moniker aufrufen und addRef für den neuen zurückgegebenen Moniker aufrufen; Der Aufrufer muss ihn später freigeben. Wenn ein Fehler auftritt, kann die Implementierung den Schnittstellenzeiger unverändert lassen oder auf NULL festlegen.
[out] ppmkReduced
Ein Zeiger auf eine IMoniker-Zeigervariable , die den Schnittstellenzeiger auf die reduzierte Form dieses Monikers empfängt, die NULL sein kann, wenn ein Fehler auftritt oder wenn dieser Moniker auf nichts reduziert ist. Wenn dieser Moniker nicht reduziert werden kann, wird *ppmkReduced einfach auf diesen Moniker festgelegt, und der Rückgabewert ist MK_S_REDUCED_TO_SELF. Wenn *ppmkReduced nicht NULL ist, muss die Implementierung AddRef für den neuen Moniker aufrufen. Es liegt in der Verantwortung des Aufrufers , Release aufzurufen. (Dies gilt auch dann, wenn *ppmkReduced auf diesen Moniker festgelegt ist.)
Rückgabewert
Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
Dieser Moniker konnte nicht weiter reduziert werden, sodass ppmkReduced diesen Moniker angibt. |
|
Der Vorgang konnte nicht innerhalb des durch die BIND_OPTS Struktur des Bindungskontexts angegebenen Zeitlimits abgeschlossen werden. |
Hinweise
Diese Methode ist für die folgenden Verwendungszwecke vorgesehen:
- Aktivieren Sie die Erstellung benutzerdefinierter Makros oder Aliase als neue Arten von Monikerklassen. Wenn er reduziert wird, wird der Moniker zurückgegeben, für den das Makro ausgewertet wird.
- Aktivieren Sie die Erstellung einer Art Moniker, der Daten nachverfolgt, während sie sich bewegen. Wenn er reduziert wird, wird der Moniker der Daten an ihrem aktuellen Speicherort zurückgegeben.
- Auf Dateisystemen, die eine bezeichnerbasierte Methode für den Zugriff auf Dateien unterstützen, die unabhängig von Dateinamen ist; ein Dateimoniker könnte auf einen Moniker reduziert werden, der einen dieser Bezeichner enthält.
Hinweise für Anrufer
Die oben beschriebenen Szenarien werden derzeit nicht von den vom System bereitgestellten Monikerklassen implementiert.Sie sollten Reduce aufrufen, bevor Sie zwei Moniker mit der IMoniker::IsEqual-Methode vergleichen, da ein reduzierter Moniker seine spezifischste Form hat. IsEqual kann S_FALSE auf zwei Monikern zurückgeben, bevor sie reduziert werden und S_OK zurückgeben, nachdem sie reduziert wurden.
Hinweise zu Implementierern
Wenn der aktuelle Moniker reduziert werden kann, darf Ihre Implementierung den Moniker nicht an Ort und Stelle reduzieren. Stattdessen muss ein neuer Moniker zurückgegeben werden, der den reduzierten Zustand des aktuellen darstellt. Auf diese Weise hat der Aufrufer weiterhin die Möglichkeit, den nicht gekürzten Moniker zu verwenden (z. B. die Aufzählung seiner Komponenten). Ihre Implementierung sollte den Moniker mindestens so weit reduzieren, wie dies erforderlich ist.Implementierungsspezifische Hinweise
Implementierung | Hinweise |
---|---|
Antimoniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
Klassenmoniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
Dateimoniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
Generischer zusammengesetzter Moniker | Diese Methode ruft Rekursiv Reduce für jeden ihrer Komponentenmoniker auf. Wenn sich eine der Komponenten selbst reduziert, gibt die Methode S_OK zurück und gibt einen Verbund der reduzierten Komponenten zurück. Wenn keine Reduzierung aufgetreten ist, gibt die Methode denselben Moniker zurück und gibt MK_S_REDUCED_TO_SELF zurück. |
Elementmoniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
OBJREF-Moniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
Zeigermoniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
URL-Moniker | Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück. |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | objidl.h |