Compartir a través de


Método IDisplayDeviceInterop::CreateSharedHandle (windows.devices.display.core.interop.h)

Para un displaySurface o un objeto displayFence , crea un identificador compartido que se puede usar para la interoperabilidad con Direct3D u otras API de gráficos.

Sintaxis

HRESULT CreateSharedHandle(
  IInspectable              *pObject,
  const SECURITY_ATTRIBUTES *pSecurityAttributes,
  DWORD                     Access,
  HSTRING                   Name,
  HANDLE                    *pHandle
);

Parámetros

pObject

Puntero a la interfaz IUnknown de un DisplaySurface o DisplayFence objeto.

pSecurityAttributes

Puntero a una estructura de SECURITY_ATTRIBUTES que contiene dos miembros de datos independientes pero relacionados: un descriptor de seguridad opcional y un valor booleano que determina si los procesos secundarios pueden heredar el identificador devuelto.

Establezca este parámetro en nullptr si desea que los procesos secundarios que cree la aplicación no hereden el identificador devuelto por CreateSharedHandley si desea que el recurso asociado al identificador devuelto obtenga un descriptor de seguridad predeterminado.

El miembro lpSecurityDescriptor de la estructura especifica un SECURITY_DESCRIPTOR para el recurso. Establezca este miembro en nullptr si desea que el entorno de ejecución asigne un descriptor de seguridad predeterminado al recurso asociado al identificador devuelto. Las listas de control de acceso (ACL) del descriptor de seguridad predeterminado para el recurso proceden del token principal o de suplantación del creador. Para obtener más información, consulta Derechos de acceso y seguridad de objetos de sincronización.

Access

Derechos de acceso solicitados al recurso. Además de los derechos de acceso genéricos , una superficie puede usar estos valores.

  • DXGI_SHARED_RESOURCE_READ (0x800000000L). Especifica el acceso de lectura al recurso.
  • DXGI_SHARED_RESOURCE_WRITE (1). Especifica el acceso de escritura al recurso.

Puede combinar estos valores mediante una operación OR bit a bit.

Si pObject es una valla, debe usar GENERIC_ALL.

Name

Tipo: LPCWSTR

Cadena Unicode terminada en null que contiene el nombre que se va a asociar al montón compartido. El nombre está limitado a MAX_PATH caracteres. La comparación de nombres distingue mayúsculas de minúsculas.

Si Nombre coincide con el nombre de un recurso existente, createSharedHandle produce un error con DXGI_ERROR_NAME_ALREADY_EXISTS. Esto ocurre porque estos objetos comparten el mismo espacio de nombres.

El nombre puede tener un prefijo "Global" o "Local" para crear explícitamente el objeto en el espacio de nombres global o de sesión. El resto del nombre puede contener cualquier carácter excepto el carácter de barra diagonal inversa (\). Para obtener más información, vea espacios de nombres de objeto kernel. El cambio rápido de usuario se implementa mediante sesiones de Terminal Services. Los nombres de objeto de kernel deben seguir las directrices descritas para Terminal Services para que las aplicaciones puedan admitir varios usuarios.

El objeto se puede crear en un espacio de nombres privado. Para obtener más información, vea Espacios de nombres de objeto.

pHandle

Puntero a un HANDLE de que recibe ese nuevo identificador compartido.

Valor devuelto

Tipo: HRESULT

Este método devuelve S_OK si se realizó correctamente; de lo contrario, un código de error que indica por qué se produjo un error. Si se realizó correctamente, pHandle siempre apuntará al identificador recién creado.

Observaciones

El identificador devuelto por CreateSharedHandle se puede usar en cualquier función que requiera un "identificador NT" en una superficie o barrera de GPU (en función de qué objeto se haya pasado), siempre que se haya concedido acceso al autor de la llamada. Estos son algunos ejemplos.

Varios procesos pueden tener identificadores del mismo objeto, lo que permite el uso del objeto para la sincronización o uso compartido entre procesos. Están disponibles los siguientes mecanismos de uso compartido de objetos.

  • Un proceso secundario creado por la función createProcess puede heredar un identificador a una superficie o un objeto de barrera si el parámetro pSecurityAttributes de createSharedHandle habilita la herencia.
  • Un proceso puede especificar el identificador de objeto en una llamada a la función DuplicateHandle para crear un identificador duplicado que otro proceso pueda usar.
  • Un proceso puede especificar el nombre del objeto en una llamada a la openSharedHandle o función ID3D12Device::OpenSharedHandleByName.

Use la función CloseHandle para cerrar el identificador. El sistema cierra el identificador automáticamente cuando finaliza el proceso. El objeto se destruye cuando se ha cerrado su último identificador y se ha liberado su última referencia de interfaz.

Requisitos

Requisito Valor
cliente mínimo admitido Compilación 20348 de Windows 10
servidor mínimo admitido Compilación 20348 de Windows 10
de la plataforma de destino de Windows
encabezado de windows.devices.display.core.interop.h
biblioteca de d3d12.lib
DLL de d3d12.dll