Función OleGetClipboardWithEnterpriseInfo (ole2.h)

Habilita windows Information Protection habilitada
aplicaciones para recuperar un IDataObject del Portapapeles OLE
acompañado de windows Information Protection información sobre los datos y el
aplicación de origen. Esta información permite el
aplicación habilitada para asumir la responsabilidad de aplicar Windows Information Protection
directiva, incluidos los mensajes de la interfaz de usuario adecuados y
casos de auditoría en los que el usuario aprueba explícitamente la copia
datos empresariales en un contexto personal.

Si la aplicación que realiza la llamada no está habilitada o es
configurado como "no permitido" para acceder a los datos de la empresa,
a continuación, esta llamada se comporta exactamente como OleGetClipboard : aplicar la directiva antes de decidir qué IDataObject debe devolver,
y proporcionan cadenas vacías como salida.

Sintaxis

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

Parámetros

[out] dataObject

Dirección de la variable de puntero IDataObject que recibe el puntero de interfaz al objeto de datos del Portapapeles.

[out] dataEnterpriseId

Identificador de empresa de la aplicación que establece los datos del Portapapeles. Si los datos son personales, será una cadena vacía.

[out] sourceDescription

Descripción de la aplicación que establece el Portapapeles.

[out] targetDescription

Descripción de la aplicación del autor de la llamada que se va a usar en la auditoría.

[out] dataDescription

Descripción del objeto de datos que se va a usar en la auditoría.

Valor devuelto

Esta función devuelve S_OK si se ejecuta correctamente. Otros valores posibles son los siguientes.

Código devuelto Descripción
CLIPBRD_E_CANT_OPEN
Error en la función OpenClipboard usada en OleFlushClipboard .
CLIPBRD_E_CANT_CLOSE
Error en la función CloseClipboard usada en OleFlushClipboard .

Comentarios

Precaución Los datos del Portapapeles no son de confianza. Analice cuidadosamente los datos antes de usarlos en la aplicación.
 
Si está escribiendo una aplicación que puede aceptar datos del Portapapeles, llame a la función OleGetClipboardWithEnterpriseInfo para obtener un puntero a la interfaz IDataObject que puede usar para recuperar el contenido del Portapapeles.

OleGetClipboardWithEnterpriseInfo controla tres casos:

  • La aplicación que colocó datos en el Portapapeles con la función OleSetClipboard todavía se está ejecutando.
  • La aplicación que colocó datos en el Portapapeles con la función OleSetClipboard ha llamado posteriormente a la función OleFlushClipboard .
  • Hay datos de una aplicación que no es OLE en el Portapapeles.
En el primer caso, el objeto de datos del Portapapeles devuelto por OleGetClipboardWithEnterpriseInfo puede reenviar llamadas según sea necesario al objeto de datos original colocado en el Portapapeles y, por lo tanto, puede realizar llamadas RPC.

En el segundo caso, OLE crea un objeto de datos predeterminado y lo devuelve al usuario. Dado que los datos del Portapapeles se originaron en una llamada a OleSetClipboard , el objeto de datos proporcionado por OLE contiene información más precisa sobre el tipo de datos en el Portapapeles. En concreto, se conoce el medio original (TYMED) en el que se ofrecieron los datos. Por lo tanto, si una aplicación de origen de datos ofrece un formato de Portapapeles determinado, por ejemplo cfFOO, en un objeto de almacenamiento y llama a la función OleFlushClipboard , el objeto de almacenamiento se copia en la memoria y el identificador de memoria hglobal se coloca en el Portapapeles. A continuación, cuando la función OleGetClipboardWithEnterpriseInfo crea su objeto de datos predeterminado, el hglobal del Portapapeles se convierte de nuevo en un objeto IStorage . Además, el enumerador FORMATETC y el método IDataObject::QueryGetData indicarían correctamente que el formato original del Portapapeles (cfFOO) vuelve a estar disponible en un TYMED_ISTORAGE.

En el tercer caso, OLE sigue creando un objeto de datos predeterminado, pero no hay información especial sobre los datos en los formatos del Portapapeles (especialmente para los formatos de Portapapeles definidos por la aplicación). Por lo tanto, si un medio de almacenamiento basado en hGlobal se colocaba directamente en el Portapapeles mediante una llamada a la función SetClipboardData , el enumerador FORMATETC y el método IDataObject::QueryGetData no indicarían que los datos estaban disponibles en un medio de almacenamiento. Sin embargo, una llamada al método IDataObject::GetData para TYMED_ISTORAGE se realizará correctamente. Debido a estas limitaciones, se recomienda encarecidamente que las aplicaciones compatibles con OLE interactúen con el Portapapeles mediante las funciones del Portapapeles OLE.

El objeto de datos del Portapapeles creado por la función OleGetClipboardWithEnterpriseInfo tiene una implementación de IDataObject bastante extensa. El objeto de datos proporcionado por OLE puede convertir los datos del formato del Portapapeles OLE 1 en la representación esperada por un llamador OLE 2. Además, los datos estructurados están disponibles en cualquier medio estructurado o plano, y cualquier dato plano está disponible en cualquier medio plano. Sin embargo, los objetos GDI (como metarchivos y mapas de bits) solo están disponibles en sus medios respectivos.

Tenga en cuenta que el miembro tymed de la estructura FORMATETC utilizada en el enumerador FORMATETC contiene la unión de medios admitidos. Las aplicaciones que buscan información específica (por ejemplo, si CF_TEXT está disponible en TYMED_HGLOBAL) deben realizar la máscara de bits adecuada al comprobar este valor.

Si llama a la función OleGetClipboardWithEnterpriseInfo , solo debe mantener pulsado en el IDataObject devuelto durante un tiempo muy corto. Consume recursos en la aplicación que lo ofrecieron.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2016 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ole2.h
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

OleGetClipboard

OleSetClipboard