Функция OleGetClipboardWithEnterpriseInfo (ole2.h)
Включает Windows Information Protection с поддержкой
приложения для получения объекта IDataObject из буфера обмена OLE
сопровождается windows Information Protection сведениями о данных и
исходное приложение. Эти сведения позволяют
просвещенное приложение берет на себя ответственность за применение Windows Information Protection
политика, включая все соответствующие запросы пользовательского интерфейса, и
аудит случаев, когда пользователь явно утверждает копирование
корпоративные данные в личном контексте.
Если вызывающее приложение не поддерживается или имеет значение
настроено как "не разрешено" для доступа к корпоративным данным;
затем этот вызов ведет себя точно так же, как OleGetClipboard — применение политики перед принятием решения о том, какой объект IDataObject следует вернуть.
и, предоставляя пустые строки в качестве выходных данных.
Синтаксис
HRESULT OleGetClipboardWithEnterpriseInfo(
[out] IDataObject **dataObject,
[out] PWSTR *dataEnterpriseId,
[out] PWSTR *sourceDescription,
[out] PWSTR *targetDescription,
[out] PWSTR *dataDescription
);
Параметры
[out] dataObject
Адрес переменной указателя IDataObject , которая получает указатель интерфейса на объект данных буфера обмена.
[out] dataEnterpriseId
Корпоративный идентификатор приложения, задающего данные буфера обмена. Если данные являются личными, это будет пустая строка.
[out] sourceDescription
Описание приложения, задающего буфер обмена.
[out] targetDescription
Описание приложения вызывающего объекта, используемого при аудите.
[out] dataDescription
Описание объекта данных, используемого при аудите.
Возвращаемое значение
Эта функция возвращает S_OK об успешном выполнении. Ниже перечислены другие возможные значения.
Код возврата | Описание |
---|---|
|
Сбой функции OpenClipboard , используемой в OleFlushClipboard . |
|
Сбой функции CloseClipboard , используемой в OleFlushClipboard . |
Комментарии
OleGetClipboardWithEnterpriseInfo обрабатывает три варианта:
- Приложение, которое разместило данные в буфер обмена с функцией OleSetClipboard , по-прежнему работает.
- Приложение, которое помещает данные в буфер обмена с помощью функции OleSetClipboard , впоследствии вызывает функцию OleFlushClipboard .
- В буфере обмена есть данные из приложения, отличного от OLE.
Во втором случае OLE создает объект данных по умолчанию и возвращает его пользователю. Поскольку данные в буфере обмена получены из вызова OleSetClipboard , предоставленный OLE-объект данных содержит более точные сведения о типе данных в буфере обмена. В частности, известен исходный носитель (TYMED), на котором были предложены данные. Таким образом, если приложение источника данных предлагает определенный формат буфера обмена, например cfFOO, в объекте хранилища и вызывает функцию OleFlushClipboard , объект хранилища копируется в память, а дескриптор памяти hglobal помещается в буфер обмена. Затем, когда функция OleGetClipboardWithEnterpriseInfo создает объект данных по умолчанию, hglobal из буфера обмена снова становится объектом IStorage . Кроме того, перечислитель FORMATETC и метод IDataObject::QueryGetData правильно указывают на то, что исходный формат буфера обмена (cfFOO) снова доступен на TYMED_ISTORAGE.
В третьем случае OLE по-прежнему создает объект данных по умолчанию, но нет специальных сведений о данных в форматах буфера обмена (особенно для форматов буфера обмена, определяемых приложением). Таким образом, если носитель хранения на основе hGlobal был помещен в буфер обмена непосредственно путем вызова функции SetClipboardData , перечислитель FORMATETC и метод IDataObject::QueryGetData не будут указывать, что данные были доступны на носителе. Однако вызов метода IDataObject::GetData для TYMED_ISTORAGE будет успешным. Из-за этих ограничений настоятельно рекомендуется, чтобы приложения, поддерживающие OLE, взаимодействовали с буфером обмена с помощью функций буфера обмена OLE.
Объект данных буфера обмена, созданный функцией OleGetClipboardWithEnterpriseInfo , имеет довольно обширную реализацию IDataObject . Объект данных, предоставленный OLE, может преобразовывать данные в формате буфера обмена OLE 1 в представление, ожидаемое вызывающим объектом OLE 2. Кроме того, все структурированные данные доступны на любой структурированной или плоской среде, а любые неструктурированные данные доступны на любой плоской среде. Однако объекты GDI (например, метафайлы и растровые изображения) доступны только на соответствующих носителях.
Обратите внимание, что элемент tymed структуры FORMATETC , используемый в перечислитель FORMATETC , содержит объединение поддерживаемых носителей. Приложения, которые ищут конкретные сведения (например, доступны ли CF_TEXT на TYMED_HGLOBAL), должны выполнять соответствующие битовые запросы при проверке этого значения.
Если вы вызываете функцию OleGetClipboardWithEnterpriseInfo , вам следует удерживать возвращенный объект IDataObject в течение очень короткого времени. Он использует ресурсы в приложении, которое его предложило.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 [только классические приложения] |
Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
Целевая платформа | Windows |
Header | ole2.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |