Bagikan melalui


Fungsi AccessCheckByTypeResultList (securitybaseapi.h)

Fungsi AccessCheckByTypeResultList menentukan apakah deskriptor keamanan memberikan serangkaian hak akses tertentu kepada klien yang diidentifikasi oleh token akses. Fungsi ini dapat memeriksa akses klien ke hierarki objek, seperti objek, set propertinya, dan properti. Fungsi melaporkan hak akses yang diberikan atau ditolak untuk setiap jenis objek dalam hierarki. Biasanya, aplikasi server menggunakan fungsi ini untuk memeriksa akses ke objek privat.

Sintaks

BOOL AccessCheckByTypeResultList(
  [in]                PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in, optional]      PSID                 PrincipalSelfSid,
  [in]                HANDLE               ClientToken,
  [in]                DWORD                DesiredAccess,
  [in, out, optional] POBJECT_TYPE_LIST    ObjectTypeList,
  [in]                DWORD                ObjectTypeListLength,
  [out]               PGENERIC_MAPPING     GenericMapping,
  [out, optional]     PPRIVILEGE_SET       PrivilegeSet,
  [in, out]           LPDWORD              PrivilegeSetLength,
  [out]               LPDWORD              GrantedAccessList,
  [out]               LPDWORD              AccessStatusList
);

Parameter

[in] pSecurityDescriptor

Penunjuk ke struktur SECURITY_DESCRIPTOR yang aksesnya dicentang.

[in, optional] PrincipalSelfSid

Penunjuk ke pengidentifikasi keamanan (SID). Jika deskriptor keamanan dikaitkan dengan objek yang mewakili prinsipal (misalnya, objek pengguna), parameter PrincipalSelfSid harus menjadi SID objek. Saat mengevaluasi akses, SID ini secara logis menggantikan SID dalam entri kontrol akses (ACE) apa pun yang berisi SID PRINCIPAL_SELF terkenal (S-1-5-10). Untuk informasi tentang SID terkenal, lihat SID terkenal.

Jika objek yang dilindungi tidak mewakili prinsipal, atur parameter ini ke NULL.

[in] ClientToken

Handel ke token peniruan yang mewakili klien yang mencoba mendapatkan akses. Handel harus memiliki akses TOKEN_QUERY ke token; jika tidak, fungsi gagal dengan ERROR_ACCESS_DENIED.

[in] DesiredAccess

Masker akses yang menentukan hak akses untuk diperiksa. Masker ini harus telah dipetakan oleh fungsi MapGenericMask agar tidak berisi hak akses generik.

Jika parameter ini MAXIMUM_ALLOWED, fungsi mengatur masker akses dalam array GrantedAccess untuk menunjukkan hak akses maksimum klien ke setiap elemen dalam daftar jenis objek.

[in, out, optional] ObjectTypeList

Penunjuk ke array struktur OBJECT_TYPE_LIST yang mengidentifikasi hierarki jenis objek untuk memeriksa akses. Setiap elemen dalam array menentukan GUID yang mengidentifikasi jenis objek dan nilai yang menunjukkan tingkat jenis objek dalam hierarki jenis objek. Array tidak boleh memiliki dua elemen dengan GUID yang sama.

Array harus memiliki setidaknya satu elemen. Elemen pertama dalam array harus berada pada tingkat nol dan mengidentifikasi objek itu sendiri. Array hanya dapat memiliki satu elemen nol tingkat. Elemen kedua adalah subobject, seperti set properti, pada tingkat 1. Mengikuti setiap entri tingkat 1 adalah entri subordinat untuk subobjek tingkat 2 hingga 4. Dengan demikian, tingkat untuk elemen dalam array mungkin {0, 1, 2, 2, 1, 2, 3}. Jika daftar jenis objek rusak, AccessCheckByTypeResultList gagal dan GetLastError mengembalikan ERROR_INVALID_PARAMETER.

[in] ObjectTypeListLength

