IMoniker::CommonPrefixWith-Methode (objidl.h)

Erstellt einen neuen Moniker basierend auf dem Präfix, das dieser Moniker mit dem angegebenen Moniker gemeinsam hat.

Syntax

HRESULT CommonPrefixWith(
  [in]  IMoniker *pmkOther,
  [out] IMoniker **ppmkPrefix
);

Parameter

[in] pmkOther

Ein Zeiger auf die IMoniker-Schnittstelle auf einem anderen Moniker, der mit diesem verglichen werden soll, um zu bestimmen, ob ein gemeinsames Präfix vorhanden ist.

[out] ppmkPrefix

Die Adresse einer IMoniker*-Zeigervariable, die den Schnittstellenzeiger auf den Moniker empfängt, der das allgemeine Präfix dieses Monikers und pmkOther ist. Bei erfolgreicher Implementierung muss AddRef für den resultierenden Moniker aufgerufen werden. Es liegt in der Verantwortung des Aufrufers , Release aufzurufen. Wenn ein Fehler auftritt oder kein gemeinsames Präfix vorhanden ist, sollte die Implementierung *ppmkPrefix auf NULL festlegen.

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Es gibt ein gängiges Präfix, das weder dieser Moniker noch pmkOther ist.
MK_S_NOPREFIX
Es ist kein gemeinsames Präfix vorhanden.
MK_S_HIM
Das gesamte pmkOther ist ein Präfix dieses Monikers.
MK_S_US
Die beiden Moniker sind identisch.
MK_S_ME
Dieser Moniker ist ein Präfix des pmkOther Monikers.
MK_S_NOTBINDABLE
Diese Methode wurde mit einem relativen Moniker aufgerufen. Es ist nicht sinnvoll, das allgemeine Präfix auf einen relativen Moniker zu nehmen.

Hinweise

CommonPrefixWith erstellt einen neuen Moniker, der aus den allgemeinen Präfixen des Monikers für dieses Moniker-Objekt und einem anderen Moniker besteht. Wenn beispielsweise ein Moniker den Pfad "c:\projects\secret\art\pict1.bmp" und ein anderer Moniker den Pfad "c:\projects\secret\docs\chap1.txt" darstellt, wäre das allgemeine Präfix dieser beiden Moniker ein Moniker, der den Pfad "c:\projects\secret" darstellt.

Hinweise für Anrufer

Die CommonPrefixWith-Methode wird in erster Linie in der Implementierung der IMoniker::RelativePathTo-Methode aufgerufen. Clients, die einen Moniker zum Suchen eines Objekts verwenden, müssen diese Methode selten aufrufen.

Rufen Sie diese Methode nur auf, wenn pmkOther und dieser Moniker beide absolute Moniker sind. Ein absoluter Moniker ist entweder ein Dateimoniker oder ein generischer Verbund, dessen linke Komponente ein Dateimoniker ist, der einen absoluten Pfad darstellt. Rufen Sie diese Methode nicht für relative Moniker auf, da sie keine aussagekräftigen Ergebnisse liefern würde.

Hinweise zu Implementierern

Ihre Implementierung sollte zunächst bestimmen, ob pmkOther ein Moniker einer Klasse ist, die Sie erkennen und für die Sie eine spezielle Behandlung bereitstellen können (z. B. wenn es sich um dieselbe Klasse wie dieser Moniker handelt). Wenn ja, sollte Ihre Implementierung das allgemeine Präfix der beiden Moniker bestimmen. Andernfalls sollten beide Moniker in einem Aufruf an die MonikerCommonPrefixWith-Funktion übergeben werden, die den generischen Fall ordnungsgemäß verarbeitet.

Implementierungsspezifische Hinweise

