OleGetClipboardWithEnterpriseInfo-Funktion (ole2.h)

Aktiviert Windows Information Protection aufgeklärt
Anwendungen zum Abrufen eines IDataObject aus der OLE-Zwischenablage
begleitet von Windows Information Protection Informationen über die Daten und die
Quellanwendung. Diese Informationen ermöglichen die
Optimierte Anwendung zur Übernahme der Verantwortung für die Anwendung von Windows Information Protection
-Richtlinie, einschließlich des Fliegens aller entsprechenden Benutzeroberflächenaufforderungen, und
Überwachungsfälle, in denen der Benutzer das Kopieren explizit genehmigt
Unternehmensdaten in einem persönlichen Kontext.

Wenn die aufrufende Anwendung nicht aktiviert ist oder
als "nicht zulässig" für den Zugriff auf Unternehmensdaten konfiguriert ist,
dann verhält sich dieser Aufruf genau wie OleGetClipboard : Anwenden der Richtlinie vor der Entscheidung, was IDataObject zurückgegeben werden soll,
und das Bereitstellen leerer Zeichenfolgen als Ausgabe.

Syntax

HRESULT OleGetClipboardWithEnterpriseInfo(
  [out] IDataObject **dataObject,
  [out] PWSTR       *dataEnterpriseId,
  [out] PWSTR       *sourceDescription,
  [out] PWSTR       *targetDescription,
  [out] PWSTR       *dataDescription
);

Parameter

[out] dataObject

Adresse der IDataObject-Zeigervariable , die den Schnittstellenzeiger auf das Zwischenablagedatenobjekt empfängt.

[out] dataEnterpriseId

Die Unternehmens-ID der Anwendung, die die Zwischenablagedaten festgelegt hat. Wenn es sich um personenbezogene Daten handelt, handelt es sich um eine leere Zeichenfolge.

[out] sourceDescription

Die Beschreibung der Anwendung, die die Zwischenablage festgelegt hat.

[out] targetDescription

Die Beschreibung der Anwendung des Aufrufers, die in der Überwachung verwendet werden soll.

[out] dataDescription

Die Beschreibung des Datenobjekts, das in der Überwachung verwendet werden soll.

Rückgabewert

Diese Funktion gibt S_OK nach Erfolg zurück. Weitere mögliche Werte sind:

Rückgabecode Beschreibung
CLIPBRD_E_CANT_OPEN
Die openClipboard-Funktion , die in OleFlushClipboard verwendet wird, ist fehlgeschlagen.
CLIPBRD_E_CANT_CLOSE
Fehler bei der CloseClipboard-Funktion , die in OleFlushClipboard verwendet wird.

Hinweise

Vorsicht Zwischenablagedaten sind nicht vertrauenswürdig. Analysieren Sie die Daten sorgfältig, bevor Sie sie in Ihrer Anwendung verwenden.
 
Wenn Sie eine Anwendung schreiben, die Daten aus der Zwischenablage akzeptieren kann, rufen Sie die OleGetClipboardWithEnterpriseInfo-Funktion auf, um einen Zeiger auf die IDataObject-Schnittstelle abzurufen, mit der Sie den Inhalt der Zwischenablage abrufen können.

OleGetClipboardWithEnterpriseInfo behandelt drei Fälle:

Im ersten Fall kann das von OleGetClipboardWithEnterpriseInfo zurückgegebene Zwischenablagedatenobjekt Aufrufe nach Bedarf an das ursprüngliche Datenobjekt weiterleiten, das in der Zwischenablage platziert wurde, und kann daher möglicherweise RPC-Aufrufe ausführen.

Im zweiten Fall erstellt OLE ein Standarddatenobjekt und gibt es an den Benutzer zurück. Da die Daten in der Zwischenablage von einem OleSetClipboard-Aufruf stammen, enthält das von OLE bereitgestellte Datenobjekt genauere Informationen über den Datentyp in der Zwischenablage. Insbesondere das Originalmedium (TYMED), auf dem die Daten angeboten wurden, ist bekannt. Wenn also eine Datenquellenanwendung ein bestimmtes Zwischenablageformat (z. B. cfFOO) für ein Speicherobjekt bietet und die OleFlushClipboard-Funktion aufruft, wird das Speicherobjekt in den Arbeitsspeicher kopiert, und das hglobal-Speicherhandle wird in die Zwischenablage eingefügt. Wenn dann die OleGetClipboardWithEnterpriseInfo-Funktion ihr Standarddatenobjekt erstellt, wird das hglobal aus der Zwischenablage erneut zu einem IStorage-Objekt . Darüber hinaus würden der FORMATETC-Enumerator und die IDataObject::QueryGetData-Methode alle korrekt angeben, dass das ursprüngliche Zwischenablageformat (cfFOO) wieder auf einem TYMED_ISTORAGE verfügbar ist.

Im dritten Fall erstellt OLE weiterhin ein Standarddatenobjekt, aber es gibt keine speziellen Informationen zu den Daten in den Zwischenablageformaten (insbesondere für anwendungsdefinierte Zwischenablageformate). Wenn also ein hGlobal-basiertes Speichermedium durch einen Aufruf der SetClipboardData-Funktion direkt in die Zwischenablage gesetzt würde, würden der FORMATETC-Enumerator und die IDataObject::QueryGetData-Methode nicht angeben, dass die Daten auf einem Speichermedium verfügbar waren. Ein Aufruf der IDataObject::GetData-Methode für TYMED_ISTORAGE wäre jedoch erfolgreich. Aufgrund dieser Einschränkungen wird dringend empfohlen, dass OLE-fähige Anwendungen mithilfe der OLE-Zwischenablagefunktionen mit der Zwischenablage interagieren.

Das von der OleGetClipboardWithEnterpriseInfo-Funktion erstellte Zwischenablagedatenobjekt verfügt über eine ziemlich umfangreiche IDataObject-Implementierung . Das von OLE bereitgestellte Datenobjekt kann Daten im OLE 1-Zwischenablageformat in die von einem OLE 2-Aufrufer erwartete Darstellung konvertieren. Darüber hinaus sind alle strukturierten Daten auf jedem strukturierten oder flachen Medium verfügbar, und alle flachen Daten sind auf jedem flachen Medium verfügbar. GDI-Objekte (z. B. Metadateien und Bitmaps) sind jedoch nur auf ihren jeweiligen Medien verfügbar.

Beachten Sie, dass der tymed-Member der FORMATTC-Struktur , die im FORMATETC-Enumerator verwendet wird, die Vereinigung der unterstützten Medien enthält. Anwendungen, die nach bestimmten Informationen suchen (z. B. ob CF_TEXT auf TYMED_HGLOBAL verfügbar ist), sollten beim Überprüfen dieses Werts die entsprechende Bitmaskierung durchführen.

Wenn Sie die OleGetClipboardWithEnterpriseInfo-Funktion aufrufen, sollten Sie das zurückgegebene IDataObject nur für sehr kurze Zeit beibehalten. Sie nutzt Ressourcen in der Anwendung, die sie angeboten hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ole2.h
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

OleGetClipboard

OleSetClipboard