atribut system_handle
Atribut [system_handle] menentukan jenis handel yang ditentukan sistem yang mewakili akses ke objek sistem.
[system_handle(system-handle-type[,optional-access-mask])]
-
jenis handel sistem
-
Menentukan salah satu opsi tipe handel sistem.
Opsi yang valid adalah:
- sh_composition - Handel permukaan DirectComposition
- sh_event - Objek peristiwa bernama atau tidak bernama
- sh_file - File atau perangkat I/O
- sh_job - Objek pekerjaan
- sh_mutex - Objek mutex bernama atau tidak bernama
- sh_pipe - Objek pipa anonim atau bernama
- sh_process - Objek proses
- sh_reg_key - Kunci registri
- sh_section - Bagian memori bersama
- sh_semaphore - Objek semaphore bernama atau tidak bernama
- sh_socket - Objek soket WinSock
- sh_thread - Objek utas
- sh_token - Objek token akses
-
masker akses opsional
-
Secara opsional meminta hak akses tertentu yang diterapkan ke handel duplikat. Secara default ketika ini tidak ditentukan, handel akan diduplikasi dengan akses yang sama.
Untuk menentukan tingkat akses yang berbeda, gunakan hak akses khusus objek yang sesuai dengan objek sistem dasar yang dipilih.
Informasi selengkapnya tentang bagaimana hak akses disebarluaskan selama duplikasi dapat ditemukan pada dokumentasi DuplicateHandle .
Tautan ke daftar hak akses untuk setiap jenis objek dapat ditemukan di referensi DuplicateHandle serta di judul Lihat juga dari setiap
sh_*
halaman parameter.
Untuk menggunakan atribut ini, -target
bendera harus diatur ke NT100
(atau lebih tinggi) saat menjalankan midl.exe.
Handel sistem adalah handel yang ditentukan oleh sistem operasi untuk menyediakan akses ke sumber daya sistem. Jenis objek tertentu di belakang handel harus ditentukan saat mendeklarasikan atribut .
Untuk handel bertanda [in]
, handel akan diduplikasi ke dalam prosedur jarak jauh dan tetap valid selama durasi prosedur tersebut. Saat kembali dari prosedur jarak jauh, handel duplikat dibebaskan. Untuk mempertahankan akses ke objek yang mendasar, aplikasi jarak jauh harus menduplikasi handel ke ruang alamatnya sendiri.
Sebaliknya, untuk handel yang ditandai [out]
, ketika prosedur jarak jauh mengembalikan handel dari panggilan, prosedur jarak jauh akan kehilangan kepemilikannya. Untuk mempertahankan akses ke objek yang mendasar, prosedur jarak jauh harus menduplikasi handel dan mengembalikan duplikat. Handel yang dikembalikan kemudian menjadi milik pemanggil yang bertanggung jawab untuk menutupnya ketika akses ke objek sistem yang mendasar tidak lagi diperlukan.
Karena ini adalah mekanisme untuk menyampaikan akses ke objek sistem, atribut ini hanya berlaku untuk panggilan antar prosedur pada komputer yang sama.
Parameter pembuatan dan akses yang diberikan ke objek yang mendasar di belakang handel sistem pada pembuatannya akan menentukan apakah dapat berhasil dinaikkan ke konteks prosedur jarak jauh.
Array system_handle
dapat diteruskan baik masuk atau keluar dengan sintaks yang ditemukan dalam dokumentasi atribut size_is .
Contoh berikut beberapa penggunaan system_handle
. Untuk sampel lengkap, lihat sampel SystemHandlePassing .
interface MyInterface : IUnknown
{
HRESULT Proc1([in, system_handle(sh_file)] HANDLE writeThisFile);
HRESULT Proc2([in, system_handle(sh_pipe, FILE_GENERIC_READ)] HANDLE readThisPipe);
HRESULT Proc3([out, system_handle(sh_composition)] HANDLE* visual);
HRESULT Proc4([in] DWORD cEvents, [out, system_handle(sh_event), size_is(cEvents)] HANDLE* pWatchAllTheseEvents);
}
Klien minimum yang didukung | Windows 10 Anniversary Update (versi 1607, build 14393) |
Server minimum yang didukung | Windows Server 2016 (build 14393) |