Jumlah elemen dalam array ObjectTypeList . Ini juga merupakan jumlah elemen dalam array yang ditujukan oleh parameter GrantedAccessList dan AccessStatusList .

[out] GenericMapping

Penunjuk ke struktur GENERIC_MAPPING yang terkait dengan objek tempat akses sedang diperiksa.

[out, optional] PrivilegeSet

Penunjuk ke struktur PRIVILEGE_SET yang menerima hak istimewa yang digunakan untuk melakukan validasi akses. Jika tidak ada hak istimewa yang digunakan, fungsi menetapkan anggota PrivilegeCount ke nol.

[in, out] PrivilegeSetLength

Ukuran, dalam byte, dari buffer yang diacu oleh parameter PrivilegeSet .

[out] GrantedAccessList

Penunjuk ke array masker akses. Fungsi ini mengatur setiap masker akses untuk menunjukkan hak akses yang diberikan ke elemen yang sesuai dalam daftar jenis objek. Jika fungsi gagal, fungsi tidak mengatur masker akses.

[out] AccessStatusList

Penunjuk ke array kode status untuk elemen terkait dalam daftar jenis objek. Fungsi mengatur elemen ke nol untuk menunjukkan keberhasilan atau nilai bukan nol untuk menunjukkan kesalahan tertentu selama pemeriksaan akses. Jika fungsi gagal, fungsi tidak mengatur salah satu elemen dalam array.

Nilai kembali

Jika fungsi berhasil, fungsi mengembalikan bukan nol.

Jika fungsi gagal, fungsi akan mengembalikan nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Untuk informasi selengkapnya, lihat gambaran umum Cara Kerja AccessCheck .

Fungsi AccessCheckByTypeResultList membandingkan deskriptor keamanan yang ditentukan dengan token akses yang ditentukan dan menunjukkan, dalam parameter AccessStatusList , apakah akses diberikan atau ditolak untuk setiap elemen dalam daftar jenis objek.

Array ObjectTypeList tidak selalu mewakili seluruh objek yang ditentukan. Sebaliknya, ini mewakili subset objek yang akan diperiksa aksesnya. Misalnya, untuk memeriksa akses ke dua properti dalam kumpulan properti, tentukan daftar jenis objek dengan empat elemen: objek itu sendiri pada tingkat nol, properti yang diatur pada tingkat 1, dan dua properti di tingkat 2.

Fungsi AccessCheckByTypeResultList mengevaluasi ACE yang berlaku untuk objek itu sendiri dan ACE khusus objek untuk jenis objek yang tercantum dalam array ObjectTypeList . Fungsi mengabaikan ACE khusus objek untuk jenis objek yang tidak tercantum dalam array ObjectTypeList . Dengan demikian, hasil yang dikembalikan untuk elemen nol dalam parameter AccessStatusList menunjukkan akses yang diizinkan ke subset objek yang ditentukan oleh parameter ObjectTypeList , bukan ke seluruh objek.

Untuk informasi selengkapnya tentang bagaimana hierarki ACE mengontrol akses ke objek dan subobjeknya, lihat ACE untuk Mengontrol Akses ke Properti Objek.

Jika daftar kontrol akses diskresi deskriptor keamanan (DACL) adalah NULL, fungsi memberikan akses yang diminta ke semua elemen dalam daftar jenis objek.

Jika deskriptor keamanan tidak berisi SID pemilik dan grup, AccessCheckByTypeResultList gagal dengan ERROR_INVALID_SECURITY_DESCR.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header securitybaseapi.h (termasuk Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

AccessCheck

AccessCheckAndAuditAlarm

AccessCheckByType

AccessCheckByTypeAndAuditAlarm

AccessCheckByTypeResultListAndAuditAlarm

Access Control Klien/Server

Fungsi Access Control Klien/Server

GENERIC_MAPPING

Cara Kerja AccessCheck

MakeAbsoluteSD

MapGenericMask

OBJECT_TYPE_LIST

PRIVILEGE_SET

SECURITY_DESCRIPTOR