Bagikan melalui


Metode ID3D12Device::CreateSharedHandle (d3d12.h)

Membuat handel bersama ke objek heap, sumber daya, atau pagar.

Sintaks

HRESULT CreateSharedHandle(
  [in]           ID3D12DeviceChild         *pObject,
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     Access,
  [in, optional] LPCWSTR                   Name,
  [out]          HANDLE                    *pHandle
);

Parameter

[in] pObject

Jenis: ID3D12DeviceChild*

Penunjuk ke antarmuka ID3D12DeviceChild yang mewakili objek heap, sumber daya, atau pagar yang akan dibuat untuk dibagikan. Antarmuka berikut (berasal dari ID3D12DeviceChild) didukung:

[in, optional] pAttributes

Jenis: const SECURITY_ATTRIBUTES*

Penunjuk ke struktur SECURITY_ATTRIBUTES yang berisi dua anggota data terpisah tetapi terkait: deskriptor keamanan opsional, dan nilai Boolean yang menentukan apakah proses turunan dapat mewarisi handel yang dikembalikan.

Atur parameter ini ke NULL jika Anda ingin proses anak yang mungkin dibuat aplikasi untuk tidak mewarisi handel yang dikembalikan oleh CreateSharedHandle, dan jika Anda ingin sumber daya yang terkait dengan handel yang dikembalikan untuk mendapatkan deskriptor keamanan default.

Anggota lpSecurityDescriptor dari struktur menentukan SECURITY_DESCRIPTOR untuk sumber daya. Atur anggota ini ke NULL jika Anda ingin runtime menetapkan deskriptor keamanan default ke sumber daya yang terkait dengan handel yang dikembalikan. ACL dalam deskriptor keamanan default untuk sumber daya berasal dari token utama atau peniruan dari pembuat. Untuk informasi selengkapnya, lihat Keamanan Objek Sinkronisasi dan Hak Akses.

Access

Jenis: DWORD

Saat ini satu-satunya nilai yang diterima parameter ini adalah GENERIC_ALL.

[in, optional] Name

Jenis: LPCWSTR

String UNICODE yang dihentikan NULL yang berisi nama untuk dikaitkan dengan tumpukan bersama. Nama ini terbatas pada karakter MAX_PATH. Perbandingan nama peka huruf besar/kecil.

Jika Nama cocok dengan nama sumber daya yang ada, CreateSharedHandle gagal dengan DXGI_ERROR_NAME_ALREADY_EXISTS. Ini terjadi karena objek ini memiliki namespace yang sama.

Nama dapat memiliki awalan "Global" atau "Lokal" untuk secara eksplisit membuat objek di namespace layanan global atau sesi. Sisa nama dapat berisi karakter apa pun kecuali karakter garis miring terbelakang (\). Untuk informasi selengkapnya, lihat Namespace Objek Kernel. Pengalihan pengguna cepat diimplementasikan menggunakan sesi Layanan Terminal. Nama objek kernel harus mengikuti pedoman yang diuraikan untuk Layanan Terminal sehingga aplikasi dapat mendukung beberapa pengguna.

Objek dapat dibuat di namespace privat. Untuk informasi selengkapnya, lihat Namespace Objek.

[out] pHandle

Jenis: HANDEL*

Penunjuk ke variabel yang menerima nilai NT HANDLE ke sumber daya untuk dibagikan. Anda dapat menggunakan handel ini dalam panggilan untuk mengakses sumber daya.

Menampilkan nilai

Jenis: HRESULT

Mengembalikan S_OK jika berhasil; jika tidak, mengembalikan salah satu nilai berikut:

  • DXGI_ERROR_INVALID_CALL jika salah satu parameter tidak valid.
  • DXGI_ERROR_NAME_ALREADY_EXISTS jika nama sumber daya yang disediakan untuk dibagikan sudah dikaitkan dengan sumber daya lain.
  • E_ACCESSDENIED jika objek sedang dibuat di namespace yang dilindungi.
  • E_OUTOFMEMORY jika memori yang cukup tidak tersedia untuk membuat handel.
  • Mungkin kode kesalahan lain yang dijelaskan dalam topik Kode Pengembalian Direct3D 12 .

Keterangan

Baik timbunan maupun sumber daya yang berkomitmen dapat dibagikan. Berbagi sumber daya yang berkomitmen berbagi tumpukan implisit bersama dengan deskripsi sumber daya yang berkomitmen, sehingga deskripsi sumber daya yang kompatibel dapat dipetakan ke timbunan dari perangkat lain.

Untuk skenario interop Direct3D 11 dan Direct3D 12, pagar bersama dibuka di DirectX 11 dengan metode ID3D11Device5::OpenSharedFence , dan sumber daya bersama dibuka dengan metode ID3D11Device::OpenSharedResource1 .

Untuk Direct3D 12, handel bersama dibuka dengan metode ID3D12Device::OpenSharedHandle atau metode ID3D12Device::OpenSharedHandleByName.

Persyaratan

   
Target Platform Windows
Header d3d12.h
Pustaka D3D12.lib
DLL D3D12.dll

Lihat juga

ID3D12Device