ID3D11Fence::CreateSharedHandle 方法 (d3d11_3.h)
建立柵欄對象的共用句柄。
這個方法相當於 Direct3D 12 ID3D12Device::CreateSharedHandle 方法,而且適用於涉及 Direct3D 11 與 Direct3D 12 之間互操作的案例。 在 DirecX 11 中,您可以使用 ID3D11Device5::OpenSharedFence 方法開啟共享柵欄句柄。 在 DirecX 12 中,您可以使用 ID3D12Device::OpenSharedHandle 方法開啟共享柵欄句柄。
語法
HRESULT CreateSharedHandle(
[in, optional] const SECURITY_ATTRIBUTES *pAttributes,
DWORD dwAccess,
[in, optional] LPCWSTR lpName,
[out] HANDLE *pHandle
);
參數
[in, optional] pAttributes
類型: const SECURITY_ATTRIBUTES*
包含兩個個別但相關數據成員 之SECURITY_ATTRIBUTES 結構的指標:選擇性的安全性描述元,以及判斷子進程是否可以繼承傳回句柄的 布爾 值。
如果您想要讓應用程式建立的子進程不繼承 CreateSharedHandle 所傳回的句柄,而且您希望與傳回句柄相關聯的資源取得預設安全性描述符,請將此參數設定為 NULL。
結構的 lpSecurityDescriptor 成員會指定資源的 SECURITY_DESCRIPTOR 。 如果您想要讓運行時間將預設安全性描述元指派給與傳回句柄相關聯的資源,請將此成員設定為 NULL 。 資源的預設安全性描述元中的 ACL 來自建立者的主要或模擬令牌。 如需詳細資訊,請參閱 同步處理物件安全性和訪問許可權。
dwAccess
類型: DWORD
此參數目前唯一接受的值是GENERIC_ALL。
[in, optional] lpName
類型: LPCWSTR
NULL 終止的 UNICODE 字串,其中包含要與共用堆積相關聯的名稱。 名稱限制為MAX_PATH個字元。 名稱比較會區分大小寫。
如果 Name 符合現有資源的名稱, CreateSharedHandle 會因為 DXGI_ERROR_NAME_ALREADY_EXISTS而失敗。 這是因為這些對象共用相同的命名空間。
名稱可以有 「Global」 或 「Local」 前置詞,以在全域或會話命名空間中明確建立物件。 名稱的其餘部分可以包含反斜杠字元 (\) 以外的任何字元。 如需詳細資訊,請參閱 核心物件命名空間。 使用終端機服務會話實作快速使用者切換。 核心物件名稱必須遵循終端機服務概述的指導方針,讓應用程式可以支援多個使用者。
物件可以在私用命名空間中建立。 如需詳細資訊,請參閱 物件命名空間。
[out] pHandle
類型: HANDLE*
接收要共用之資源 NT HANDLE 值的變數指標。 您可以在呼叫中使用這個句柄來存取資源。
傳回值
類型: HRESULT
如果成功,則傳回S_OK;否則,會傳回下列其中一個值:
- 如果 其中一個參數無效,DXGI_ERROR_INVALID_CALL。
- 如果 要共用的資源提供名稱已經與另一個資源相關聯,DXGI_ERROR_NAME_ALREADY_EXISTS。
- 如果物件是在受保護的命名空間中建立,E_ACCESSDENIED。
- 如果沒有足夠的記憶體無法建立句柄,E_OUTOFMEMORY。
- Direct3D 11 傳回碼主題中可能描述的其他錯誤碼。
備註
若要為指定的柵欄建立共用句柄,必須已使用 D3D11_FENCE_FLAG_SHARED 或 D3D11_FENCE_FLAG_SHARED_CROSS_ADAPTER 旗標來建立柵欄。 如需詳細資訊,請參閱 D3D11_FENCE_FLAG 列舉。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d11_3.h |
程式庫 | D3D11.lib |
Dll | D3D11.dll |