共用方式為


IDisplayDeviceInterop::CreateSharedHandle 方法 (windows.devices.display.core.interop.h)

針對 DisplaySurfaceDisplayFence 物件,建立可搭配 Direct3D 或其他圖形 API 的 Interop 使用的共用句柄。

語法

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

參數

pObject

DisplaySurfaceDisplayFence 物件的 IUnknown 介面指標。

pSecurityAttributes

包含兩個個別但相關數據成員 之SECURITY_ATTRIBUTES 結構的指標:選擇性的安全性描述元,以及判斷子進程是否可以繼承傳回句柄的布爾值。

如果您要讓應用程式建立的子行程不繼承 CreateSharedHandle 所傳回的句柄,而且您想要讓與傳回句柄相關聯的資源取得預設安全性描述符,請將此參數nullptr設定為 。

結構的 lpSecurityDescriptor 成員會指定資源的 SECURITY_DESCRIPTOR 。 如果您希望執行時間將預設安全性描述符指派給與傳回句柄相關聯的資源,請將這個成員 nullptr 設定為 。 訪問控制清單 (ACL) 資源的預設安全性描述項中,來自建立者的主要或模擬令牌。 如需詳細資訊,請參閱 同步處理物件安全性和訪問許可權

Access

要求的資源訪問許可權。 除了 泛型訪問許可權之外,介面也可以使用這些值。

  • DXGI_SHARED_RESOURCE_READ (0x80000000L) 。 指定資源的讀取許可權。
  • DXGI_SHARED_RESOURCE_WRITE (1) 。 指定資源的寫入許可權。

您可以使用位 OR 運算來合併這些值。

如果 pObject 是柵欄,則必須使用 GENERIC_ALL

Name

類型: LPCWSTR

以 Null 結尾的 Unicode 字串,其中包含要與共用堆積相關聯的名稱。 名稱限制為 MAX_PATH 個字元。 名稱比較會區分大小寫。

如果 Name 符合現有資源的名稱, 則 CreateSharedHandle 會因為 DXGI_ERROR_NAME_ALREADY_EXISTS而失敗。 這是因為這些對象共用相同的命名空間。

名稱可以有 「Global」 或 「Local」 前置詞,以在全域或會話命名空間中明確建立物件。 名稱的其餘部分可以包含反斜杠字元以外的任何字元 (\) 。 如需詳細資訊,請參閱 核心物件命名空間。 使用終端機服務會話實作快速使用者切換。 核心物件名稱必須遵循終端機服務概述的指導方針,讓應用程式可以支援多個使用者。

物件可以在私用命名空間中建立。 如需詳細資訊,請參閱 物件命名空間

pHandle

接收新共用句柄之 HANDLE 的指標。

傳回值

類型: HRESULT

如果成功,這個方法會 傳回S_OK ,否則會傳回指出失敗原因的失敗碼。 如果成功, pHandle 一律會指向新建立的句柄。

備註

CreateSharedHandle 所傳回的句柄可用於任何需要 GPU 介面的「NT 句柄」或柵欄 (的函式,視傳遞的物件) 而定,前提是呼叫者已獲得存取權。 以下是一些範例。

多個進程可以有相同物件的句柄,讓對象能夠用於進程間同步處理或共用。 有下列對象共享機制可供使用。

使用 CloseHandle 函式關閉句柄。 當進程終止時,系統會自動關閉句柄。 物件會在最後一個句柄關閉且其最後一個介面參考已釋放時終結。

規格需求

需求
最低支援的用戶端 Windows 10 組建 20348
最低支援的伺服器 Windows 10 組建 20348
目標平台 Windows
標頭 windows.devices.display.core.interop.h
程式庫 d3d12.lib
Dll d3d12.dll