Implementierung Hinweise
Antimoniker Wenn der andere Moniker ebenfalls ein Antimoniker ist, gibt die Methode MK_S_US zurück und legt ppmkPrefix auf diesen Moniker fest. Andernfalls ruft die -Methode die MonikerCommonPrefixWith-Funktion auf. Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist.
Klassenmoniker Wenn pmkOther diesem Moniker gleich ist, ruft einen Zeiger auf diesen Moniker ab und gibt MK_S_US zurück. Wenn pmkOther ein Klassenmoniker ist, aber nicht gleich diesem Moniker ist, gibt MK_E_NOPREFIX zurück. Andernfalls gibt das Ergebnis des Aufrufs von MonikerCommonPrefixWith mit sich selbst als pmkThis, pmkOther und ppmkPrefix zurück, wodurch der Fall behandelt wird, in dem pmkOther ein generischer zusammengesetzter Moniker ist.
Dateimoniker Wenn beide Moniker Dateimoniker sind, gibt diese Methode einen Dateimoniker zurück, der auf den gemeinsamen Komponenten am Anfang von zwei Dateimonikern basiert. Komponenten eines Dateimonikers können folgende Typen aufweisen:
  • Ein Computername des Formulars \\server\share. Ein Computername wird als einzelne Komponente behandelt, sodass zwei Moniker, die die Pfade "\\meinserver\public\work" und "\\meinserver\private\games" darstellen, nicht "\\myserver" als gemeinsames Präfix aufweisen.
  • Eine Laufwerksbezeichnung (z. B. "C:").
  • Ein Verzeichnis- oder Dateiname.
Wenn der andere Moniker kein Dateimoniker ist, übergibt diese Methode beide Moniker in einem Aufruf der MonikerCommonPrefixWith-Funktion . Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist.

Diese Methode gibt MK_E_NOPREFIX zurück, wenn kein gemeinsames Präfix vorhanden ist.

Generischer zusammengesetzter Moniker Wenn der andere Moniker ein Zusammengesetzter ist, vergleicht diese Methode die Komponenten der einzelnen Zusammengesetzten von links nach rechts. Der zurückgegebene moniker des allgemeinen Präfixes kann auch ein zusammengesetzter Moniker sein, je nachdem, wie viele der linkssten Komponenten für beide Moniker gemeinsam waren. Wenn der andere Moniker kein Zusammengesetzter ist, vergleicht die Methode ihn einfach mit der linken Komponente dieses Monikers.

Wenn die Moniker gleich sind, gibt die Methode MK_S_US zurück und legt ppmkPrefix auf diesen Moniker fest. Wenn der andere Moniker ein Präfix dieses Monikers ist, gibt die Methode MK_S_HIM zurück und legt ppmkPrefix auf den anderen Moniker fest. Wenn dieser Moniker ein Präfix des anderen ist, gibt diese Methode MK_S_ME zurück und legt ppmkPrefix auf diesen Moniker fest.

Wenn kein allgemeines Präfix vorhanden ist, gibt diese Methode MK_E_NOPREFIX zurück und legt ppmkPrefix auf NULL fest.

Elementmoniker Wenn der andere Moniker ein Elementmoniker ist, der diesem Moniker entspricht, legt diese Methode *ppmkPrefix auf diesen Moniker fest und gibt MK_S_US zurück. Andernfalls ruft die -Methode die MonikerCommonPrefixWith-Funktion auf. Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist.
OBJREF-Moniker Wenn die beiden Moniker gleich sind, gibt diese Methode MK_S_US zurück und legt *ppmkPrefix auf NULL fest. Wenn der andere Moniker kein OBJREF-Moniker ist, übergibt diese Methode beide Moniker an die MonikerCommonPrefixWith-Funktion . Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist.

Wenn kein allgemeines Präfix vorhanden ist, gibt diese Methode MK_E_NOPREFIX zurück.

Zeigermoniker Wenn die beiden Moniker gleich sind, gibt diese Methode MK_S_US zurück und legt *ppmkPrefix auf diesen Moniker fest. Andernfalls gibt die Methode MK_E_NOPREFIX zurück und legt *ppmkPrefix auf NULL fest.
URL-Moniker Diese Methode gibt E_NOTIMPL 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

Weitere Informationen

Imoniker

MonikerCommonPrefixWith