ID3D11Device1::OpenSharedResourceByName 方法 (d3d11_1.h)
授與裝置對名稱所參考且在不同裝置上建立之共用資源的存取權。 您先前必須將資源建立為共用,並指定它使用 NT 控制碼 (,也就是您設定 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 旗標) 。
語法
HRESULT OpenSharedResourceByName(
[in] LPCWSTR lpName,
[in] DWORD dwDesiredAccess,
[in] REFIID returnedInterface,
[out] void **ppResource
);
參數
[in] lpName
要開啟的資源名稱。 此參數不可為 Null。
[in] dwDesiredAccess
要求的資源存取權限。 除了 一般存取權限之外,DXGI 還會定義下列值:
- DXGI_SHARED_RESOURCE_READ ( 0x800000000L ) - 指定資源的讀取權限。
- DXGI_SHARED_RESOURCE_WRITE ( 1 ) - 指定資源的寫入權限。
[in] returnedInterface
資源介面的全域唯一識別碼 (GUID) 。 如需詳細資訊,請參閱。
[out] ppResource
變數的指標,可接收要存取之共用資源物件的介面指標。
傳回值
此方法會傳回其中一個 Direct3D 11 傳回碼。 如果存取資源的許可權無效,這個方法也會傳回E_ACCESSDENIED。
Windows 7 的平臺更新: 在已安裝 Windows 7 平臺更新 的 Windows 7 或 Windows Server 2008 R2 上, OpenSharedResourceByName 因使用 NTHANDLES 而失敗,並出現E_NOTIMPL。 如需 Windows 7 平臺更新的詳細資訊,請參閱 適用于 Windows 7 的平臺更新。
備註
OpenSharedResourceByName的行為類似于ID3D11Device1::OpenSharedResource1方法的行為;每次呼叫OpenSharedResourceByName以存取資源時,都會建立新的資源物件。 換句話說,如果您呼叫 OpenSharedResourceByName 兩次,並將相同的資源名稱傳遞至 lpName,您會收到兩個具有不同 IUnknown 指標的資源物件。
在兩個裝置之間共用資源
- 藉由設定 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 旗標,將資源建立為共用,並指定它使用 NT 控制碼。
- 使用 __uuidof () 宏,取得資源的介面 REFIID 或 GUID。 例如,__uuidof (ID3D11Texture2D) 會將介面的 GUID 擷取到 2D 紋理。
- 查詢 IDXGIResource1 介面的資源。
- 呼叫 IDXGIResource1::CreateSharedHandle 方法,以取得資源的唯一控制碼。 在此 IDXGIResource1::CreateSharedHandle 呼叫中,如果您想要後續呼叫 OpenSharedResourceByName 以依名稱存取資源,您必須傳遞資源的名稱。
範例
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResourceByName(
“MySurface”,
DXGI_SHARED_REOUSRCE_READ,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
規格需求
最低支援的用戶端 | 適用于 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式|UWP 應用程式] |
最低支援的伺服器 | 適用于 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式|UWP 應用程式] |
目標平臺 | Windows |
標頭 | d3d11_1.h |
程式庫 | D3D11.lib |